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

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

У меня есть сеть с двумя DNS-серверами (главный и подчиненный), но я не хочу, чтобы клиенты обращались к ним напрямую. Итак, в той же сети у меня есть машина debian с установленным haproxy 1.7.5. Я хочу, чтобы у клиентов были /etc/resolv.conf записать IP-адрес прокси. Я хочу, чтобы прокси-сервер балансировал нагрузку между двумя серверами.

IP DNS master = 10.10.24.2
IP DNS slave  = 10.10.24.4
IP PROXY      = 10.10.24.5

В файле /etc/haproxy/haproxy.cfg в конце я добавил:

resolvers mydns
    nameservers dns1 10.10.24.2:53
    nameservers dns2 10.10.24.4:53

Затем запускаю haproxy:

haproxy -f /etc/haproxy/haproxy.cfg

Если я выполню в прокси:

netstat -tuna

Я получаю две новые строчки:

udp    0    0    10.10.24.5:35000    10.10.24.2:53    ESTABLISHED
udp    0    0    10.10.24.5:35000    10.10.24.4:53    ESTABLISHED

Но я ожидал получить что-то вроде этого:

udp    0    0    10.10.24.5:53    10.10.24.2:53    ESTABLISHED
udp    0    0    10.10.24.5:53    10.10.24.4:53    ESTABLISHED

Очевидно, что DNS-запросы от клиентов к прокси не работают ...

Можно ли этого добиться с помощью haproxy?

Вам не нужно балансировать нагрузку на DNS-серверы. Достаточно настроить на стороне клиента два DNS-сервера и все.

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

Это похожий пост на serverfault.

Смотрится прекрасно. Исходящая часть IP-соединения (от 10.10.24.5 к 10.10.24.2) обычно использует случайный порт (или полуслучайный), у него не обязательно должен быть тот же номер порта, что и у целевой машины.

Что еще более важно, у вас также есть такая строка:

udp        0      0 10.10.24.5:53      0.0.0.0:*               LISTEN

что указывает на то, что HAProxy действительно прослушивает UDP-порт 53 для DNS-запросов и готов перенаправить их на последующие серверы.