linux kernel 2.6中,lvs direct routing时,VIP可不可以就是eth0(外部接口)的地址
即有不有必要建个eth0:1 ,然后再指定个VIP地址,他的作用是什么.
我试着使用同一个地址(按照http://kb.linuxvirtualserver.org/wiki/Mini_Mini_Howto),却不通.
请问是这样吗?谁有合理的解释.
KevinKW
周五, 2007-08-24 08:39
Permalink
我认为建一个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信息,说不定会通。你如果有条件的话,可以试试看,有结果也告诉我一声,多谢。
jackbillow
周一, 2007-08-27 08:31
我赞成KevinKW 的说法。
Anonymous (没有被验证)
周四, 2007-08-30 06:15
非常好,解开了我的疑问。
There are currently 0 users online.
KevinKW
周五, 2007-08-24 08:39
Permalink
应该是不行的
我认为建一个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信息,说不定会通。你如果有条件的话,可以试试看,有结果也告诉我一声,多谢。
jackbillow
周一, 2007-08-27 08:31
Permalink
我赞成KevinKW
我赞成KevinKW 的说法。
Anonymous (没有被验证)
周四, 2007-08-30 06:15
Permalink
非常好,解开了我的疑问。
非常好,解开了我的疑问。