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

Обратное проксирование HAProxy с Docker не работает

У меня один сервер. На этом сервере у меня один контейнер haproxy, 2 контейнера узла. Я пытаюсь разделить следующее.

https://mydomain -> 1e node container (x.x.x.x:8080)
https://mydomain:81 -> 2e node container (x.x.x.x:8080)

Моя конфигурация:

global
    log 127.0.0.1 local0 notice
    maxconn 2048
    tune.ssl.default-dh-param 2048
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 30s
    user haproxy
    group haproxy

defaults
    log     global
    mode    http
    option  httplog
    option  dontlognull
    retries 3
    timeout connect 5000
    timeout client  10000
    timeout server  10000

listen stats
    bind *:1988 ssl crt /srv/ssl.io.pem
    stats enable
    stats hide-version
    stats realm Haproxy\ Statistics
    stats uri /haproxy
    stats auth myuser:mypassword

frontend http-in-beta
    bind *:81 ssl crt /srv/ssl.io.pem
    acl host_mydomain_com_beta      hdr_beg(host) -i mydomain.com
    use_backend mydomain_beta      if host_mydomain_com_beta

frontend http-in
    bind *:80
    redirect scheme https code 301 if !{ ssl_fc } # redirect all traffic to https

frontend https-in
    bind *:443 ssl crt /srv/ssl.io.pem
    acl host_mydomain_com          hdr_beg(host) -i mydomain.com
    use_backend mydomain_cluster   if host_mydomain_com

backend mydomain_beta
    balance roundrobin
    option forwardfor
    server mydomain_beta 172.17.0.110:8080

backend mydomain_cluster
    balance roundrobin
    option forwardfor
    server mydomain_node_s1 172.17.0.109:8080

Теперь я понимаю, что иногда это срабатывает. Иногда я получаю 503. Это неприятно!

По ощущениям порт 81 и 80 как-то конфликтуют?

В сообщении: https://stackoverflow.com/questions/13994629/haproxy-random-http-503-errors

Мэтью Джонс ответил на мой вопрос. Я запускал не один, а ДЕСЯТЬ экземпляров HAProxy, каждый, вероятно, со своими собственными файлами конфигурации.

Я не знаю, как это произошло, я обновлял конфигурацию около 10 раз, но всегда использовал команду service haproxy restart. Странно ...

Я использовал следующее, чтобы захватить процессы и убить их:

ps -ef | grep haproxy
kill <PROCESS NUMBER HERE>
service start haproxy