У меня есть среда QA, в которой я запускаю все свои приложения и HAProxy в одной оверлейной сети.Я хочу, чтобы HAProxy мог запускаться без обязательного включения серверов, поэтому моя конфигурация сервера, например:
backend cirrus
option httpclose
option forwardfor
balance leastconn
server cirrus01 cirrus-bos01:6021 check init-addr none
, обратите внимание на init-addr none
, что позволяет мне отключить исходное разрешение DNS.Проблема с этой конфигурацией состоит в том, что все серверы помечены как нездоровые, и они никогда не становятся здоровыми, поэтому я всегда получаю NOSRV:
2018-12-05T16:50:42+00:00localhost haproxy[12]: 192.168.10.118:64813
[05/Dec/2018:16:50:42.981] main cirrus/<NOSRV>
0/-1/-1/-1/0 503 212 - - SC-- 1/1/0/0/0 0/0
{cirrus.docker-app.qa01.company.com|} "GET / HTTP/1.1"
, хотя URL cirrus-bos01
IS доступен из самого контейнера.
Теперь, если бы я удалил check init-addr none
из определения сервера, haproxy зависал бы для служб, которые я еще не развернул:
[ALERT] 338/165450 (1) : parsing [/usr/local/etc/haproxy/haproxy.cfg:347] : 'server renderer' : could not resolve address 'ytuploader'.
[ALERT] 338/165450 (1) : Failed to initialize server(s) addr.
Поскольку на самом деле нет сервера с именем ytuploader
пока.
Есть ли для этого решение для докера / haproxy?