Наложение Docker с помощью HAProxy - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть среда 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?

1 Ответ

0 голосов
/ 06 декабря 2018

Я нашел решение!Я изменил определение сервера с

server cirrus01 cirrus-bos01:6021 check init-addr none

на:

server cirrus01 cirrus-bos01:6021 check init-addr last,libc,none
...