Linux LVS Direct routing VIP address

linux kernel 2.6中,lvs direct routing时,VIP可不可以就是eth0(外部接口)的地址

即有不有必要建个eth0:1 ,然后再指定个VIP地址,他的作用是什么.

我试着使用同一个地址(按照http://kb.linuxvirtualserver.org/wiki/Mini_Mini_Howto),却不通.

请问是这样吗?谁有合理的解释.

Forums:

我认为建一个eth0:1指定为VIP是非常必要的。直接将VIP设置为eth0接口会存在问题

主要原因是arp不通导致了director和realserver不通
假设一下场景
VIP=192.168.1.1
Director Server为A,DIP=192.168.1.2
Realserver为B,RIP=192.168.1.3
那么当有一个请求过来后,首先由director得到,然后lvs根据设置,需要将该请求修改后,广播给B。
这时,他就需要B的MAC地址,当本地arp缓冲区中不存在时,A首先会广播arp消息。
格式为who has 192.168.1.3? tell 192.168.1.2,然后由B响应请求
而如果A仅仅只有一个VIP,而没有DIP时,arp格式变为who has 192.168.1.3? tell 192.168.1.1,这时,B机收到arp请求后,会按照arp请求src地址192.168.1.1发送自己的信息,而由于B机本身就有VIP,所以此时不会广播出去。所以A机永远得不到B机的MAC地址,导致服务不通。

我自己的想法,仅供参考。我猜想,如果在Director上指定Realserver的静态arp信息,说不定会通。你如果有条件的话,可以试试看,有结果也告诉我一声,多谢。

我赞成KevinKW 的说法。

非常好,解开了我的疑问。

randomness