我已经使用 HAProxy 配置了软件负载均衡器。
- 以下是详细信息:
- 负载均衡器 1(主) - 10.0.0.2
- 负载均衡器 2(从属) - 10.0.0.3
- 负载均衡器共享的虚拟 IP 是 - 10.0.0.1
- 带有 Apache 的 Web 服务器 1:10.0.0.4
- 带有 Apache 的 Web 服务器 2:10.0.0.5
- 带有 Apache 的 Web 服务器 3:10.0.0.6
我能够通过配置的虚拟 IP(即 10.0.0.1)访问所有 Web 服务器上托管的网站
但是,当我刷新浏览器时,服务器会从一个切换到另一个。此外,还出现错误“503服务不可用“,当刷新时,也会转到另一台服务器。
以下是HAProxy.conf文件内容[主负载均衡器]:
global
log 127.0.0.1 local0 err
ulimit-n 50000
maxconn 24000
nbproc 1
stats socket /tmp/haproxysock
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
maxconn 5000
contimeout 5000
clitimeout 50000
srvtimeout 50000
frontend UNBoxFrontEnd
bind 10.0.0.1:80
option http-server-close
default_backend UNBoxBackEnd
backend UNBoxBackEnd
option httpchk HEAD / HTTP/1.1\r\nHost:localhost
hash-type consistent
cookie JSESSIONID prefix
server WebServer1 10.0.0.4:80 cookie Web1 check
server WebServer2 10.0.0.5:80 cookie Web2 check
server WebServer3 10.0.0.6:80 cookie Web3 check
listen web-cluster 10.0.0.1:80
bind *:1936
balance roundrobin
stats enable
stats scope UNBoxFrontEnd
stats scope UNBoxBackEnd
stats scope wordpress-backend
stats uri /haproxy?stats
stats realm Haproxy\ Statistics
stats auth test:test
stats admin if TRUE
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
您能否帮助我使客户端始终重定向到单个 Web 服务器,除非该服务器出现故障。
提前致谢!
答案1
您的问题出balance roundrobin
在 HAProxy.cfg 中的行。这告诉 HAProxy 在所有可用节点之间进行循环。将其更改为其他内容(详见haproxy 文档),你应该得到你想要的行为。
对于后人而言,(在我看来)“平衡”指令最受欢迎的选项是:
roundrobin
- 经典的循环平衡。static-rr
- 通过禁用某些功能可以允许使用更多服务器的变体。leastconn
- 首先平衡到具有最少连接数的服务器。source
- 对源 IP 地址进行哈希处理并据此进行平衡。uri
- 对部分或全部 URI 进行哈希处理,并据此进行平衡。