一、基本环境
存在俩台Mysql数据库服务器,采用双Master方式形成数据库集群。
需要实现任意宕掉其中一台服务器,不影响系统运行。
Master-1:192.168.1.137
Master-2:192.168.1.138
集群IP:192.168.1.88
通过Keepalived可实现传统方式或者容器方式的故障转移。
二、Master-1配置
1、安装与配置Mysql双主模式集群(略);
2、安装Keepalived高可用服务(略);
3、修改Keepalived配置文件并重启:
vim keepalived.conf
重点关注:修改网卡接口、启动优先级权重
#ConfigurationFile for keepalived
global_defs {
notification_email { ######定义接受邮件的邮箱
wangjj@hrloo.com
}
notification_email_from jiankong@staff.tuge.com ######定义发送邮件的邮箱
smtp_server mail.tuge.com
smtp_connect_timeout 10
}
vrrp_script check_mysql { ######定义监控mysql的脚本
script "/root/check_mysql.sh"
interval 2 ######监控时间间隔
weight 2 ######负载参数
}
vrrp_instance vrrptest { ######定义vrrptest实例
state BACKUP ######服务器状态
interface ens33 ######使用的接口
virtual_router_id 51 ######虚拟路由的标志,一组lvs的虚拟路由标识必须相同,这样才能切换
priority 100 ######服务启动优先级,值越大,优先级越高,BACKUP 不能大于MASTER
advert_int 1 ######服务器之间的存活检查时间
authentication {
auth_type PASS ######认证类型
auth_pass ufsoft ######认证密码,一组lvs 服务器的认证密码必须一致
}
track_script { ######执行监控mysql进程的脚本
check_mysql
}
virtual_ipaddress { ######虚拟IP地址
192.168.1.88
}
}
systemctl restart keepalived.service
当俩台服务器的keepalived都配置完成之后,虚拟IP
3、编写Mysql状态监测脚本
注意脚本中的变量符号$
MYSQL=/usr/bin/mysql
MYSQL_HOST=127.0.0.1
MYSQL_USER=root
MYSQL_PASSWORD=123456
MYSQL_PORT=3307
$MYSQL -h $MYSQL_HOST -u $MYSQL_USER -P$MYSQL_PORT -p$MYSQL_PASSWORD -e "show status;" >/dev/null 2>&1
if [ $? == 0 ]
then
echo " $host mysql login successfully "
exit 0
else
#echo " $host mysql login faild"
systemctl stop keepalived.service
exit 2
fi
三、Master-2配置
1、安装与配置Mysql双主模式集群(略);
2、安装Keepalived高可用服务(略);
3、修改Keepalived配置文件并重启
#ConfigurationFile for keepalived
global_defs {
notification_email { ######定义接受邮件的邮箱
wangjj@hrloo.com
}
notification_email_from jiankong@staff.tuge.com ######定义发送邮件的邮箱
smtp_server mail.tuge.com
smtp_connect_timeout 10
}
vrrp_script check_mysql { ######定义监控mysql的脚本
script "/root/check_mysql.sh"
interval 2 ######监控时间间隔
weight 2 ######负载参数
}
vrrp_instance vrrptest { ######定义vrrptest实例
state BACKUP ######服务器状态
interface ens33 ######使用的接口
virtual_router_id 51 ######虚拟路由的标志,一组lvs的虚拟路由标识必须相同,这样才能切换
priority 50 ######服务启动优先级,值越大,优先级越高,BACKUP 不能大于MASTER
advert_int 1 ######服务器之间的存活检查时间
authentication {
auth_type PASS ######认证类型
auth_pass ufsoft ######认证密码,一组lvs 服务器的认证密码必须一致
}
track_script { ######执行监控mysql进程的脚本
check_mysql
}
virtual_ipaddress { ######虚拟IP地址
192.168.1.88
}
}
4、编写Mysql状态监测脚本,同Master-1,略。
chmod +x chk_mysql.sh
[root@DB-Master bin]# ./chk_mysql.sh
mysql login successfully
四、验证配置
确保俩台服务器上的Master均为运行状态;
然后任意终止一台服务器上的MySQL服务。
可以发现基本在3s内可以恢复正常,不影响业务系统的正常使用。