Завантажити балансуючі сервери DNS: UDP / TCP


10

Мене попросили відновити нашу інфраструктуру балансування навантаження в центрі обробки даних.

Початковий запит полягав у завантаженні балансових серверів FTP. Я спробував це зробити за допомогою поточного балансира навантаження ( Piranha / LVS), але не встав його та працює. Не лише тому, що для цього програмного забезпечення мало жодної документації. Оскільки Piranhaце вважається застарілим, я перейшов до HAProxyдекількох днів спроб, які зробили цю роботу за частку часу, витраченого на неї Piranha.

Тож у мене встановлено балансування навантаження FTP (пасивний режим). Тепер мене попросили замінити весь балансир завантаження Piranha в центрі обробки даних. У поточній конфігурації Piranha у нас є кілька веб-серверів, IIS-сервери .... aaaand DNS .

Ні в чому річ:
HAProxyздається, що це часто використовуваний НВ, але він не здатний працювати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_успіх

Гаразд, має сенс для мене. Річ у тім, що мені все одно знадобиться віртуальний IP для цілей відмови, якщо я не помиляюся, бо у нас буде 2 машини, які будуть містити HAProxy та LVS для маршрутизації. Як би я підійшов до цього?
Mosh Pit

2
@MoshPit vrrpd або keepalived - хороші варіанти.
Шейн Мадден

Я припускаю, що ви говорите про налаштування Active - Active Hot Standby, правильно?
Мош Піт

11

Мені незручно з цим запитанням, тому що насправді не встановлено, про який тип сервера DNS ви говорите. Існують деякі суттєві помилки, коли мова йде про стійкість рекурсивного DNS, і важливо, щоб люди, що курсують за допомогою пошукових систем, не відходили від цієї дискусії з помилковим почуттям безпеки.

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

  • Рекурсивний DNS : Завжди використовуйте певну форму рішення високої доступності. (BGP, прилад тощо) Тут ви можете потрапити в серйозні проблеми. Усі бібліотеки роздільної здатності не створюються однаковими: клієнти DNS Windows округлятимуть початковий сервер, який використовується між запитами, але більшість систем на базі Unix завжди будуть циркулювати список послідовно. Ще менш відомо, що для цих бібліотек Unix доведеться вимкнути час для кожної комбінації пошукових доменів, перш ніж перейти на наступний сервер. Якщо у вас налаштовано кілька доменів пошуку, і перший сервер у порядку пошуку роздільної здатності мертвий, це може створити значні затримки в роздільній здатності DNS для кожного окремого запиту: більш ніж достатньо, щоб викликати проблеми в критичних програмах.

Якщо мова заходить про рекурсивний DNS, пам’ятайте, що ваша інфраструктура сервера є настільки ж стійкою, як і сама конфігурація клієнта. Коли ваша компанія зростає, це те, що ви ніколи не маєте над собою. Не робіть жодних припущень щодо дизайну, що базуються на однорідному середовищі серверної ОС, оскільки в рідко зростаючій компанії справи рідко залишаються однаковими. Це обов'язково когось вкусить, якщо ви цього не плануєте заздалегідь.


Наразі ми використовуємо функцію bind / name як службу DNS.
Мош Піт

Хороший момент - я вважав авторитетним у своїй відповіді, але ти маєш рацію, це може бути рекурсором.
Шейн Мадден

1
@MoshPit Ваш коментар до "служби DNS" не уточнив, чи це рекурсивна чи авторитетна. Авторитетним є те, коли ви розміщуєте домени. Рекурсивний - це те, що ви б використали для отримання IP-адреси доменів, у яких ви не розміщені. Сервери, які виконують обоє, "змішані", що суперечить кращим практикам безпеки.
Андрій Б

1
Прошу вибачення за це, помітив, що коли ви опублікували цей коментар. Ми контролюємо власні сервери DNS, і вони є авторитетними.
Mosh Pit

Не використовуйте балансир навантаження для високої доступності.
живіт

2

Цими днями ви можете користуватися dnsdistPowerDNS

З ПРОЧИТАННЯ

dnsdist - високоефективний балансир навантаження на DNS, DoS та зловживання. Її мета в житті - спрямовувати трафік на кращий сервер, забезпечуючи максимальну ефективність законним користувачам, одночасно відмахуючи або блокуючи зловживаний трафік.

dnsdist є динамічним, в тому сенсі, що його конфігурацію можна змінити під час виконання, і що її статистику можна запитувати з консольного інтерфейсу.

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

Вони надають сховища для загальних ОС: https://repo.powerdns.com/

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.