DNS-серверы с балансировкой нагрузки: UDP / TCP
Меня попросили перестроить нашу инфраструктуру балансировки нагрузки в центре обработки данных.
Первоначальный запрос был для балансировки нагрузки FTP-серверов. Я попытался сделать это, используя текущий балансировщик нагрузки (Piranha / LVS
), но не запустил его. Не только потому, что для этого программного обеспечения практически нет документации. поскольку Piranha
считается устаревшим, я перешел к HAProxy
после нескольких дней попыток, которые сделали работу за долю времени, потраченного на Piranha
,
Итак, у меня есть балансировка нагрузки FTP (пассивный режим). Теперь меня попросили заменить весь балансировщик нагрузки Piranha в центре обработки данных. В текущей конфигурации Piranha у нас есть несколько веб-серверов, IIS-серверов.... aaa и DNS.
Нет вот в чем дело: HAProxy
кажется широко используемым LB, но он не способен обрабатывать UDP load balancing
, Это облом, так как мне нравится, как HAProxy
работает. Я много гуглил и наткнулся на несколько вещей. Большинство людей, кажется, используют LVS
в качестве LB для DNS (TCP/UDP). Некоторые используют dlbDNS
, некоторые используют lbnamed
и некоторые используют netfilter / iptables
,
Так как я хотел бы придерживаться HAProxy
для серверов FTP, HTTP, IIS, я запутался, используя его рядом с LVS
,
Требования:
2 экземпляра LB с аварийным переключением
2 DNS-сервера (уже существуют) с аварийным переключением
Несколько внутренних серверов (http, приложение и т. Д.)
Вопросы:
Это возможно? Требуется ли балансировка нагрузки UDP на DNS-серверах? Есть ли какой-нибудь ресурс, который мог бы показать мне, как начать с этим? Или есть решение LB, способное обрабатывать не только TCP/HTTP, но и балансировку нагрузки UDP?
PS: LB-решение должно быть не аппаратным, а с открытым исходным кодом / лицензией GPL / без затрат.
Любая помощь или привести к соответствующим ресурсам высоко ценится!
3 ответа
Не загружайте баланс вашего DNS.
Это невероятно легкий протокол - вам понадобится огромное количество трафика, чтобы понадобилось более одного блока (в любом случае, в любом случае вы просто станете узким местом на вашем балансировщике нагрузки), и встроена устойчивость, потому что вы можете использовать несколько записей NS в вашей делегации (другие серверы будут использоваться, если один не работает).
Мне неудобны эти вопросы и ответы, потому что на самом деле не было установлено, о каком типе DNS-сервера вы говорите. Есть некоторые существенные заблуждения, когда речь заходит об устойчивости рекурсивного DNS, и важно, чтобы люди, заходящие через поисковые системы, не уходили от этого обсуждения с ложным чувством безопасности.
Авторитетный DNS: для авторитетных DNS-серверов общеизвестно, что такое устойчивость DNS. Пока у вас есть несколько авторитетных DNS-серверов с гео-избыточностью, все в порядке. Основная причина добавления высокой доступности для отдельных IP-адресов заключается в том, что вы размещаете много авторитетных зон. Это позволяет увеличивать количество серверов без необходимости изменять настройки регистратора для каждого размещенного домена.
Рекурсивный DNS: всегда используйте какую-либо форму решения высокой доступности. (BGP, прибор и т. Д.) Здесь вы можете столкнуться с серьезными проблемами. Все библиотеки распознавателя не созданы равными: DNS-клиенты Windows будут округлять первоначальный сервер, используемый между запросами, но большинство систем на основе Unix всегда будут последовательно проходить по списку. Что еще менее известно, так это то, что этим библиотекам Unix потребуется время для каждой комбинации поискового домена, прежде чем переходить на следующий сервер. Если у вас настроено несколько доменов поиска и первый сервер в порядке поиска распознавателя не работает, это может привести к значительным задержкам в разрешении DNS для каждого отдельного запроса: более чем достаточно, чтобы вызвать проблемы в критических приложениях.
Когда дело доходит до рекурсивного DNS, помните, что ваша серверная инфраструктура столь же устойчива, как и самая "умная" конфигурация клиента. Поскольку ваша компания растет, это то, что вы никогда не можете контролировать. Не делайте предположений о дизайне, основанных на однородной среде серверных ОС, поскольку в растущей компании ситуация редко остается прежней. Это определенно укусит кого-то, если вы не планируете это заранее.
В эти дни вы можете использовать dnsdist
PowerDNS
От README
dnsdist - это балансировщик нагрузки с высокой степенью DNS, DoS и злоупотребления. Его цель в жизни состоит в том, чтобы направлять трафик на лучший сервер, обеспечивая максимальную производительность законным пользователям, одновременно шунтируя или блокируя злоупотребляющий трафик.
dnsdist является динамическим в том смысле, что его конфигурация может быть изменена во время выполнения, и что его статистика может быть запрошена из консольного интерфейса.
https://github.com/PowerDNS/pdns/tree/master/pdns/dnsdistdist
Они предоставляют репозитории для распространенных ОС: https://repo.powerdns.com/