我正在尝试设置 HAProxy 来平衡一组 Thrift 服务器的负载。出于某种原因,HAProxy 统计页面显示所有服务器都已关闭。
这是我正在尝试的当前 HAProxy 配置。
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 60000
user haproxy
group haproxy
defaults
log global
option dontlognull
option redispatch
retries 3
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen stats :5000
mode http
stats enable
stats hide-version
stats realm Haproxy\ Statistics
stats uri /
stats auth user:pass
listen metrix :5002
mode tcp
option tcplog
balance leastconn
server m1 127.0.0.1:9000 check
server m2 127.0.0.1:9001 check
server m3 127.0.0.1:9002 check
server m4 127.0.0.1:9003 check
server m5 127.0.0.1:9004 check
server m6 127.0.0.1:9005 check
server m7 127.0.0.1:9006 check
server m8 127.0.0.1:9007 check
还有一件事。Thrift 服务器在 Supervisor 中运行,我注意到有些奇怪。但我尝试过只运行 Thrift 服务器而不是在 Supervisor 中运行,但仍然不起作用。
我已经尝试了所有的 Thrift 服务器(TSimpleServer、TNonBlockingServer、TThreadedServer),它们都有同样的问题。
更新
跑步tcpdump port 9000
15:12:31.878502 IP ip-00.00.00.00.ec2.internal.cslistener > ip-11.11.11.11.ec2.internal.36206: Flags [R.], seq 0, ack 3433673377, win 0, length 0
15:12:33.878425 IP ip-11.11.11.11.ec2.internal.36207 > ip-00.00.00.00.ec2.internal.cslistener: Flags [S], seq 3459211721, win 5840, options [mss 1460,sackOK,TS val 440815982 ecr 0,nop,wscale 10], length 0
00.00.00.00
运行 Thrift 服务器的服务器在哪里11.11.11.11
,运行 HAProxy 的服务器在哪里。这两行不断重复。
跑步netstat -tlnp
包含以下内容:
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 19472/python
因此 Thrift 服务器正在监听正确的端口。
答案1
虽然这还不足以tcpdump
确定,但看起来您的健康检查正在发送一个SYN
数据包,并且正在收到一个RST
数据包。(您可以在实际问题中发布更多信息,以便正确格式化。)
我怀疑没有任何东西在监听 127.0.0.1:9000(或任何其他端口)。
您可以使用 来检查这一点sudo netstat -tlnp
。
Thrift 服务器要么正在监听不同的 IP 地址和/或端口,要么根本没有监听。