haproxy подождать пока днс решит бэкэнд

2021
Alexey

У меня есть 2 док-контейнера в одной сети - webи proxyработает haproxyс бэкэндом

backend web server web web:80 check 

Также init-addrустановлен на last,libc,none, поэтому он не выходит из строя, если не удается разрешить webпри запуске.

Если я начну proxyпервым, haproxyсообщает could not resolve address 'web', disabling server.

Тогда я начинаю web. Стал доступен по имени от proxy, отвечая на ping и telnet. Но haproxyвсе равно относится к webбэкэнду вниз.

Я ожидаю haproxyповторной проверки серверной части webс интервалом по умолчанию (каждые 2 секунды в соответствии с документацией), а при повторной проверке - снова пытаюсь разрешить DNS при каждой проверке.

Как я могу настроить haproxyожидание, пока dns разрешит имя внутреннего сервера, а затем автоматически выполнит резервное копирование этого внутреннего сервера?

2
Какая версия HAProxy (`haproxy -v`)? Michael - sqlbot 6 лет назад 0
это из Docker Store, последняя, ​​1.7.5 Alexey 6 лет назад 0

1 ответ на вопрос

1
MoEmEn

Ваша текущая конфигурация позволяет HAProxy разрешать имена хостов только при запуске, как упомянуто здесь . Поскольку он не может разрешиться webпри запуске, рассматриваемый сервер будет отключен.
Чтобы заставить HAProxy выполнять DNS-разрешение после запуска, вам нужно добавить раздел распознавателей .
Пример:

resolvers mydns nameserver dns1 10.0.0.1:53 nameserver dns2 10.0.0.2:53  backend web server web web:80 check init-addr last,libc,none resolvers mydns 

Тогда всякий раз, когда webстановится разрешимым, вы будете что-то вроде этого в журналах:
Server web/web ('web') is UP/READY (resolves again).

Похожие вопросы