我想使用 haproxy 对 2 个 apache/php 服务器进行负载平衡 通过 Google 搜索我发现从 1.5 dev12 版本开始 haproxy 支持 SSL 卸载,据我了解这意味着 haproxy 前面不需要任何额外的组件来处理 SSL。
基本上我遵循了这篇文章 http://blog.exceliance.fr/2012/09/10/how-to-get-ssl-with-haproxy-getting-rid-of-stunnel-stud-nginx-or-pound/ 设置haproxy
下面是我的配置
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
#log loghost local0 info
maxconn 4096
chroot /usr/share/haproxy
uid 99
gid 99
daemon
#debug
#quiet
defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
frontend ft_test
mode http
bind 0.0.0.0:443 ssl crt /home/prx/haproxy_ssl/haproxy.ssl prefer-server-ciphers
# other (self described) options are: [ciphers <suite>] [nosslv3] [notlsv1]
default_backend bk_test
backend bk_test
mode http
balance roundrobin
server inst1 10.1.2.43:80 check inter 2000 fall 3
server inst2 10.1.2.142:80 check inter 2000 fall 3
问题是后端服务器同时接收请求,我的意思是,我刷新页面一次,每次都会在 Web 服务器的日志中出现 3 个请求,以下是日志样本
10.1.2.138 - - [24/Jan/2013:12:16:09 -0500] "GET /index.php HTTP/1.1" 200 67170
10.1.2.138 - - [24/Jan/2013:12:16:09 -0500] "GET /index.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 HTTP/1.1" 200 2524
10.1.2.138 - - [24/Jan/2013:12:16:09 -0500] "GET /index.php?=PHPE9568F35-D428-11d2-A769-00AA001ACF42 HTTP/1.1" 200 2146
有时会有 2 个请求到达一台服务器,1 个请求到达另一台服务器,但 1 个页面刷新会导致 3 个请求到达后端,我检查了后端服务器配置,它们没有问题
haproxy 配置有误吗?谢谢
答案1
您看到的这些请求是否可能只是加载页面的多个 HTTP 请求?我相信循环平衡会让每个单独的请求转到不同的后端服务器。如果您希望用户一次只与单个后端服务器交互,我认为您需要研究持久性。另一种可能性是,您是否可以在日志中看到后端服务器检查?