zabbix监控脑裂

zabbix监控脑裂

脑裂简介

​ 脑裂(Split Brain)是指在分布式系统中,由于网络故障或其他原因导致系统节点之间失去通信,导致节点之间无法协调工作,出现分裂的情况。这种情况下,系统无法保证一致性和可靠性,可能会导致数据冲突、数据丢失或系统崩溃等问题。
​ 脑裂问题通常发生在具有冗余节点的高可用系统中,例如集群、HA(高可用性)系统或分布式数据库系统。当节点之间失去联系时,每个节点可能会认为自己是唯一的正常节点,继续独立地执行任务,这就导致了数据不一致和冲突。

脑裂产生原因

  1. 网络故障:网络是分布式系统节点之间通信的基础,当网络出现故障时,节点之间无法正常通信,导致脑裂问题的发生。网络故障可能包括网络断开、网络延迟、网络拥塞等情况。
  2. 节点故障:分布式系统中的节点可能由于硬件故障、软件故障或其他原因而发生故障,导致节点无法正常工作或无法与其他节点通信。这也会导致脑裂问题的发生。
  3. 节点间消息丢失:在分布式系统中,节点之间通过消息传递进行通信和协调工作。如果由于网络故障或其他原因导致节点之间的消息丢失,就会导致节点无法及时获得其他节点的状态信息,从而产生脑裂问题。
  4. 配置错误:在配置分布式系统时,如果配置错误或不一致,可能会导致节点之间无法正常通信或无法达成共识,从而导致脑裂问题的发生。

脑裂解决方案

  1. 心跳机制:在节点之间建立心跳连接,定期发送心跳信号以检测节点的可用性。如果某个节点长时间未收到其他节点的心跳信号,就可以认为发生了脑裂,并采取相应的处理措施。
  2. 多数投票机制:在多节点系统中,通过多数投票的方式来决定哪个节点是正常节点。只有当大多数节点都认为某个节点是正常的,才能继续执行任务。这样可以避免脑裂问题的发生。
  3. 集群管理软件:使用专门的集群管理软件,如Keepalived、Pacemaker等,来监控和管理集群节点的状态。这些软件可以通过心跳检测、资源管理和故障恢复等机制,自动处理脑裂问题。

环境准备:

主机名ip地址环境说明
controller192.168.200.10zabbix_server
h2(备服务器)192.168.200.20keepalived,haproxy,zabbix_agent
h1(主服务器)192.168.200.40keepalived,haproxy

主备服务器的VIP为:192.168.200.250

zabbix部署

zabbix服务端的部署请参考:zabbix监控部署-CSDN博客

zabbix客户端的部署请参考:zabbix监控配置流程-CSDN博客

zabbix自定义监控请参考:zabbix自定义监控-CSDN博客

zabbix监控keepalived

编写自定义监控脚本

[root@h2 ~]# vim /scripts/keep.sh
[root@h2 ~]# cat /scripts/keep.sh
#!/bin/bash

if [ `ip a show ens33 |grep 192.168.200.250|wc -l` -ne 0 ];then
    echo "0"
else
    echo "1"
fi
[root@h2 ~]# 
[root@h2 ~]# chmod +x /scripts/keep.sh 
[root@h2 ~]# 
[root@h2 ~]# ll /scripts/
total 8
-rwxr-xr-x. 1 root root 107 Oct 16 00:28 keep.sh
-rwxr-xr-x. 1 root root 440 Oct 15 20:29 notify.sh
[root@h2 ~]# 

修改zabbix客户端配置文件,重启服务

[root@h2 ~]# vi /usr/local/etc/zabbix_agentd.conf 
...
### Option: UserParameter
#       User-defined parameter to monitor. There can be several user-defined parameters.
#       Format: UserParameter=<key>,<shell command>
#       See 'zabbix_agentd' directory for examples.
#
# Mandatory: no
# Default:
# UserParameter=
UserParameter=keepalived,/bin/bash /scripts/keep.sh
...
[root@h2 ~]# systemctl restart zabbix_agentd

先将主服务器上的haproxy服务停掉了,让备服务器把VIP抢过来以便后面测试用

[root@h2 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:18:11:8c brd ff:ff:ff:ff:ff:ff
    inet 192.168.200.20/24 brd 192.168.200.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.200.250/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe18:118c/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@h2 ~]# 

在zabbix_server服务器上测试,有结果说明脚本可以正常使用

[root@controller ~]# zabbix_get -s 192.168.200.20 -k keepalived
0
[root@controller ~]# 

访问zabbix网页

由于本人之前添加过主机,在原有的基础上修改一下就行,如果没有主机需要先添加主机再做后面的操作

image-20231016012403671

添加keepalived监控项

image-20231016012747296

监控项添加成功

image-20231016014620767

添加keepalived触发器

添加触发内容,选择报警等级

image-20231016013345157

自定义触发规则,当测试结果等于1时触发报警

image-20231016014031409

点击Add

image-20231016014100176

触发器添加成功

image-20231016014704775

测试

将主服务器上的haproxy服务开启,手动触发报警

[root@h1 ~]# systemctl start haproxy     
[root@h1 ~]# 
[root@h1 ~]# systemctl start keepalived    
[root@h1 ~]# 
[root@h1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:d7:d0:09 brd ff:ff:ff:ff:ff:ff
    inet 192.168.200.40/24 brd 192.168.200.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet 192.168.200.250/32 scope global ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::476a:4ab2:8e04:8416/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@h1 ~]# 

当主服务器开启haproxy服务后,备服务器的VIP已经被主服务器抢了回去,报警就会触发

[root@h2 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:18:11:8c brd ff:ff:ff:ff:ff:ff
    inet 192.168.200.20/24 brd 192.168.200.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe18:118c/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@h2 ~]# 

报警已触发

image-20231016015026829

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这linux不学也罢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值