LVS+keepalived主备切换异常
问题描述:
一个lvs+keepalived一共包括三个分发服务,包括一个nginx分发和两个mysql。
lvs+keepalived主备切换不正常,过段时间分发nginx的服务总是自动把主的切换到备用服务器上,而且日志里也没异常。手动重启时候主的有Transition to MASTER STATE这样的日志,但是backup上没有任何日志输出,没有类似Entering BACKUP STATE的日志。并且如果重启备用服务器keepalived服务会抢占主的服务,备的切换为MASTER,同样主服务器里也没日志输出。还有个问题是mysql的服务分发不正常,只往一台分发,但是对nginx的分发就正常。
以下是配置文件:
包括1个应用服务和2个mysql服务
MASTER配置
! Configuration File for keepalived
global_defs {
notification_email {
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
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 {
121.121.211.185
}
}
vrrp_instance VI_2 {
state MASTER
interface eth1
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.15
}
}
virtual_server 121.121.211.185 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 121.121.211.170 80 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 121.121.211.174 80 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 121.121.211.252 80 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
virtual_server 192.168.0.15 3306 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 192.168.0.11 3306 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
real_server 192.168.0.12 3306 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}
virtual_server 192.168.0.15 3307 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 192.168.0.11 3307 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 3307
}
}
real_server 192.168.0.12 3307 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 3307
}
}
}
----------------------------
BACKUP配置文件:
! Configuration File for keepalived
global_defs {
notification_email {
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
interface eth1
virtual_router_id 51
priority 70
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
121.121.211.185
}
}
vrrp_instance VI_2 {
state BACKUP
interface eth0
virtual_router_id 52
priority 70
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.15
}
}
virtual_server 121.121.211.185 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 121.121.211.170 80 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 121.121.211.174 80 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 121.121.211.252 80 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
virtual_server 192.168.0.15 3306 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 192.168.0.11 3306 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
real_server 192.168.0.12 3306 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}
virtual_server 192.168.0.15 3307 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 192.168.0.11 3307 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 3307
}
}
real_server 192.168.0.12 3307 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 3307
}
}
}
问题反复出现,在网上搜了很久也没找到解决办法。提心吊胆很久了…………
tonynba
周日, 2013-05-12 11:34
Permalink
你可以在主备上使用tc
你可以在主备上使用tcpdump host 224.0.0.18 -nnn 抓包看一下主备通信情况。
Anonymous (没有被验证)
周二, 2014-03-04 10:42
Permalink
fAVBmznwWiGnzMfUTCL
Gosh, I wish I would have had that inaofmrtion earlier!
Anonymous (没有被验证)
周三, 2014-03-05 20:43
Permalink
rphwegIcfhaKukoc
That's a crkccerjaak answer to an interesting question
Anonymous (没有被验证)
周六, 2014-03-22 03:46
Permalink
AfqTAkNnrFgPwOwp
cheap motor vehicle insurance discount car insurance auto insurance teacher autoinsurane quote
Anonymous (没有被验证)
周日, 2014-04-27 10:53
Permalink
bBOTgzLMowrC
business insurance life insurance top 10 here viagra online with out precription
Anonymous (没有被验证)
周二, 2014-11-11 03:24
Permalink
iYCztqrlNEHp
no prescription cialis ceialis business ins insurance quotes auto
Mars.Ge
周六, 2013-10-05 00:26
Permalink
猜測?
不知道你是否用了网上的那个LVS-DR.sh脚本?那个脚本仅仅用来手动测试LVS的,实际中无需运行,直接配置好keepalived,然后运行keepalived服务即可。
其他的就是运行下realserver即可。
我刚开始接触LVS的时候,就是按照那些教程做的,结果就运行了那个LVS-DR脚本,导致主备切换不了,备机老抢占。。。。不知道你是否也是这样?
yin_bp
周四, 2016-05-19 00:46
Permalink
我也碰到类似的问题了
我也碰到类似的问题了,不知楼主最终是如何解决这个问题的