Назад | Перейти на главную страницу

Является ли циклический DNS возможным решением для обеспечения высокой доступности?

Допустим, у меня есть 2 IP-адреса для данного домена (циклический DNS).
Если один IP-адрес перестанет отвечать, будут ли клиенты пытаться подключиться к другому IP-адресу? или они просто не смогут установить связь с доменом?

Использование балансировщика нагрузки по-прежнему оставит единственную точку отказа. Если ваш балансировщик нагрузки отключится, ваш сайт перестанет работать.

В соответствии с приведенным выше ответом, большинство HTTP-клиентов уже ДЕЛАТЬ поддержка попытки каждого IP-адреса, возвращенного из запроса DNS, до тех пор, пока один из них не вернет действительный ответ. См. Здесь:

http://blog.engelke.com/2011/06/07/web-resilience-with-round-robin-dns/

Похоже, что автор протестировал следующие браузеры и обнаружил, что они работают нормально.

Chrome 11 в Windows 7
Firefox 4.0 в Windows 7
Internet Explorer 8 в Windows 7
Opera 11 в Windows 7
Safari 5 в Windows 7
Internet Explorer 7 в Windows XP (после заметной задержки)
Firefox 4.0 в Windows XP (после заметной задержки)
Собственный браузер Android на Android 2.3.3
Собственный браузер iPhone на iOS 4.3.3

Использование циклического перебора не будет выполнять все функции сервера балансировки нагрузки, такие как возможность отслеживать время отклика от обоих серверов и направлять больше трафика на один, если другой не отвечает так быстро, как должен). С точки зрения устойчивости я бы сказал, что Round Robin DNS, вероятно, является лучшим решением, поскольку больше нет единой точки отказа.

Циклический перебор DNS не является хорошей заменой балансировщика нагрузки. DNS-сервер будет продолжать передавать IP-адрес неработающего узла, поэтому некоторые из ваших пользователей получат доступ к вашей службе, а некоторые - нет.

Когда клиент делает DNS-запрос, DNS-сервер возвращает все IP-адресов, связанных с этим именем. Волшебство выполняется DNS-сервером, меняющим порядок этого списка для каждого запроса. Однако приложение должно реализовать возможность «прогуливаться» по списку, пока не найдет работающий IP-адрес. И большинство приложений этого не делают.

Windows Telnet, как ни странно, является одним из таких приложений, которое достаточно умно, чтобы просматривать связанный список возвращаемых IP-адресов. Вы можете сами увидеть это поведение, если, например, попытаетесь подключиться к google.com через telnet. Вы заметите, что требуется длинный время наконец потерпеть неудачу. Это потому, что у google.com много IP-адресов, и клиент telnet пробовал каждый из них.

Хотя циклический DNS обычно не имеет обратной связи о состоянии серверов, для которых он предоставляет адреса, может помочь, если у вас есть какой-то балансировщик нагрузки (включая трюки на основе маршрутизатора) для каждого из этих адресов.

Есть уловки для обновления DNS в случае сбоя; в этом случае циклический DNS с подходящим коротким TTL может быть балансировщиком псевдонагрузки.