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

8

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

Получить бесплатно
источник
Смотрите мой ответ здесь: serverfault.com/questions/327708/…
Sandman4

Ответы:

13

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

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

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

Райан Райс
источник
Я понимаю, что клиенты всегда получают оба IP-адреса от NS. Просто по умолчанию они выбирают первый в списке. Но что, если первый не работает? они попробуют со вторым?
GetFree
9
Это полностью зависит от приложения. Если мы говорим, например, о веб-браузерах, большинство современных веб-браузеров будут просматривать список до тех пор, пока они не будут успешными, некоторые браузеры (обычно более старые) будут просто отказывать после попытки первого неудачного IP-адреса. Дополнительная информация: nber.org/sys-admin/dns-failover.html и blog.engelke.com/2011/06/07/web-resilience-with-round-robin-dns
Райан Райс
По ссылкам, которые вы дали, кажется, что это работает. По крайней мере, для клиентов HTTP (это то, что меня волнует сейчас). Все современные браузеры и даже HTTP-клиенты более низкого уровня переключаются на другой IP-адрес в списке.
GetFree
Ага. Просто хотел дать вам оговорку, что это зависит от приложения. YMMV и т. Д.
Райан Райс
@RyanRies, RFC дает какие-либо рекомендации относительно поведения клиента? Является ли Telnet совместимым, когда он пробует все IP-адреса вместо того, чтобы просто использовать первый?
Pacerier
14

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

Conterary в ответ выше, большинство HTTP клиентов уже DO поддержка пытается каждым 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, вероятно, является лучшим решением, так как больше нет единой точки отказа.

Тони Уэстон
источник
Смотрите второй комментарий в принятом ответе
GetFree
2

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

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

Майкл Графф
источник