dav*_*ley 5 linux ldirectord lvs ubuntu-10.04
出于某种原因,当使用 wlc 或 lc 调度程序时,ipvsadm 似乎并没有平等地平衡我的真实服务器之间的连接。一台真正的服务器会收到大量请求,而其他服务器收到的连接相对较少。
我的 ldirectord.cf 文件如下所示:
quiescent = yes
autoreload = yes
checktimeout = 10
checkinterval = 10
# *.example.com http
virtual = 192.0.2.111:http
real = 10.10.10.1:http ipip 10
real = 10.10.10.2:http ipip 10
real = 10.10.10.3:http ipip 10
real = 10.10.10.4:http ipip 10
real = 10.10.10.5:http ipip 10
scheduler = lc
protocol = tcp
service = http
checktype = negotiate
request = "/lb"
receive = "Up and running"
virtualhost = "site.com"
fallback = 127.0.0.1:http
Run Code Online (Sandbox Code Playgroud)
我认为可能导致问题的奇怪事情(但我真的不确定)是 ipvsadm 似乎没有正确跟踪活动连接,它们都显示为非活动连接
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.0.2.111:http lc
-> 10.10.10.1:http Tunnel 10 0 10
-> 10.10.10.2:http Tunnel 10 0 18
-> 10.10.10.3:http Tunnel 10 0 3
-> 10.10.10.4:http Tunnel 10 0 10
-> 10.10.10.5:http Tunnel 10 0 5
Run Code Online (Sandbox Code Playgroud)
如果我这样做,ipvsadm -Lnc
那么我会看到很多连接,但只处于 ESTABLISHED 和 FIN_WAIT 状态。
我之前在基于 Gentoo 的负载均衡器上使用 ldirectord,而 activeconn 曾经是准确的,因为转移到 Ubuntu 10.4 LTS 似乎有些不同。
# ipvsadm -v
ipvsadm v1.25 2008/5/15 (compiled with popt and IPVS v1.2.1)
Run Code Online (Sandbox Code Playgroud)
那么,ipvsadm 是否没有正确跟踪活动连接,从而使负载平衡工作不正确,如果是这样,我该如何让它再次正常工作?
编辑:它变得更奇怪,如果我cat /proc/net/ip_vs
那么它看起来像正确的activeconns:
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP C000026F:0050 rr
-> 0AB42453:0050 Tunnel 10 1 24
-> 0AB4321D:0050 Tunnel 10 0 23
-> 0AB426B2:0050 Tunnel 10 2 25
-> 0AB4244C:0050 Tunnel 10 2 22
-> 0AB42024:0050 Tunnel 10 2 23
Run Code Online (Sandbox Code Playgroud)
使用 lc(最少连接),如果所有服务器具有相同数量的连接,那么它将始终向列表中的第一个服务器提供新连接。这可能意味着,如果您的利用率非常低,并且偶尔只有一个连接,则该连接将始终转到列表中的第一个主机。