The Loadville Courier

Осн. 2026archreview.dev№ 1 · среда, 11 ноября 2026

Осн. 2026 ★ № 1 · среда, 11 ноября 2026

English edition·Русское издание

в Лоудвиле ★ Все новости. Рано или поздно. ★ Выходит, когда что-то ломается

База на месте. Её просто никто не нашёл

История про гонку двух программ и пустую строку в справочнике

Марта в ночном дата-центре: тревога на всех экранах, а за окном спящий город — пивная, кинотеатр, такси.

Как ночная ошибка в городском справочнике оставила пол-Лоудвиля без данных, хотя сами данные никуда не делись.

В воскресенье в 23:48 Марта Келлер, ночная дежурная городского дата-центра, допивала третий кофе, когда все экраны перед ней разом покраснели. Пивная на Мельничной перестала видеть, какие столики заняты. Кинотеатр не мог продать ни одного билета на ночной сеанс. Такси не принимало вызовы.

Первым делом Марта проверила главное — базу города за рекойНа самом делеDynamoDB, us-east-1Облачная база данных Amazon в регионе Северная Вирджиния., где почти все лавки и конторы Лоудвиля хранят свои данные. База работала: все записи на месте, ни одной ошибки.

Просто её как будто никто не видел.

Компьютерам города знать не положено, где живёт база. ВходовНа самом делебалансировщики DynamoDBСерверы, которые принимают запросы к базе и раздают их дальше. у неё много, одни открываются, другие закрываются, — поэтому компьютер каждой лавки раз в несколько минут спрашивает городской справочникНа самом делеDNS (Route 53)Система, которая по имени сервиса говорит, по какому адресу его искать.: «Где сейчас база?» — и идёт по ответу.

Справочник ведут не люди, а программы. Одна составляет свежие списки входовНа самом делеDNS-планНабор адресов входов с весами: куда и сколько отправлять.. Ещё три — исполнителиНа самом делеDNS Enactor × 3Программы, которые вносят готовые планы в DNS. — вносят эти списки в справочник, по одному исполнителю в каждом из трёх машинных заловНа самом делезоны доступностиОтдельные дата-центры внутри одного региона.. Одного держать нельзя: если его зал отключится, справочник перестанут обновлять, а входы у базы меняются постоянно — и компьютеры города пойдут к закрытым дверям. Поэтому исполнителей трое, каждый в своём зале: отключится один — двое других продолжат.

В ту ночь один исполнитель застрял. Пока он стоял застрявшим, вышли десятки новых списков. Перед этим он успел проверить: «Мой список новее того, что в справочнике». Проверка была честной, но к тому времени, как он очнулся, давно устарела.

Составитель списковИсполнитель 1Исполнитель 2Исполнитель 3, застрялсписок 12 поверх 57СправочникСоставительсписковИсполнитель 1Исполнитель 2Исполнитель 3,застрялсписок 12 поверх 57Справочник
Рис. 1 — Три исполнителя, один справочник.

Дальше совпали две вещи, и обе — в одну и ту же секунду. Застрявший исполнитель очнулся и записал свой безнадёжно старый список поверх самого свежего. А другой исполнитель как раз только что записал тот самый свежий список — и, как после каждой записи, начал уборкуНа самом делеудаление старых плановУдаление старых планов, чтобы не копились.: выбросить старые списки, которые давно отстали, чтобы не копились.

Уборка не смотрела, что сейчас лежит в справочнике, — она выбрасывала всё, что сильно отстало от только что записанного. Под это попал и список, который лежал в справочнике: он отставал на десятки выпусков. Другого списка там не было — и строка «База»На самом делеdynamodb.us-east-1.amazonaws.comИмя, по которому все программы ищут базу., где хранится ответ на вопрос «где база?», осталась пустой.

Получилось странное: база работала, но на вопрос «где она?» справочник отвечал пустотой.

ПивнаяКинотеатрТаксиСправочникстрока «База» пустаБазаработаетПивнаяКинотеатрТаксиСправочникстрока «База» пустаБазаработает
Рис. 2 — База работает. Дороги к ней нет.

Марта сначала не поверила. Перезапустила проверку, позвонила начальнику смены, потом его начальнику. Автоматика, которая обычно чинит такие вещи сама, на этот раз запуталась окончательно и встала. Строку пришлось вписывать вручную, посреди ночи: двое инженеров на телефоне, третий в пижаме. В 2:25 строка вернулась. Ещё четверть часа компьютеры города жили со старым пустым ответом в памятиНа самом делеDNS-кешКомпьютер запоминает ответ справочника на несколько минут и сам не переспрашивает., пока не спросили справочник заново. В 2:40 пивная снова увидела свои столики.

Я думал, сломался мой компьютер. Три раза его перезагрузил.
Хозяин пивной, Мельничная улица

Утро

К утру выяснилось, что ночь не кончилась. Почти все серверыНа самом делеdropletsФизические серверы, на которых запускаются машины EC2. Лоудвиля сдаёт внаём одна прокатная контораНа самом делеDWFMСистема Amazon, которая управляет физическими серверами EC2. — каждый по договору арендыНа самом делеleaseРегулярное подтверждение, что сервер под присмотром и в него можно ставить новые машины., который продлевается через ту самую базу. За ночь договоры истекли — и новые серверы стало негде запускать. Как только база нашлась, контора бросилась продлевать все договоры разом, не успевала, начинала заново — и встала. К 5:30 её подняли.

Серверы начали включаться, но не до конца. Чтобы до сервера можно было добраться, ему нужны настройки сети — что-то вроде адреса и дороги. А служба, которая их раздаётНа самом делеNetwork ManagerРаздаёт новым серверам сетевые настройки., за ночь накопила огромную очередь и отвечала с опозданием в часы. Сервер работает, а дороги к нему ещё нет.

Тут вступили сторожевые программыНа самом делеhealth checks в NLBПроверки балансировщика: живы ли серверы за ним.. Их работа — регулярно проверять, жив ли сервер, и убирать мёртвых из работы. Они стучались к серверам, у которых ещё не было дороги, слышали то ответ, то тишину — и начали выкидывать здоровые серверы, а через минуту возвращать. Город мигал.

В 9:36 сторожам запретили выкидывать кого-либо самим. В 10:36 новые серверы снова запускались как надо. К двум часам дня город выдохнул.

Что не спасло бы

  • Больше исполнителей. Их и так было трое, в трёх залах. Запас спасает, когда отключился зал, но не когда двое одновременно делают одно дело.
  • Проверять внимательнее. Проверка была. Беда во времени между «проверил» и «записал»: мир за это время поменялся.
  • Вторая база в том же городе. Её адрес лежал бы в том же справочнике.

Зато помогла копия в соседнем городеНа самом делереплики global tablesКопия таблицы в другом регионе Amazon.: кто держал там копию своих данных, работал всю ночь, хоть копия и отставала.

Что сделали

  • Программы, обновляющие справочник, отключили во всех городах — пока не исправят гонку и не научат справочник не принимать неверные списки.
  • Сторожам ограничили, сколько серверов можно выкинуть из работы за раз.
  • Прокатная контора будет тренироваться подниматься после таких ночей, а служба, раздающая настройки сети, — брать новую работу, только пока очередь не слишком длинная.

От редакции

  • Номер на списке. Записывать, только если в справочнике всё ещё тот список, который ты видел перед началом. Если нет — взять свежий. Медленный исполнитель сделает лишний круг, зато ничего не испортит.
  • Не удалять то, чем сейчас пользуются. Уборка трогает только списки, которых уже нет в справочнике, — и строка никогда не остаётся пустой.
данетИсполнительВ справочнике список 57?ЗаписатьВзять свежийданетИсполнительВ справочникесписок 57?ЗаписатьВзятьсвежий
Рис. 3 — Записывать, только если в справочнике то, что ты видел.
Действующие лица — кто есть кто на самом деле

Действующие лица

Городская база за рекой
DynamoDB, us-east-1
Входы в базу
балансировщики DynamoDB
Городской справочник
DNS (Route 53)
Строка «База»
dynamodb.us-east-1.amazonaws.com
Программа, составляющая списки
DNS Planner
Исполнители
DNS Enactor × 3
Машинные залы
зоны доступности
Список входов
DNS-план
Уборка
удаление старых планов
Старый ответ в памяти
DNS-кеш
Прокатная контора
DWFM
Серверы в аренде
droplets
Договор аренды
lease
Служба настроек сети
Network Manager
Сторожевые программы
health checks в NLB
Копия в соседнем городе
реплики global tables
Марта Келлер и хозяин пивной
жители Лоудвиля, выдуманы

— Антон Долганин

Основано на реальных событиях: сбой Amazon DynamoDB, 19–20 октября 2025 года.

Ещё из Лоудвиля