keepalived 脑裂 & zabbix监控keepalived

keepalived 脑裂 & zabbix监控keepalived

1. 脑裂概念

脑裂是指当节点之间的通信出现问题时,可能导致两个节点同时宣称自己是VIP的拥有者,进而导致两个节点同时提供相同的服务。这种情况下,系统可能会出现故障和不一致性,因为两个节点可能在没有协调的情况下同时处理请求。两个节点上的HA软件像“裂脑人”一样,争抢“共享资源”、争起“应用服务”,就会发生严重后果——或者共享资源被瓜分、2边“服务”都起不来了;或者2边“服务”都起来了,但同时读写“共享存储”,导致数据损坏(常见如数据库轮询着的联机日志出错)。

1.1 脑裂产生原因

一般来说,脑裂的发生,有以下几种原因:

  • 高可用服务器对之间心跳线链路发生故障,导致无法正常通信
    • 因心跳线坏了(包括断了,老化)
    • 因网卡及相关驱动坏了,ip配置及冲突问题(网卡直连)
    • 因心跳线间连接的设备故障(网卡及交换机)
    • 因仲裁的机器出问题(采用仲裁的方案)
  • 高可用服务器上开启了 iptables防火墙阻挡了心跳消息传输
  • 高可用服务器上心跳网卡地址等信息配置不正确,导致发送心跳失败
  • 其他服务配置不当等原因,如心跳方式不同,心跳广插冲突、软件Bug等

1.2 脑裂解决方案

  • 心跳检测机制:确保在Keepalived中正确配置和调整心跳检测机制。这包括设置适当的心跳间隔和超时时间,以确保节点之间的通信正常。通过定期发送心跳消息并监测对方节点的回应,可以及时检测到通信问题并触发故障转移。
  • 多数投票机制:在配置Keepalived时,可以设置多数投票机制(Majority Voting)。这意味著只有当大多数节点认为某个节点失效时,才会进行故障转移。通过这种方式,可以防止脑裂问题的发生,因为只有大多数节点都认为某个节点失效时,才会切换服务。
  • 快速故障检测和切换:确保Keepalived配置中的故障检测和切换时间尽可能快速。较短的故障检测和切换时间可以减少脑裂问题的持续时间,并使故障转移更迅速地发生。这有助于降低系统中服务中断的风险。
  • 日志和监控:通过启用详细的日志记录和监控机制,可以及时发现和诊断Keepalived中的问题。仔细监视各个节点的状态和行为,可以帮助及早发现脑裂问题并採取相应的措施。

注意:

Keepalived配置里同一 VRRP实例如果 virtual_router_id两端参数配置不一致也会导致裂脑问题发生。

2. zabbix监控脑裂

主机名ipkeepalived系统版本zabbix
zabbix_server192.168.234.111CentOS8zabbix_server
ha1192.168.234.22主服务器CentOS8
ha2192.168.234.123备服务器CentOS8zabbix_agent

vip为192.168.234.234

注:zabbix监控服务部署详细步骤见 Zabbix监控服务部署zabbix监控agent部署步骤zabbix监控部署之自定义监控在此不多做赘述。

监控之需监控备服务器上有无vip

2.1 在备服务器上安装zabbix_agent

2.2 在备服务器上编写脚本
[root@ha2 ~]# cd /kiwi_scripts/
[root@ha2 kiwi_scripts]# vim check_keepalived.sh
[root@ha2 kiwi_scripts]# cat check_keepalived.sh 
#!/bin/bash

if [ `ip a show ens160 |grep 192.168.234.234|wc -l` -ne 0 ]
then
    echo 0
else
    echo 1
fi
[root@ha2 kiwi_scripts]# 
[root@ha2 kiwi_scripts]# chmod +x check_keepalived.sh 

## 结果为1就是服务进程有问题,0则没有问题
2.3 修改zabbix配置文件

让脚本绑定一个key

//在zabbix_agent端

[root@ha2 kiwi_scripts]# vim /usr/local/etc/zabbix_agentd.conf
··························略
# UserParameter=
UserParameter=check_keepalived,/bin/bash /kiwi_scripts/check_keepalived.sh   ## 添加这一行
··························略

//重启服务
[root@ha2 kiwi_scripts]# systemctl restart zabbix_agentd
[root@ha2 kiwi_scripts]# ip a show ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:44:e4:20 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.234.123/24 brd 192.168.234.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet 192.168.234.234/32 scope global ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe44:e420/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@ha2 kiwi_scripts]# 

//在zabbix_server测试
[root@zabbix_server ~]# zabbix_get -s 192.168.234.123 -k check_keepalived
1
//可以正常使用
2.4 添加监控项

image-20231013165326233

2.5 添加触发器

image-20231013165244395

2.6 验证
[root@ha2 kiwi_scripts]# ip a show ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:44:e4:20 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.234.123/24 brd 192.168.234.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet 192.168.234.234/32 scope global ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe44:e420/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@ha2 kiwi_scripts]# 

可以看到已经成功报警

image-20231013165406207

部署完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值