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

У меня есть 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, отвечая на пинг и телнет. Но haproxy все еще лечит web отступить вниз.

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

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

1 ответ

Ваша текущая конфигурация позволяет 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).

Другие вопросы по тегам