咨询个lvs的问题,有时访问VIP会出现SYN_RECV

由 kofzhujia2010 在 周四, 2011-11-10 22:24 提交 LVS集群
我的环境
双机,每台机既是均衡器又是RealServer。

以下是我的IP:
VIP=192.168.0.21
RIP1=192.168.0.19 [既是主keepalived又是RealServer]
RIP2=192.168.0.20 [既是副keepalived又是RealServer]

使用ipvsadm-1.24.tar.gz + keepalived-1.1.19.tar.gz搭建环境,防火墙均关闭.

但有时会出现客户端访问http://192.168.0.21不能连接到主机的错误,使用ipvsadm -lcn查看的时候发现如下,两台服务器在“打皮球”.

[root@lvs1 ~]# ipvsadm -lcn
IPVS connection entries
pro expire state source virtual destination
TCP 01:00 SYN_RECV 192.168.0.25:1302 192.168.0.21:80 192.168.0.20:80
TCP 00:48 NONE 192.168.0.25:0 192.168.0.21:80 1 92.168.0.20:80

[root@lvs2 ~]# ipvsadm -lcn
IPVS connection entries
pro expire state source virtual destination
TCP 01:00 SYN_RECV 192.168.0.25:1302 192.168.0.21:80 192.168.0.19:80
TCP 00:48 NONE 192.168.0.25:0 192.168.0.21:80 192.168.0.19:80

现在的情况是只要客户端的一次请求分布在两台上,铁定都显示state为SYN_RECV,那么必定连接不到主机了,怎么回事啊?
为什么一次请求会分布在两台服务器上呢,正常情况下应该在一台上啊.

Forums:

原因:
当 A 为 MASTER 时,目的IP为 21 的包发往服务器A,LVS A有两种路由选择,“路由至Local”或“修改 MAC 路由至 B”。当 A 修改 MAC 路由至 B 后,服务器 B 上的 LVS 虽然状态为 BACKUP,但仍然会处理这个包,而不是直接由应用层的服务来处理。B 节点的 LVS 也会有两种选择,“修改 MAC 路由至 A”或者“路由至Local”。当 A路由给B,B又路由给A时,就会相互反复发包。

分析:
由此可见,虽然 BACKUP,只要包发过来了,LVS B 也会工作。主备的区别,只是 eth0 上是否有 VIP 。

我的疑问:
1)所谓 MASTER 或 BACKUP,是 LVS 的概念,还是 KeepAlived 的概念
2)在 BACKUP 的 eth0 上没有 VIP,但包来了以后,LVS 还是抢在应用层之前处理
3)KeepAlived 控制的主和备的区别只是 eth0 上是否绑定 VIP,因此导致这个问题。KeepAlived 是否可以修改为:当作为BACKUP时,除了处理是否绑定 VIP 外,将这一个组的 virtual service 都删除了

这个原因和你说的差不多,是双机互发广播风暴所致,至于BACKUP的LVS是抢在应用层之前处理,因为它是在传输层作业的,包来了之后必须先
经过传输层,不知在一台机器上使用双网卡试试能否解决,一个网卡做NGINX,一个网卡做LVS+KEEPALIVED

That's a moerlbreak-d. Great thinking!

The forum is a brhtiger place thanks to your posts. Thanks! http://kjivzmqtkx.com [url=http://eyxnjdw.com]eyxnjdw[/url] [link=http://tbqpmpu.com]tbqpmpu[/link]

在备调度器配置里,调度算法用wrr, 再将virtual_server中的主real_server的权重设为0,或直接删除主real_server的配置。
主调度器的配置不变。从主调度器转发至备调度器的包,备调度器将不再会转发至主调度器,环路因此不会形成。

It's always a pleasure to hear from someone with exeeptisr.

I was struck by the hoetsny of your posting http://gqvknj.com [url=http://qoybsivzd.com]qoybsivzd[/url] [link=http://cvpkufwoh.com]cvpkufwoh[/link]

更好的解决方案,详见链接:http://www.linuxde.net/2012/05/10652.html

randomness