1 高可用性

概述

高可用性(HA)通常是关键基础设施的必备要求 这些系统几乎无法承受任何停机时间。因此对于任何可能失效的服务 都必须配置故障转移方案以便在当前服务失效时接管工作

Zabbix提供原生高可用解决方案 该方案易于 设置且不需要任何HA专业知识。原生Zabbix HA 可为Zabbix server提供额外的软件/硬件故障保护层 或减少维护导致的停机时间

在Zabbix高可用模式下 多个Zabbix servers被run为 集群中的节点。当集群中一个Zabbix server处于活动状态时 其他节点处于待命状态 随时准备在必要时接管工作

切换到Zabbix HA无需长期承诺。您可以随时 切换回独立运行模式

另请参阅: 实现细节

启用高可用性

以集群节点启动Zabbix服务器

在服务器configuration中需要配置两个参数以将Zabbix server启动为集群节点:

  • 必须为每个作为HA集群节点的Zabbix server指定HANodeName参数

这是一个唯一节点标识符(例如zabbix-node-01),该服务器将在agent和proxy配置中被引用。如果未指定HANodeName,则服务器将以独立模式启动。

  • 必须为每个节点指定NodeAddress参数

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地址。

Proxy 配置

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
Agent 配置

高可用集群节点(服务器)必须列在 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)

节点状态可通过以下方式监控:

  • Reports高可用性节点
  • System information仪表板组件中
  • 使用服务器的ha_status运行时控制选项(参见 above).

内部监控项zabbix[cluster,discovery,nodes]可用于节点发现,因其返回包含高可用性节点信息的JSON。

禁用高可用性

禁用高可用性集群的步骤:

  • 备份配置文件副本
  • 停止备用节点
  • 从活动主服务器移除HANodeName参数
  • 重启主服务器(将以独立模式启动)

实现细节

高可用性(HA)集群是一项可选解决方案,支持Zabbix server使用。原生HA解决方案设计简洁易用,可跨站点运行,且对Zabbix支持的数据库无特殊要求。用户可根据环境中的高可用性需求,自由选择使用原生Zabbix HA解决方案或第三方HA方案。

该解决方案由多个zabbix_server实例(节点)组成。每个节点具有以下特性:

  • 需单独配置
  • 使用同一数据库
  • 可能处于多种模式:活跃(active)、备用(standby)、不可用(unavailable)、停止(stopped)

同一时间仅允许一个节点处于活跃(工作)状态。备用节点仅运行HA管理器进程,不执行数据采集、处理等常规服务器活动,不监听端口,且保持最小数据库连接数。

活跃节点与备用节点均需每5秒update其最后访问时间。各备用节点会监控活跃节点的最后访问时间,若超过'故障转移延迟(failover delay)'秒数,备用节点将自行切换为活跃节点,并将原活跃节点标记为'不可用的'状态。

活跃节点会持续监控自身数据库连接状态——若连接中断超过failover delay-5秒,必须停止所有处理并切换至备用模式。活跃节点同时监控备用节点状态,若某备用节点的最后访问时间超过'故障转移延迟'秒数,则将该节点标记为'不可用的'状态。

节点设计支持跨Zabbix次要版本兼容。