在我的场景中,我有 2 台服务器,两者都与 HAProxy 通信。当请求传入时,HAProxy 会按照循环方法拆分请求并将其发送到两台服务器。无论如何,如果我的第一个实例出现故障,此时 HAProxy 应该知道其中一台服务器已故障,并且它不应该将任何请求转发到该服务器。它应该只针对每个请求与其他服务器进行通信。
有人可以告诉我如何为上述场景配置 HAProxy 吗?
答案1
我相信本教程正是您所寻找的。该教程的标题是:在 Debian Lenny 上使用 HAProxy/Heartbeat 设置高可用性负载均衡器(具有故障转移和会话支持)。
一般来说,您的 /etc/haproxy.cfg 文件将类似于以下内容:
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
user haproxy
group haproxy
defaults
log global
mode http
option httplog
option dontlognull
retries 3
redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen webfarm 192.168.0.99:80
mode http
stats enable
stats auth someuser:somepassword
balance roundrobin
cookie JSESSIONID prefix
option httpclose
option forwardfor
option httpchk HEAD /check.txt HTTP/1.0
server webA 192.168.0.102:80 cookie A check
server webB 192.168.0.103:80 cookie B check
您需要重新配置此文件并将前端 webfarm IP 地址更改为您的地址。此外,您还需要将服务器线路重新指向内部后端服务器的 IP 地址。