Zabbix HA 概述
Zabbix 高可用为运行Zabbix Server 的服务器提供了针对软件/硬件故障的保护,并允许在软件/硬件维护期间最大限度地减少停机时间。
Zabbix High availability cluster 由多个 zabbix_server 实例或节点组成。
其中每个节点:
ZABBIX HA 节点状态
在同一个Zabbix 高可用集群中只能有一个节点处于活动状态。备用节点不进行数据收集、处理或其他常规服务器活动;备节点不监听端口;保持最少的数据库连接。
Zabbix HA切换方式
活动节点和备用节点每 5 秒更新一次它们的最后一次访问时间。每个备用节点监控活动节点的最后访问时间。如果活动节点的最后访问时间超过“故障转移延迟“时间,则备用节点将自己切换为活动节点并将“不可用”状态分配给先前的活动节点。
活动节点监控自己的数据库连接—如果丢失超过故障转移延迟5秒,它必须停止所有处理并切换到备用模式。活动节点还监视备用节点的状态—如果备用节点的最后访问时间超过“故障转移延迟“,则为备用节点分配“不可用”状态。
部署环境
主机 | IP | 描述 |
|---|---|---|
Zabbix-M | 192.168.99.185 | 活动 |
Zabbix-S | 192.168.99.186 | 备用 |
Zabbix-DB | 192.168.99.185 | 数据库 |
启用 Zabbix HA 集群
服务器配置高可用性群集参数,主节点配置如下,备节点修改对应的主机名和IP即可。
sudo vim /etc/zabbix/zabbix_server.conf
DBHost=192.168.99.185
DBName=zabbix
DBUser=zabbix
DBPassword=password
# HANodeName设置为当前节点主机名或者IP地址,需保证同一集群中唯一
HANodeName=Zabbix-M
# NodeAddress设置为节点IP:10051
NodeAddress=192.168.99.185:10051备机节点状态

查看 HA 状态

将 HA 故障转移延迟设置为 10 s
zabbix_server -R ha_set_failover_delay=10sZabbix HA Runtime control 参数
#在日志中打印Zabbix HA节点状态
ha_status
#删除指定的高可用HA节点
ha_remove_node=target
#设置HA 故障转移延迟
ha_set_failover_delay=delay数据库ha_node表
sudo mysql uzabbix -p -h 192.168.99.185

Zabbix Agent 配置
Zabbix6.0 LTS 高可用Zabbix Agent配置文件中需要指定主机和备机的Zabbix Server 地址用于主备切换后的数据采集;
ubuntu@node01:~$ egrep -v "*#|^$" /etc/zabbix/zabbix_agentd.conf
PidFile=/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.99.185,192.168.99.186
ServerActive=192.168.99.185;192.168.99.186
Hostname=Zabbix server M
HostMetadata=Linux
Include=/etc/zabbix/zabbix_agentd.d/*.confZabbix HA 切换测试
ubuntu@node01:~$ sudo systemctl stop zabbix-server备节点切换为主节点(目测3s左右)

前主节为stopped 状态

启动前主节点的zabbix_server 服务后,节点为standby状态
ubuntu@node01:~$ sudo systemctl start zabbix-server
2.关闭主机
ubuntu@node02:~$ sudo systemctl poweroff节点发生切换(目测3s左右)

Zabbix HA 高可用的实现方式基于数据库实现,前端PHP,NGINX 等组件异常无法实现高可用切换。
当主备节点发生切换后,Zabbix Web 访问需要访问不同节点的IP,目前没有使用虚拟IP方式实现高可用。