Chinaunix
标题:
lvs dr 模式奇怪的问题
[打印本页]
作者:
netwant
时间:
2012-02-16 22:29
标题:
lvs dr 模式奇怪的问题
环境:虚拟机环境,两个linux5.4 ,装了ipvs以及keepalived,即做dr又做realserver,跑的是apache服务。
问题:服务都启动后。访问vip。第一次a机器,第二次b机器。第三次a机器。第四次失败。第五次a,第六次b,第七次a,第八次失败。以后都是没4次中的最后一次失败。真是奇怪了。但是我关闭任何一个机器的keepalived,就可以正常轮询我的请求了。
配置如下:
global_defs {
notification_email {
netwant@163.com
}
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
193.168.100.10
}
}
virtual_server 193.168.100.10 80{
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 0
protocol TCP
real_server 193.168.100.11 80{
weight 1
TCP_CHECK {
connect_timeout 5
nb_get_retry 2
delay_before_retry 2
connect_port 80
}
}
real_server 193.168.100.12 80{
weight 1
TCP_CHECK {
connect_timeout 5
nb_get_retry 2
delay_before_retry 2
connect_port 80
}
}
}
[root@node1 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress
ort Scheduler Flags
-> RemoteAddress
ort Forward Weight ActiveConn InActConn
TCP 193.168.100.10:80 rr
-> 193.168.100.12:80 Route 1 0 0
-> 193.168.100.11:80 Local 1 0 0
[root@node1 ~]# more real.sh
#!/bin/bash
#description : start realserver
VIP=193.168.100.10
/etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of REALServer"
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
stop)
/sbin/ifconfig lo:0 down
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
作者:
netwant
时间:
2012-02-17 13:12
顶一下。自己顶下。
作者:
chenwenming_zj
时间:
2012-02-19 08:05
回复
2#
netwant
因为lvs是基于内核的服务,所以两台物理服务器上服务都是启动,当两边都启动keepalived的时候,两台服务器服务器上ipvs服务都启动了,而且都已经加载了ipvs-dr策略,
由于既当ld又当realserver在keepalived主备都开着情况下会引起广播风暴,你可以抓一下包分析一下。
建议vip与rip 最好别放一台上,如是一定要在一台上,那备keepalived不要启动。
主lvs上面起了vip,当数据包转发到备lvs时,由于备机lvs上面策略也启动了,所以备机接受到数据包以后也会转发到主lvs上面,所以就形成了广播风暴!!!!
在备机lvs抓包:
09:58:58.653532 IP 172.16.41.26.60490 > 172.16.41.30.http: . ack 1 win 365 <nop,nop,timestamp 157330636 157185220>
09:58:58.653754 IP 172.16.41.26.60490 > 172.16.41.30.http: R 1:1(0) ack 1 win 365 <nop,nop,timestamp 157330636 157185220>
09:59:03.790449 IP 172.16.41.30.44560 > 172.16.41.26.http: S 2756013189:2756013189(0) win 5840 <mss 1460,sackOK,timestamp 157190357 0,nop,wscale 7>
09:59:03.790519 IP 172.16.41.26.http > 172.16.41.30.44560: S 2773918069:2773918069(0) ack 2756013190 win 5792 <mss 1460,sackOK,timestamp 157335774 157190357,nop,wscale 4>
另外heartbeat+lvs再两台物理服务器上为什么不会出现这个情况,因为heartbeat服务启动的时候不会让备机lvs的服务加载策略,在备机lvs上执行ipvsadm命令可以确认到,所以当数据包转发到备机lvs的时候,备机不会转发到主lvs,不会形成广播风暴
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2