Mysql主主中Keepalived的配置

系统版本:centos6.5_x64
Keepalived的版本:keepalived-1.2.20.tar.gz
Vip1:172.18.49.112
Mysq-A:172.18.49.10
Mysql-B:172.18.49.2
安装keepalived:

yum –y install keepalived

#################################################
或者源码安装

yum -y install kernel-devel openssl-devel popt-devel popt

tar zxf keepalived-1.2.20.tar.gz(或者可以yum直接装上)

cd keepalived-1.2.20

./configure --prefix=/

make

make install

keepalived –version

#############################################################
Keepalived的主备模式,配置文件修改:
172.18.49.10作为主(master),172.18.49.2作为备(backup),Vip为172.18.49.112。
主keepalived上的配置
Mysql主主中Keepalived的配置
Mysql主主中Keepalived的配置

Mysql-B上和mysql-A上只有router_id、priority、real_server三处不同,其他配置相同。
配置文件中添加的脚本mysql.sh,在mysql-A和mysql-B上都要添加:

vim /etc/keepalived/mysql.sh

#!/bin/bash
pkill keepalived
/sbin/ifdown eth0 && /sbin/ifup eth0

chmod +x mysql.sh

这是一个检测脚本,作用是当mysql停止工作时自动关闭本机的keepalived,当MySQL正常启动之后,要手动启动keepalived服务。
备keepalived也就是mysql-B上的配置:
Mysql主主中Keepalived的配置
Mysql主主中Keepalived的配置

测试:
在mysql-A和mysql-B上分别执行ip addr show dev eth0命令查看mysql-B和mysql-A主机对VIP(群集虚拟ip)的控制权。
Mysql-A上查看:
Mysql主主中Keepalived的配置

Mysql-B上查看:
Mysql主主中Keepalived的配置

停止mysql-A服务器上的MySQL服务,看keepalived的监控检查程序是否会触发mysql.sh脚本停止mysql-A主机的mysql服务。
停止mysql-A服务器上的MySQL之后其上面的keepalived的也随之不在运行了,说明mysql.sh脚本执行将keepalived进行杀死了。而且进行了故障切换到了mysql-B服务器上面。

在另一台mysql服务器上,远程登录mysql集群(172.18.49.112)测试。
登录mysql-A和mysql-B新建一个远程用户。
mysql> grant all on . to [email protected]’%’ identified by ‘123456’;
mysql> flush privileges;
之后远程登录

mysql -uzs -p -h172.18.49.112 -P3306

mysql> show variables like ‘server_id’;
Mysql主主中Keepalived的配置

可以看到在客户端访问VIP地址,是由mysql-A提供响应的,现在将mysql-A上的mysql服务停止。之后执行
再次查看server_id:
Mysql主主中Keepalived的配置

自动变成2,说明了自动切换成功。