Keepalived+Lvs+Mysql主主复制(三)

2015-01-23 22:08:23 · 作者: · 浏览: 18
exit0

2.6 编辑脚本控制Keepalived的开启和停止

大体意思是只要检测到mysql服务停止keepalived服务也停止 ,因为keepalived是通过组播方式告诉本网段自己还活着当mysql服务停止后keepalived还依然运行 这时就需要停止keepalived让另一个主机获得虚拟IP,可以在后台运行这个脚本 也可以在keepalived配置文件加入这个脚本,master和slave节点都需要,只是数据库用户名和密码有区别
?

[root@244 ~]#more /etc/keepalived/check_mysql.sh
#20140722
#!/bin/bash
MYSQL=/usr/bin/mysql
MYSQL_HOST=10.0.11.243

MYSQL_USER=root
MYSQL_PASSWORD=mysql
CHECK_TIME=3

#mysql isworking MYSQL_OK is 1 , mysql down MYSQL_OK is 0

MYSQL_OK=1
function check_mysql_helth (){
$MYSQL -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PASSWORD -e "showstatus;" >/dev/null 2>&1
if [ $? = 0 ] ;then
MYSQL_OK=1
else
MYSQL_OK=0
fi
return $MYSQL_OK
}
while [ $CHECK_TIME -ne 0 ]
do
let "CHECK_TIME -= 1"
check_mysql_helth
if [ $MYSQL_OK = 1 ] ; then
CHECK_TIME=0
exit 0
fi
if [ $MYSQL_OK -eq 0 ] && [ $CHECK_TIME -eq 0 ]
then
pkill keepalived
exit 1
fi
sleep 1
done

该脚本需要有执行权限,通过以下命令加上执行权限
# chmod +x check_mysql.sh

2.7 测试Keepalived自动故障转移

Master和slave上执行sudo servicekeepalived start,在master上执行ip a

\

Slave上执行 ip a

\

从上可以看到masteMySQL上虚拟IP绑定成功,backup MySQL上keepalived服务正常运行,但无虚拟IP(这属于正常)

客户端能通过vip连接上mysql

\

停止master上的mysql服务,可发现Keepalived服务也会停止

\

这时候slave运行ip a发现绑定了虚拟ip,并且从库mysql运行正常,而客户端依旧能通过vip连上数据库

\

\

重启master的mysql和Keepalived以后,并在slave库运行start slave,master运行ip a发现恢复之前的服务

\

2.8 测试lvs的负载均衡效果

启动 master 和 backup 的 mysql 以后,再在 master 和 backup 执行如下命令启

动 keepalived 和 realserver 脚本:

/etc/rc.d/init.d/realserver.sh start

/etc/rc.d/init.d/keepalived start

运行master和backup上的sudo ipvsadm -ln可看到如下信息

\

?

在客户端通过read vip连接到mysql并执行几次select,可考到inaction发生了变化,证明实现了负载均衡

\

?