高可用性(HA)通常是关键基础设施的必备要求 这些系统几乎无法承受任何停机时间。因此对于任何可能失效的服务 都必须配置故障转移方案以便在当前服务失效时接管工作
Zabbix提供原生高可用解决方案 该方案易于 设置且不需要任何HA专业知识。原生Zabbix HA 可为Zabbix server提供额外的软件/硬件故障保护层 或减少维护导致的停机时间
在Zabbix高可用模式下 多个Zabbix servers被run为 集群中的节点。当集群中一个Zabbix server处于活动状态时 其他节点处于待命状态 随时准备在必要时接管工作
切换到Zabbix HA无需长期承诺。您可以随时 切换回独立运行模式
另请参阅: 实现细节
在服务器configuration中需要配置两个参数以将Zabbix server启动为集群节点:
这是一个唯一节点标识符(例如zabbix-node-01
),该服务器将在agent和proxy配置中被引用。如果未指定HANodeName,则服务器将以独立模式启动。
NodeAddress参数(address:port)将被Zabbix前端用于连接活动服务器节点。NodeAddress必须与相应Zabbix server的IP或FQDN名称匹配。
修改配置文件后重启所有Zabbix servers。它们现在将作为集群节点启动。新的服务器状态可以在Reports → 高可用性节点中查看,也可以通过运行以下命令查看:
zabbix_server -R ha_status
此运行时命令会将当前HA集群状态记录到Zabbix server日志中(以及stdout):
确保前端配置中未定义 Zabbix server 地址:端口(位于前端文件目录的 conf/zabbix.conf.php
中)。
Zabbix前端将通过从Zabbix数据库的nodes表中读取设置来自动检测活动节点。活动节点的节点地址将被用作Zabbix server地址。
HA集群节点(服务器)必须列在被动或主动Zabbix proxy的配置中。
对于被动proxy,节点名称必须列在proxy的Server parameter中, 以逗号分隔。
For an active proxy, the node names must be listed in the Server parameter of the proxy, separated by a semicolon.
Server=zabbix-node-01;zabbix-node-02
高可用集群节点(服务器)必须列在 Zabbix agent 或 Zabbix agent 2 的配置中。
要启用被动检查,节点名称必须列在 Server parameter 中,用逗号分隔。
To enable active checks, the node names must be listed in the ServerActive parameter. Note that for active checks the nodes must be separated by a comma from any other servers, while the nodes themselves must be separated by a semicolon, e.g.:
ServerActive=zabbix-node-01;zabbix-node-02
当主节点停止时,Zabbix将自动故障转移到另一个节点。必须至少有一个节点处于备用状态才能触发故障转移。
故障转移速度有多快?所有节点每5秒update其最后访问时间(若状态变更则包括状态)。因此:
如果主节点正常关闭并成功将其状态报告为"stopped",另一个节点将在5秒内接管。
如果主节点关闭/不可用且无法update其状态,备用节点将等待故障转移延迟 + 5秒后接管
故障转移延迟可配置,支持范围在10秒到15分钟之间(默认1分钟)。要修改故障转移延迟,可以run:
zabbix_server -R ha_set_failover_delay=5m
HA集群的当前状态可通过专用运行时控制选项进行管理:
ha_status
- 在Zabbix server日志(及标准输出)中记录HA集群状态ha_remove_node=target
- 移除由其 <target> - name or ID of the node (name/ID can be obtained from the output of running ha_status), e.g.:标识的HA节点
zabbix_server -R ha_remove_node=zabbix-node-02
注意:active/standby节点不可移除。
ha_set_failover_delay=delay
- 设置HA故障转移延迟(10秒至15分钟之间;时间 suffixes are supported, e.g. 10s, 1m)节点状态可通过以下方式监控:
ha_status
运行时控制选项(参见 above).内部监控项zabbix[cluster,discovery,nodes]
可用于节点发现,因其返回包含高可用性节点信息的JSON。
禁用高可用性集群的步骤:
高可用性(HA)集群是一项可选解决方案,支持Zabbix server使用。原生HA解决方案设计简洁易用,可跨站点运行,且对Zabbix支持的数据库无特殊要求。用户可根据环境中的高可用性需求,自由选择使用原生Zabbix HA解决方案或第三方HA方案。
该解决方案由多个zabbix_server实例(节点)组成。每个节点具有以下特性:
同一时间仅允许一个节点处于活跃(工作)状态。备用节点仅运行HA管理器进程,不执行数据采集、处理等常规服务器活动,不监听端口,且保持最小数据库连接数。
活跃节点与备用节点均需每5秒update其最后访问时间。各备用节点会监控活跃节点的最后访问时间,若超过'故障转移延迟(failover delay)'秒数,备用节点将自行切换为活跃节点,并将原活跃节点标记为'不可用的'状态。
活跃节点会持续监控自身数据库连接状态——若连接中断超过failover delay-5
秒,必须停止所有处理并切换至备用模式。活跃节点同时监控备用节点状态,若某备用节点的最后访问时间超过'故障转移延迟'秒数,则将该节点标记为'不可用的'状态。
节点设计支持跨Zabbix次要版本兼容。