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

Балансировка нагрузки на уровне DNS

Возможно ли в этом мире достичь балансировки нагрузки на уровне DNS? Например, у меня есть сервер A (111.222.333.444) и сервер B (555.666.777.888), и есть какой-то сторонний DNS-хостинг (например, CloudFlare), который может решить, не работает ли сервер A (или не отвечает), а затем перенаправить все трафик на сервер B. Это не настоящая балансировка нагрузки, а, скорее, перенаправление трафика, я не знаю. Но возможно ли это?

Я знаю, что распространение DNS требует времени, но таким сервисам, как CloudFlare, едва ли требуется несколько минут, чтобы переключиться на другой сервер.

Любые идеи? Спасибо.

DNS вполне можно использовать для балансировки нагрузки, но он может делать только такие вещи, как простой круговой алгоритм.

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

В общем, гораздо лучше использовать такие решения, как Сердцебиение.

С Heartbeat сценарий будет выглядеть следующим образом:

У вас есть сервер A и сервер B. Heartbeat постоянно проверяет, в порядке ли сервер A и B. Если Heartbeat обнаруживает проблему с сервером A, он просто назначает IP-адрес сервера A серверу B. Таким образом, сервер B обслуживает запросы для обоих IP-адресов.

Таким образом, для пользователя существует только минимальное прерывание обслуживания в секунду или две, необходимое для переназначения IP-адресов и распространения обновленного ARP. Это намного быстрее, чем вы когда-либо могли бы распространить изменение DNS.