DNS-серверы с балансировкой нагрузки: UDP / TCP

10

Меня попросили восстановить нашу инфраструктуру балансировки нагрузки в центре обработки данных.

Первоначальный запрос был для балансировки нагрузки 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.

Так как я хотел бы придерживаться HAProxyFTP, HTTP, IIS серверов, я запутался в использовании его рядом с LVS.

Требования:
2 экземпляра LB с аварийным переключением
2 DNS-сервера (уже существуют) с аварийным переключением
Несколько внутренних серверов (http, приложение и т. Д.)

Вопросы:
возможно ли это? Требуется ли балансировка нагрузки UDP на DNS-серверах? Есть ли какой-нибудь ресурс, который мог бы показать мне, как начать с этим? Или есть решение LB, способное обрабатывать не только TCP / HTTP, но и балансировку нагрузки UDP?

PS: LB-решение должно быть не аппаратным, а с открытым исходным кодом / лицензией GPL / без затрат.

Любая помощь или привести к соответствующим ресурсам высоко ценится!

Моше Яма
источник
Проверьте Nginx nginx.com/blog/announcing-udp-load-balancing, это, кажется, решает Ваш вопрос DNS
user433519

Ответы:

15

Не загружайте баланс вашего DNS.

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

Шейн Мэдден
источник
Определенно используйте несколько записей NS, поскольку TCP становится более распространенным для DNS, просто позволяя ему самому распределять нагрузку. Изобретать колесо больно по какой-то причине.
cpt_fink
Несколько DNS-серверов предлагают избыточность и предотвращают полный сбой, но сбойный DNS-сервер все равно будет вызывать задержки разрешения имен.
200_success
Хорошо, имеет смысл для меня. Дело в том, что мне все равно нужен виртуальный IP-адрес для восстановления после отказа, если я не ошибаюсь, потому что у нас будет 2 машины, которые будут содержать HAProxy и LVS для маршрутизации. Как бы я подошел к этому?
Mosh Pit
2
@MoshPit vrrpd или keepalived - хорошие варианты.
Шейн Мэдден,
Я полагаю, вы говорите об установке Active - Active Hot Standby, верно?
Mosh Pit
11

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

  • Авторитетный DNS : для авторитетных DNS-серверов общеизвестно, что такое устойчивость DNS. Пока у вас есть несколько авторитетных DNS-серверов с географической избыточностью, все в порядке. Основная причина добавления высокой доступности для отдельных IP-адресов заключается в том, что вы размещаете много авторитетных зон. Это позволяет вам увеличить количество серверов без необходимости изменять настройки регистратора для каждого размещенного домена.

  • Рекурсивный DNS : всегда используйте какую-либо форму решения высокой доступности. (BGP, прибор и т. Д.) Здесь вы можете столкнуться с серьезными проблемами. Все библиотеки распознавателя не созданы равными: DNS-клиенты Windows будут округлять первоначальный сервер, используемый между запросами, но большинство систем на основе Unix всегда будут последовательно проходить по списку. Что еще менее известно, так это то, что этим библиотекам Unix потребуется время для каждой комбинации поискового домена, прежде чем переходить на следующий сервер. Если у вас настроено несколько поисковых доменов, а первый сервер в порядке поиска распознавателя не работает, это может привести к значительным задержкам в разрешении DNS для каждого отдельного запроса: более чем достаточно, чтобы вызвать проблемы в критических приложениях.

Когда дело доходит до рекурсивного DNS, помните, что ваша серверная инфраструктура столь же устойчива, как и самая «умная» конфигурация клиента. Поскольку ваша компания растет, это то, что вы никогда не можете контролировать. Не делайте предположений о дизайне, основываясь на однородной среде серверных ОС, так как в растущей компании ситуация редко остается прежней. Это определенно укусит кого-то, если вы не планируете это заранее.

Андрей Б
источник
До сих пор мы используем bind / named в качестве службы DNS.
Mosh Pit
Хороший вопрос - я предполагал, что в своем ответе авторитетно, но вы правы, это может быть рекурсором.
Шейн Мэдден
1
@MoshPit Ваш комментарий к службе DNS не уточнил, был ли это рекурсивный или авторитетный. Авторитетный это когда вы хостинг доменов. Рекурсивный - это то, что вы использовали бы для получения IP-адреса доменов, которые вы не размещаете. Серверы, которые делают оба, «смешаны», что противоречит рекомендациям по безопасности.
Андрей Б,
1
Я прошу прощения за это, заметил, что, когда вы разместили этот комментарий. Мы контролируем наши собственные DNS-серверы, и они являются авторитетными.
Mosh Pit
Не используйте балансировщик нагрузки для высокой доступности.
Уомбл
2

В эти дни вы можете использовать dnsdistPowerDNS

От README

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

dnsdist является динамическим в том смысле, что его конфигурация может быть изменена во время выполнения, и что его статистика может быть запрошена из консольного интерфейса.

https://github.com/PowerDNS/pdns/tree/master/pdns/dnsdistdist

Они предоставляют репозитории для распространенных ОС: https://repo.powerdns.com/

Боден Гарман
источник