Zabbix HA 概述
Zabbix 高可用为运行Zabbix Server 的服务器提供了针对软件/硬件故障的保护,并允许在软件/硬件维护期间最大限度地减少停机时间。
Zabbix High availability cluster 由多个 zabbix_server 实例或节点组成。
其中每个节点:
- 单独配置(配置文件、脚本、加密、数据导出...)
- 使用相同的数据库
ZABBIX HA 节点状态
- active(活动)
- standby(备用)
- unavailable(不可用)
- stopped(停止)
在同一个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
代码语言:javascript复制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
代码语言:javascript复制zabbix_server -R ha_set_failover_delay=10s
Zabbix HA Runtime control 参数
代码语言:javascript复制#在日志中打印Zabbix HA节点状态
ha_status
#删除指定的高可用HA节点
ha_remove_node=target
#设置HA 故障转移延迟
ha_set_failover_delay=delay
数据库ha_node表
代码语言:javascript复制sudo mysql uzabbix -p -h 192.168.99.185
Zabbix Agent 配置
Zabbix6.0 LTS 高可用Zabbix Agent配置文件中需要指定主机和备机的Zabbix Server 地址用于主备切换后的数据采集;
代码语言:javascript复制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/*.conf
Zabbix HA 切换测试
- 停止服务
ubuntu@node01:~$ sudo systemctl stop zabbix-server
备节点切换为主节点(目测3s左右)
前主节为stopped 状态
启动前主节点的zabbix_server 服务后,节点为standby状态
代码语言:javascript复制ubuntu@node01:~$ sudo systemctl start zabbix-server
2.关闭主机
代码语言:javascript复制ubuntu@node02:~$ sudo systemctl poweroff
节点发生切换(目测3s左右)
Zabbix HA 高可用的实现方式基于数据库实现,前端PHP,NGINX 等组件异常无法实现高可用切换。
当主备节点发生切换后,Zabbix Web 访问需要访问不同节点的IP,目前没有使用虚拟IP方式实现高可用。