Постепенное переключение лучше мгновенного
Blue
100% трафика
Взвешенное разделение
95/5, затем 50/50
Green
100% трафика
Blue-green-развёртывания и переключение DNS
При blue-green-развёртывании одновременно работают две полноценные производственные среды: одна боевая («синяя»), другая простаивающая, но полностью развёрнутая и готовая («зелёная»). Трафик переключается между ними одним быстрым действием, а не постепенным обновлением. Один из распространённых способов выполнить такое переключение, особенно между разной инфраструктурой или провайдерами, — изменение DNS: после проверки работоспособности зелёной среды запись домена обновляют так, чтобы она указывала на её адрес.
Где простая схема перестаёт работать
Переключение через DNS не мгновенно, в отличие от смены целевой группы балансировщика нагрузки. Каждый резолвер, закешировавший старый (синий) ответ, продолжает его отдавать, пока не истечёт TTL этой записи. Это значит, что в течение времени, пропорционального TTL, часть трафика всё ещё попадает в ту среду, от которой вы только что пытались отключиться. При TTL в один час это потенциально час, в течение которого трафик делится между обеими средами, прежде чем переключение завершится везде.
- Уменьшите TTL заблаговременно до запланированного переключения, в идеале минимум за один полный период прежнего TTL, чтобы к моменту переключения все резолверы уже закешировали запись с новым, более коротким TTL.
- Держите старую (синюю) среду полностью работающей и исправной минимум в течение периода TTL после переключения, а не выводите её из эксплуатации сразу: в этот период она всё ещё получает реальный трафик.
- Проверяйте переключение прямым запросом к DNS, а не только по журналам приложения: так вы убедитесь, что сама запись изменилась, независимо от того, сколько трафика успело за ней последовать.
- Возвращайте TTL к обычному значению, только когда уверены, что переключение завершено и стабильно.
Постепенная альтернатива: взвешенный DNS
Вместо того чтобы переключать все резолверы сразу и надеяться, что зелёная среда сразу выдержит полную производственную нагрузку, несколько DNS-провайдеров поддерживают взвешенные (или процентные) политики маршрутизации: 95% ответов указывают на синюю среду, 5% на зелёную, и это распределение постепенно смещается (80/20, 50/50 и далее) по мере роста уверенности в новой среде.
| Жёсткое переключение | Постепенный запуск с весами | |
|---|---|---|
| Масштаб последствий проблемы | 100% трафика сразу | Небольшая управляемая доля |
| Скорость отката | Быстрый, но разворачивает всё сразу | Быстрый и обратимый мелкими шагами |
| Сложность настройки | Просто: меняется одна запись | Нужен провайдер с поддержкой взвешенных записей |
| Лучше всего подходит | Небольшие, хорошо протестированные изменения | Ответственные изменения критичной инфраструктуры |
Вы меняете чистое и простое переключение на возможность заметить проблему, пока она затрагивает лишь небольшую долю трафика, и за секунды вернуть 100% на синюю среду, если зелёная окажется не готова, вместо того чтобы откатывать полное переключение под давлением.
Одинаковая проверка для любого подхода
Какая бы стратегия ни использовалась, шаг проверки один и тот же: многократно разрешайте домен, причём не из одной точки наблюдения, и убедитесь, что реально наблюдаемое распределение совпадает с настроенным. Взвешенная политика, которая должна была отправлять на зелёную среду 10% трафика, а на деле отправляет 40% (из-за неверно настроенного веса или потому что некоторые резолверы кешируют ответ и перебрасывают жребий реже, чем ожидалось), — это именно тот дрейф, который можно заметить, только проверяя реальные разрешаемые ответы, а не доверяя панели DNS-провайдера в том, что она идеально отражает действительность.
Нужно проверить публичные DNS-адреса домена? Воспользуйтесь инструментом Domain IP Lookup.
Читайте также
Один IP — один сервер, или один IP — много
Unicast
Один IP — ровно один сервер
Anycast
Один IP, анонсируется из многих точек
Anycast DNS: как один IP работает сразу в десятках мест
Один и тот же IP-адрес, анонсируемый сразу из десятков точек: так anycast помогает DNS-провайдерам оставаться быстрыми и отказоустойчивыми по всему миру.
Почему проверка показывает CDN, а не исходный сервер
Посетитель
запрашивает домен
Edge-сервер CDN
104.21.x.x
именно его возвращает DNS
Исходный сервер
реальный IP не раскрывается
Как CDN используют DNS для маршрутизации трафика по миру
Главная работа сети доставки контента происходит на уровне DNS, ещё до того, как запрошен хотя бы один байт самого контента.
Одно имя хоста — несколько записей A
1-й ответ
93.184.216.34
2-й ответ
93.184.216.35
3-й ответ
93.184.216.36
Резолвер возвращает все записи, обычно с ротацией порядка
DNS round-robin: как распределить трафик между IP-адресами
Как DNS round-robin возвращает несколько адресов, что он может и чего не может для распределения нагрузки и как кеширование влияет на наблюдаемые результаты.