Мы перемещаем наш магазин на новый сервер с новым IP-адресом, и я пытаюсь определить, есть ли способ минимизировать количество пользователей, которые все еще «видят» наш старый сайт во время распространения DNS.
Сейчас планируется перевести старый сайт в режим обслуживания, как только мы начнем миграцию, чтобы пользователи увидели сообщение 503, если они перейдут на старый сайт.
В основном я пытаюсь решить этот вариант использования:
Перемещение сервера завершено, и мы обновили запись домена A на новый IP-адрес. Прежде чем изменение DNS полностью распространится, пользователь посещает наш сайт и перенаправляется на старый сервер.
Есть ли способ указать, что наш сайт теперь живет на новом IP-адресе для пользователей, которые переходят на старый сервер? Я знаю, что могу просто перенаправить их, используя новый IP-адрес вместо домена, но я бы предпочел не использовать это решение, если это возможно. Есть ли способ указать, что example.com
теперь должен отображаться на 111.111.111.111
на уровне сервера?
Из других ответов, которые я видел о распространении DNS, я подозреваю, что это невозможно. Если это невозможноМне любопытно, есть ли для этого веская причина. Похоже, что было бы полезно иметь механизм, позволяющий серверу сообщать пользователю, что запрошенный им домен теперь должен отображаться на другой IP-адрес.
Такого механизма нет. Это потому, что так работает DNS и его механизмы кэширования.
Обычно это обрабатывается перед миграцией, устанавливая для TTL записи A минимально возможное значение, чтобы DNS-серверы сохраняли IP-адрес в кэше в течение минимально возможного времени.
Однако только в редких случаях можно установить значение TTL на ноль, что полностью устранит задержку. Обычно минимальный TTL, разрешенный провайдером DNS, составляет от пяти до десяти минут, в это время ваш сайт будет недоступен для некоторых пользователей.
Другой альтернативой может быть установка обратного прокси на старом веб-сервере, который ретранслирует запросы и ответы на новый сервер во время периода миграции. Это лишь немного увеличило бы время загрузки страницы для посетителей, но они могли бы получить доступ к сайту все время.
РЕДАКТИРОВАТЬ: Как отмечено в другом ответе, проксирование по умолчанию теряет IP-адрес клиента. Однако проксирование можно настроить так, чтобы IP-адрес клиента добавлялся в качестве заголовка HTTP к запросу со старого сервера на новый сервер, а новый сервер затем мог применять IP-адрес из заголовка.
Вы можете включить переадресацию IP, а затем выполнить пересылку трафика на уровне IP (см. http://www.debuntu.org/how-to-redirecting-network-traffic-to-a-new-ip-using-iptables/ для примера). Я считаю, что это имеет преимущество перед прокси, потому что вы поддерживаете IP-адрес того, кто подключается к веб-сайту, и который правильно регистрируется.