Использование DNS-сервиса для плавного переключения сетевых служб
Categories:
Предположим, что доменное имя сервиса - example.domain, исходный IP-адрес сервера - A, из-за миграции сервера или смены IP новый IP-адрес сервера - B. Чтобы обеспечить незаметность для пользователей, можно использовать DNS-сервис для плавного переключения сетевых служб.
- Исходное состояние сервиса:
example.domainразрешается в IP-адресA. - Переходное состояние:
example.domainразрешается в IP-адресаAиB. - Новое состояние сервиса:
example.domainразрешается в IP-адресB, IP-адресAудаляется.
Примечание: когда пользователь получает два адреса разрешения, клиент выбирает один из них для подключения, и при неудаче подключения пробует другие адреса, тем самым обеспечивая доступность сервиса.
Поскольку DNS-разрешение имеет кэш, для обеспечения плавного переключения необходимо поддерживать переходное состояние в течение некоторого времени, чтобы гарантировать, что все кэши станут недействительными.
В моём случае необходимо перенести DNS-сервис, можно установить DNS-перезапись в переходном состоянии для ускорения процесса переноса.
Правила перезаписи сервиса A:

Правила перезаписи сервиса B:

Процесс первоначальной миграции расширяется до:
- Исходное состояние сервиса:
example.domainразрешается в IP-адресA. - Переходное состояние: в сервисе
DNS Aexample.domainперезаписывается вAиB, в сервисеDNS Bперезаписывается вB. - Новое состояние сервиса:
example.domainразрешается в IP-адресB, IP-адресAудаляется.
Когда пользователь всё ещё использует сервис DNS A, он может получить два адреса, с вероятностью 50% выберет сервис DNS A.
В другом случае 50% пользователь переключится на сервис DNS B, при сбое сервиса DNS B переключится обратно на DNS A. Если сервис DNS B не сбоя, пользователь получит только один адрес, таким образом останется на сервисе DNS B.
Таким образом мы можем постепенно уменьшать потребление ресурсов сервиса DNS A, а не останавливать его сразу, реализуя более плавную миграцию.