点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!
keepalived安装
yum -y install keepalived
默认配置在 /etc/keepalived下
systemctl start keepalived //启动keepalived
systemctl enable keepalived //加入开机启动keepalived
systemctl restart keepalived //重新启动keepalived
systemctl status keepalived //查看keepalived状态
10.xx.xx.30
配置keepalived
修改默认配置文件:
! Configuration File for keepalived
#指定mysql服务检测脚本
vrrp_script chk_mysql {
script "/etc/keepalived/scripts/chk_mysql.sh" #脚本路径
interval 2 #脚本检测频率
weight -5 #脚本执行返回值 =0 ,优先级不变。!=0 时优先级 -5
fall 3 #如果连续三次检测失败,认为节点服务不可用
rise 2 #如果连续2次检查成功则认为节点正常
}
#监测mysql 是否是master
vrrp_script chk_mysql_master {
script "/etc/keepalived/scripts/chk_mysql_master.sh"
interval 2
weight 10 #脚本执行返回值 =0 ,优先级加 10。!=0 时优先级不变。
}
vrrp_instance VI_1 {
state MASTER #指定实例初始状态,实际的MASTER和BACKUP是选举决定。
interface eth0 #指定实例绑定的网卡。
virtual_router_id 88 #设置VRID标记(0..255)
priority 100 #设置优先级,优先级高的会被竞选为Master
advert_int 1 #检查的时间间隔,默认1s
authentication { #节点间的认证,所有的必须一致
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.xx.xx.24/24
}
track_script { #指定前面脚本的名字
chk_mysql
chk_mysql_master
}
}
三个配置文件的区别只有priority 权重,节点1-3分别为100,98,96。通过其中两个脚本判断MySQL状态以及MGR主节点在哪台服务器上,提升权重。权重的提升合理分配,确保三个服务器每台提升权重后,均可以权重最高,实现VIP漂移。
脚本一:
#!/bin/bash
counter=`netstat -tulnp |grep -w :::3306 |wc -l`
if [ $counter -eq 0 ]; then
systemctl stop keepalived
fi
监测MySQL服务的状态。
脚本二:
#!/bin/bash
source ~/.bash_profile
source /etc/profile
PID1=`mysql -uroot -p1qsx@WAZ -S /home/my3306/run/mysql.sock -e "SELECT * FROM performance_schema.replication_group_members WHERE MEMBER_ID = (SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME= group_replication_primary_member)" 2>/dev/null |awk NR==2{print}|awk -F" " {print $2}`
PID2=`mysql -uroot -p1qsx@WAZ -S /home/my3306/run/mysql.sock -e "select @@global.server_uuid" 2>/dev/null |awk NR==2{print}`
RES=$(echo $PID1 | grep "${PID2}")
if [[ ${RES} != "" ]]; then exit 0; fi
exit 1
监控当前节点uuid是否为主节点的uuid,是的话就提升权重,否则权重不变。
我的环境脚本2在判断两个变量是否相同时,没有进入判断逻辑,返回值始终为0,在脚本里添加引用了环境变量,就正常了。
脚本均需要添加执行权限:
chmod +x chk_mysql*
验证IP漂移
三个节点启动keepalived后,检查VIP(24)在1节点(25)上,因为1节点权重最高,并且1节点为主库。
当前数据库节点状态:
模拟主节点宕机:
此时检查MGR集群,发现主库是unreachable状态,此时MySQL集群还未发生重新选举主节点。
观察VIP,发现已经漂移到节点2上去了,因为此时2节点的权重高,所以在MySQL未选取出新主之前,VIP漂移到了2节点。
等MySQL选举完后,观察节点信息发现3节点成为主节点:
随后再观察VIP,发现识别到了新的主节点3节点,并提升了权重,VIP漂移到了3节点上:
最终VIP切换成功至主节点宕机后新选取的主节点上。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/129210.html
摘要:前提配置环境变量准备服务器或者虚拟机,以及环境,这个是必须的前提啊,我相信你可以的。关掉主机,主机监控到无后,自动切换 前提-配置java环境变量 准备centos服务器或者虚拟机,以及JAVA环境,这个是必须的前提啊,我相信你可以的。 tomcat # 下载 curl http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.31/bi...
阅读 1359·2023-01-11 13:20
阅读 1708·2023-01-11 13:20
阅读 1215·2023-01-11 13:20
阅读 1909·2023-01-11 13:20
阅读 4166·2023-01-11 13:20
阅读 2761·2023-01-11 13:20
阅读 1402·2023-01-11 13:20
阅读 3674·2023-01-11 13:20