0
点赞
收藏
分享

微信扫一扫

案例 | 某电商如何构建Zabbix高可用监控平台?

静鸡鸡的JC 2021-09-19 阅读 74
日记本

编者荐语:

【背景】由于公司业务环境Zabbix监控平台架构,无论在性能、稳定性还是版本升级方面都存在很大困难。本文将介绍通过Centos7.7 + Keepalive + Zabbix + DRBD + Heartbeat + MySQL + ES-Cluster 方案,来构建Zabbix的高可用集群环境。

 01 方案架构

方案:Centos7.7+Keepalive+Zabbix+DRBD+Heartbeat+MySQL+ES-Cluster 

 02 环境初始化

环境信息

初始化

2节点ssh互通做免密认证

 Zabbix-HA1节点执行ssh-keygen  -q -t rsa -N '' -f ~/.ssh/id_rsa ssh-copy-id -p36091 root@192.168.8.187

双节点做基于主机名解析,分别执行

         cat > /etc/hosts << EOF 

            192.168.8.186 Zabbix-HA1 

            192.168.8.187 Zabbix-HA2 

          EOF

所有节点都关闭swap

         swapoff -a # 临时手动关闭

         永久关闭swap ,注释掉/ etc/fstab 中swap ,重启机器

网络环境设定

          每个主机分别带有两块以太网卡,其中一块用于网络通信,另一块用于心跳功能。

          两个节点的网络设置如下:

           Zabbix-HA1 主节点

           eth0: 192.168.8.86 255.255.0.0    #对外IP地址

           eth1: 172.16.38.1  255.255.255.0 #HA心跳使用地址

           Zabbix-HA2 从节点

           eth0: 192.168.8.86 255.255.0.0    #对外IP地址

           eth1: 172.16.38.2.  255.255.255.0 #HA心跳使用地址

配置heartbeat 防火墙规则

时间同步时间同步(zabbix-ha1 和zabbix-ha2 都要执行) 

 03 安装配置DRBD

DRBD安装

节点配置

 04 安装配置Heartbeat

安装Heartbeat

节点配置Heartbeat

05 配置MySQL高可用

06 配置数据库双主同步

07 测试验证

测试HA架构方案-服务主节点VIP漂移

        测试Zabbix-Server + DRBD +heartbeat HA

        systemctl restart heartbeat

        #观察从节点是否接管Zabbix-Server VIP地址,并且服务是否正常运行

       注:Zabbix-HA1节点第1次切换到Zabbix-HA2节点后,zabbix-server没有正常启动,需systemctl restart zabbix-server,后续切换就能自动启动。

测试mysql + keepalived HA

        systemctl stop mysql

        #观察从节点是否接管MySQL VIP地址,并且服务是否正常运行

        注:故障节点服务切换后,修复该节点服务后,需手动启动keepalived服务来继续监听对方节点,形成HA机制

08 完善方案


08 总结

优点:

安全性高、稳定性高、可用性高,出现故障自动切换

缺点:

只有一台服务器提供服务,成本相对较高,不方便扩展,可能会发生脑裂

当zabbix 服务挂掉或者不可用的情况下不能进行自动切换,需要通过的脚本实现(比如shell脚本监测到master 的zabbix 不可用就将主节点上的heartbeat 停掉,这样就会切换到从节点去)

危险操作:

不能在主从节点停止drbd服务, systemctl stop drbd会造成DRBD脑裂,主从节点数据不一致

手动启停MySQL服务只能通过systemctl statt/stop mysql操作,禁止使用/etc/init.d/mysqld stop/start操作,防止MySQL PID异常,服务不可用

09 FAQ

故障现象:当DRBD出现脑裂后,会导致drbd 主从两边的磁盘数据不一致,从节点上切换成secondary ,并放弃该资源的数据从节点执行以下命令:

        drbdadm secondary r0

        drbdadm --discard-my-data connect r0

故障现象:primary 主节点重新连接secondary (如果这个节点当前的连接状态为WFConnection 的话)主节点执行以下命令:drbdadm connect r0

故障现象:# drbdadm create-md r0 'r0' not defined in your config (for this host).原因:

        A. 主机名与资源池(*.res) 中配置定义主机名不一致导致

        B. 资源池(*.res) 中配置定义资源池名字与资源池(*.res) 不一致导致 

        解决方法:统一名称或者主机名即可。

举报

相关推荐

0 条评论