我目前正试图回到一个问题的核心,我的LVS导演似乎不时从客户端丢失一个数据包。 我们在生产系统上遇到了这个问题,并且可以在升级时重现问题。
我在lvs-users-mailing-list上发布了这个问题,到目前为止没有回应。
我们在PV XEN-DomU中使用Linux CentOS5 x86_64的ipvsadm。
我们使用DR模式的IPVS来pipe理我们使用lvs-kiss的连接。
ipvsadm在heartbeat-v1-cluster(两个虚拟节点)中运行,主节点和备份节点都在不断运行。
对于LVS服务,我们使用由心跳(active / passive-clustermode)设置的逻辑IP
真正的服务器是物理的Linux机器。
作为director的VM在Dom0上使用桥接networking作为XEN-PV-DomU运行。
1 GB RAM,2个vCPU,系统负载几乎为0,内存73M空闲,224M缓冲区,536Mcaching,无交换。
几乎总是100%空闲,0%us / sy / ni / wa / hi / si / st。
ipvsadm -Ln对于有问题的服务显示:
TCP xy183.217:12405 wrr persistent 7200 -> 192.168.83.234:12405 Route 1000 0 0 -> 192.168.83.235:12405 Route 1000 0 0
xy前两个八位字节来自我们内部的B类范围。 我们使用192.168.83.x作为lvs-network进行登台。
持久ipvsadmconfiguration: / etc / sysconfig / ipvsadm :–set 20 20 20
集群configuration: /etc/ha.d/haresources :$ primary_directorname lvs-kiss xy183.217
以上服务的lvs-kiss-configuration-snippet:
<VirtualServer idm-abn:12405> ServiceType tcp Scheduler wrr DynamicScheduler 0 Persistance 7200 QueueSize 2 Fuzz 0.1 <RealServer rs1-lvs:12405> PacketForwardingMethod gatewaying Test ping -c 1 -nq -W 1 rs1-lvs >/dev/null RunOnFailure "/sbin/ipvsadm -d -t idm-abn:12405 -r rs1-lvs" RunOnRecovery "/sbin/ipvsadm -a -t idm-abn:12405 -r rs1-lvs" </RealServer> <RealServer rs2-lvs:12405> PacketForwardingMethod gatewaying Test ping -c 1 -nq -W 1 rs2-lvs >/dev/null RunOnFailure "/sbin/ipvsadm -d -t idm-abn:12405 -r rs2-lvs" RunOnRecovery "/sbin/ipvsadm -a -t idm-abn:12405 -r rs2-lvs" </RealServer> </VirtualServer>
idm-abn,rs1和rs2通过/ etc / hostsparsing。
这是一个soa-web服务。
从客户端,我们在三秒内以一次呼叫的间隔对Web服务进行持续的呼叫。 不时会有一个连接从导演重置到客户端。
有趣的是:这发生在nx100th + 1次尝试 – 有趣的是一个。
在这个tcpdump中,我们可以看到来自客户端的请求,通过导演的连接重置来回答。 数据包不通过LVS转发。
我欢迎任何有关如何进一步跟踪这个问题的想法。 如果有任何信息不清楚/缺less来深入解决问题,请询问。
你对LVS-DR导向器有任何有状态的iptables规则吗? 正如我所看到的,你使用的端口12405,所以如果你有这样的规则:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 12405 -j ACCEPT
在LVS-DR真实服务器回应客户(而不是导演)的请求时,导演不会将这些连接添加到连接跟踪表中,并且在导演的iptables上将不会检测到FIN数据包,而规则ESTABLISHED,RELATED 。 由于您只在端口12405上允许NEW ( SYN )数据包, FIN将被阻塞。 您必须在LVS-DR导向器上使用无状态防火墙来实现负载均衡服务:
iptables -A INPUT -m tcp -p tcp --dport 12405 -j ACCEPT