keepalived 切换的疑问
本帖最后由 saup007 于 2015-08-27 15:33 编辑A:172.19.1.201
B:172.19.1.202
VIP:172.19.1.249
# /opt/keepalived/sbin/keepalived -v
Keepalived v1.2.19 (08/21,2015)
当停掉A的MySQL,正常切换到B,当把A MySQL启来后,vip依然在B,这个符合逻辑,但把A MySQL启来后,再去停掉B MySQL,VIP却没有飘移到A上,why?
若在B节点重启keepalived,VIP会飘移到A的。
A:
vim keepalived.conf#
! Configuration File for keepalived
global_defs {
notification_email {
saup007@qq.com
}
notification_email_from root@dbaone
smtp_server dbaone
smtp_connect_timeout 30
router_id MySQL-HA
}
vrrp_script chk_mysql_server {
#script "/opt/keepalived/script/chk_mysql_server.sh"
script "killall -0 mysqld"
interval 30# 检测时间为30s
weight 21
}
vrrp_instance VI_1 {
state BACKUP
interface eth1
virtual_router_id 59
priority 100
advert_int 1
nopreempt# 非抢占模式,只在优化级高的机器设置,优先级低的不设置
#mcast_src_ip 172.19.1.201
authentication {
auth_type PASS
auth_pass 1111
}
notify_master "/opt/keepalived/script/master.sh"
notify_backup "/opt/keepalived/script/backup.sh"
notify_fault"/opt/keepalived/script/fault.sh"
notify_stop "/opt/keepalived/script/stop.sh"
track_script {
chk_mysql_server
}
virtual_ipaddress {
172.19.1.249/24 dev eth1 scope global label eth1:0
}
}B:
vim keepalived.conf#
! Configuration File for keepalived
global_defs {
notification_email {
saup007@qq.com
}
notification_email_from root@dbatwo
smtp_server dbatwo
smtp_connect_timeout 30
router_id MySQL-HA
}
vrrp_script chk_mysql_server {
#script "/opt/keepalived/script/chk_mysql_server.sh"
script "killall -0 mysqld"
interval 30# 检测时间为30s
weight 21
}
vrrp_instance VI_1 {
state BACKUP
interface eth1
virtual_router_id 59
priority 90
advert_int 1
#nopreempt# 非抢占模式,只在优化级高的机器设置,优先级低的不设置
#mcast_src_ip 172.19.1.202
authentication {
auth_type PASS
auth_pass 1111
}
notify_master "/opt/keepalived/script/master.sh"
notify_backup "/opt/keepalived/script/backup.sh"
notify_fault"/opt/keepalived/script/fault.sh"
notify_stop "/opt/keepalived/script/stop.sh"
track_script {
chk_mysql_server
}
virtual_ipaddress {
172.19.1.249/24 dev eth1 scope global label eth1:0
}
} 本帖最后由 saup007 于 2015-08-27 16:56 编辑
暂时通过shell的方式实现 B->A的飘移VIP ,不知能否通过keepalived本身来实现。
#
! Configuration File for keepalived
global_defs {
notification_email {
saup007@qq.com
}
notification_email_from root@dbatwo
smtp_server dbatwo
smtp_connect_timeout 30
router_id MySQL-HA
}
vrrp_script chk_mysql_server {
script "/opt/keepalived/script/chk_mysql_server.sh"
#script "killall -0 mysqld"
interval 30# 检测时间为30s
weight -21
}
vrrp_instance VI_1 {
state BACKUP
interface eth1
virtual_router_id 59
priority 90
advert_int 1
#nopreempt# 非抢占模式,只在优化级高的机器设置,优先级低的不设置
#mcast_src_ip 172.19.1.202
authentication {
auth_type PASS
auth_pass 1111
}
notify_master "/opt/keepalived/script/master.sh"
notify_backup "/opt/keepalived/script/backup.sh"
notify_fault"/opt/keepalived/script/fault.sh"
notify_stop "/opt/keepalived/script/stop.sh"
track_script {
chk_mysql_server
}
virtual_ipaddress {
172.19.1.249/24 dev eth1 scope global label eth1:0
}
}
# cat /opt/keepalived/script/chk_mysql_server.sh
#!/bin/bash
killall -0 mysqld
if [[ $? -eq 0 ]]
then
if [[ /tmp/keepalived ]]
then
rm -rf /tmp/keepalived
exit 0;
else
exit 0;
fi
else
if [[ ! -f /tmp/keepalived ]]
then
/etc/init.d/keepalived restart
echo "`date +%Y-%m-%d` keepalived" >> /tmp/keepalived
exit 1;
else
exit 1;
fi
fi 刚好最近也在玩这个,也遇到过这个问题。
1、timeout 5 我的参数是这个值
2、在”把A MySQL启来后,再去停掉B MySQL,VIP却没有飘移到A上“。在B的keepalvie 是不是也没停掉?
在控制脚本中加上,当msql 停掉把keepalved 先停掉,并且把VIP去掉。然后再起keepalive. 这样应该就可以飘过去的。 本帖最后由 saup007 于 2015-08-28 17:50 编辑
回复 3# noshell
A -> B 是不需要stop keepalive的,只需要优先级就可以完成VIP飘移,但切换回来 B -> A,需要stop或restart keepalvied。
页:
[1]