1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

MGR安装keepalived

安装keepalived

keepalived安装比较简单,有yum源环境的直接yum安装即可,三个节点均安装。默认配置在/etc/keepalived下,日志在/var/log/messsge。

MGR安装keepalived

以下为相关命令:

  • 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

修改默认配置文件:

#ConfigurationFilefor keepalived
#指定mysql服务检测脚本
vrrp_scriptchk_mysql{
  script"/etc/keepalived/scripts/chk_mysql.sh" #脚本路径
  interval2#脚本检测频率
  weight-5#脚本执行返回值=0,优先级不变。!=0时优先级-5
  fall3#如果连续三次检测失败,认为节点服务不可用
  rise2#如果连续2次检查成功则认为节点正常
}
#监测mysql是否是master
vrrp_scriptchk_mysql_master{
  script"/etc/keepalived/scripts/chk_mysql_master.sh"
  interval2
  weight10#脚本执行返回值=0,优先级加10。!=0时优先级不变。
}
vrrp_instanceVI_1{
  stateMASTER#指定实例初始状态,实际的MASTER和BACKUP是选举决定。
  interfaceeth0#指定实例绑定的网卡。
  virtual_router_id88#设置VRID标记(0..255)
  priority100#设置优先级,优先级高的会被竞选为Master
  advert_int1#检查的时间间隔,默认1s
  authentication{#节点间的认证,所有的必须一致
    auth_typePASS
    auth_pass1111
  }
  virtual_ipaddress{
    10.xx.xx.24/24
  }
  track_script{#指定前面脚本的名字
    chk_mysql
    chk_mysql_master
  }
}

三个配置文件的区别只有priority权重,节点1-3分别为100,98,96。通过其中两个脚本判断MySQL状态以及MGR主节点在哪台服务器上,提升权重。权重的提升合理分配,确保三个服务器每台提升权重后,均可以权重最高,实现VIP漂移。

脚本说明

以下是两个脚本的说明:


#脚本一检测MySQL服务的状态
#!/bin/bash
counter=`netstat-tulnp|grep-w:::3306|wc-l`
if [ $counter -eq 0 ];
then
systemctl stop keepalived
fi

#脚本二监控当前节点uuid是否为主节点的uuid,是的话就提升权重,否则权重不变。
#!/bin/bash
source ~/.bash_profile
source /etc/profile
PID1=`mysql-uroot-p1qsx@WAZ -S/home/my3306/run/mysql.sock-e"SELECT*FROMperformance_schema.replication_group_membersWHEREMEMBER_ID=(SELECTVARIABLE_VALUEFROMperformance_schema.global_statusWHEREVARIABLE_NAME=group_replication_primary_member)" 2>/dev/null|awkNR==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|awkNR==2{print}`
RES=$(echo $PID1 | grep "${PID2}")
if [[ ${RES}!="" ]];
then exit 0;
fi
exit 1

我的环境脚本2在判断两个变量是否相同时,没有进入判断逻辑,返回值始终为0,在脚本里添加引用了环境变量,就正常了。

IP漂移验证

三个节点启动keepalived后,检查VIP(24)在1节点(25)上,因为1节点权重最高,并且1节点为主库。当前数据库节点状态:

节点状态

模拟主节点宕机:

模拟宕机

此时检查MGR集群,发现主库是unreachable状态,此时MySQL集群还未发生重新选举主节点。观察VIP,发现已经漂移到节点2上去了,因为此时2节点的权重高,所以在MySQL未选取出新主之前,VIP漂移到了2节点。

漂移至2节点

等MySQL选举完后,观察节点信息发现3节点成为主节点:

3节点成为主节点

随后再观察VIP,发现识别到了新的主节点3节点,并提升了权重,VIP漂移到了3节点上:

漂移至3节点

最终VIP切换成功至主节点宕机后新选取的主节点上。

本文作者:小本本

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

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6548.html