资讯专栏INFORMATION COLUMN

MGR安装keepalived

IT那活儿 / 1834人阅读
MGR安装keepalived

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!


keepalived安装

安装比较简单,有yum源环境的直接yum安装即可,三个节点均安装。
  • yum -y install keepalived

  • 默认配置在 /etc/keepalived下

  • 日志在 /var/log/messsges
systemctl start keepalived //启动keepalived

systemctl enable keepalived //加入开机启动keepalived

systemctl restart keepalived //重新启动keepalived

systemctl status keepalived //查看keepalived状态
节点信息:
  • 10.xx.xx.25   vip  10.xx.xx.24
  • 10.xx.xx.26
  • 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切换成功至主节点宕机后新选取的主节点上。



本文作者:吴 昊(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129210.html

相关文章

  • keepalived+nginx+tomcat高可用负载均衡

    摘要:前提配置环境变量准备服务器或者虚拟机,以及环境,这个是必须的前提啊,我相信你可以的。关掉主机,主机监控到无后,自动切换 前提-配置java环境变量 准备centos服务器或者虚拟机,以及JAVA环境,这个是必须的前提啊,我相信你可以的。 tomcat # 下载 curl http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.31/bi...

    gougoujiang 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<