【问题标题】:Haproxy reload with different backend server ip使用不同的后端服务器 ip 重新加载 Haproxy
【发布时间】:2017-04-20 21:34:47
【问题描述】:

是否可以在后端服务器 ip 更改时重新加载 haproxy?如果,如何?

对于 docker stack 来说是必不可少的。在每次部署时,具有不同 ip 的新容器将替换旧容器。

在我们的实现中,服务偶尔会返回 503,因为旧的 haproxy 进程没有终止并且仍在接受请求,而后端服务器已经消失。 httplog 显示一些请求转发了一个已经消失的后端。

# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       893  0.0  0.0      0     0 ?        Zs   19:39   0:01 [haproxy] <defunct>
root       898  0.3  0.0  49416  9640 ?        Ss   19:49   0:13 /usr/local/sbin/haproxy -D -f /app/haproxy.cfg -p /var/run/haproxy.pid 
root       915  0.2  0.0      0     0 ?        Zs   19:49   0:12 [haproxy] <defunct>
root       920  0.2  0.0  49308 10196 ?        Ss   20:57   0:01 /usr/local/sbin/haproxy -D -f /app/haproxy.cfg -p /var/run/haproxy.pid 
root       937  0.0  0.0      0     0 ?        Zs   20:57   0:00 [haproxy] <defunct>
root       942  0.3  0.0  49296  9880 ?        Ss   20:58   0:01 /usr/local/sbin/haproxy -D -f /app/haproxy.cfg -p /var/run/haproxy.pid 
root       959  0.2  0.0  49296  9852 ?        Ss   20:58   0:01 /usr/local/sbin/haproxy -D -f /app/haproxy.cfg -p /var/run/haproxy.pid

[编辑] 我正在使用 docker swarm 模式。我确实尝试过将服务的端口发布到主机;但是,swarm 的内部负载均衡器的性能很差,我尽量避免。

【问题讨论】:

    标签: docker load-balancing haproxy


    【解决方案1】:

    虽然应该可以将 HAProxy 配置更改为指向不同的后端服务器,但 to bind the Docker containers' ports to predictable ports on the Docker host 似乎更容易,因此 HAProxy 配置不需要更改。

    例如:

    docker run -d -p 127.0.0.1:80:9999 hello_world
    

    你的 HAProxy 配置可能看起来像

    backend something
        # Assuming the Docker host's IP address is 192.0.2.123
        server some-server 192.0.2.123:9999
    

    【讨论】:

    • 感谢您的回复。对于 docker stack,我使用的是 docker swarm 模式。端口转发并不是一个真正的选择。我确实尝试将端口发布到主机;然而,swarm 的内部负载均衡器的性能非常糟糕。静态 ip 是解决这个问题的方法吗?
    • @benjah1 我对 docker swarm 没有太多经验,但是this page seems to describe exactly your situation?看起来你不应该在 swarm 模式下发布容器的端口;取而代之的是you would publish a service's ports。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 2015-10-24
    • 1970-01-01
    相关资源
    最近更新 更多