Round robin DNS

Round robin DNS — один из методов распределения нагрузки, или отказоустойчивости за счёт избыточности количества серверов, с помощью управления ответами DNS-сервера в соответствии с некой статистической моделью. Обычно применяется к таким интернет-серверам, как веб-серверы, FTP-серверы.

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

Не существует стандартной процедуры для определения того, какие адреса будут использоваться запрашивающим приложением — некоторые серверы пытаются изменить порядок списка, уделяя приоритетное внимание численно более «близким» сетям. Некоторые настольные клиенты пытаются получить альтернативные адреса после того, как не удалось установить соединение в течение 30—45 секунд.

Круговая система DNS часто используется для распределения нагрузки территориально распределённых веб-серверов. Например, у компании есть один домен и три идентичных веб-сайта, расположенных на трёх серверах с тремя разными адресами. Когда один пользователь получает доступ к главной странице, он будет направлен на первый адрес IP. Второй пользователь, обращающийся к главной странице, будет отправлен на следующий адрес IP, а третий пользователь будет отправлен на третий адрес. В каждом случае, когда IP-адрес выдается, он отправляется в конец списка. Четвёртый пользователь, следовательно, будет отправлен вновь на первый адрес IP, и так далее.

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

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

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