2 Proxy 负载均衡 及高可用性
概述
Zabbix proxy 可以组织成 proxy 组,以实现 proxy 负载均衡和高可用性。
proxy 负载均衡和高可用性是指在 proxy 组内的 proxy 之间自动重新分配主机:
- 如果某个 proxy 离线,其主机将被移动到其他 proxy,从而保持较高的 proxy 可用性。
- 如果某个 proxy 的主机数量明显高于或低于其他 proxy,其主机将被移动到其他 proxy,以平衡 proxy 负载。
只有满足以下条件的组内 proxy 之间才能重新分配主机:
- proxy 运行的是 Zabbix 7.0 或更高版本。
- Proxy version 与 Zabbix 服务器版本匹配。 如果使用 Zabbix agent(被动式),proxy 版本必须与 agent 版本匹配。 主动式 agent 只需使用 Zabbix 7.0 或更高版本。
- proxy 组处于在线状态。
- 主机配置为由 proxy 组监控,而不是由单个 proxy 监控。
可以通过分配给 proxy 组的任意主机使用内部检查来监控 proxy 组的运行状况。 但是,要监控组内单个 proxy 的运行状况,请将主机分配给该 proxy;否则,结果可能不一致。
Host redistribution
Proxy 负载均衡和高可用性由Zabbix server通过服务器进程类型与线程管理,该组件持续监控每个proxy 组中所有proxies的状态及其主机分布。
Proxy通过proxy故障转移确保组内高可用性:当proxy离线时,其主机会立即重新分配到其他proxies。 当主机被重新分配给拥有最少主机的proxies时,也会触发Proxy 负载均衡。
此外,当proxy的主机数量与组平均值相差至少10个主机且达到2倍系数时(主机过剩或主机不足),将触发Proxy 负载均衡。 如果失衡状态在宽限期(10×故障转移延迟)后仍然存在,则该proxy 组将进入主机重新分配队列。
proxy 组管理器使用以下逻辑重新分配主机:
- 计算每个proxy的主机平均数量。
- 对于主机过剩的proxies——将过剩的主机移至proxies的未分配池。
- 对于主机不足的proxies——计算达到平衡所需的主机数量。
- 从拥有最多主机的proxies中移除所需数量的主机。
- 将未分配的主机移至拥有最少主机的proxies。
主机重新分配示例:
| proxy上的主机 | 组平均值 | 主机重新分配 |
|---|---|---|
| 100 | 50 | 是 |
| 60 | 50 | 否 |
| 40 | 50 | 否 |
| 25 | 50 | 是 |
| 15 | 5 | 是 |
| 10 | 5 | 否 |
当proxy 组中的主机数量少于10个monitored by时,可能导致组内proxies之间的主机分布不均。
配置 proxy 组
要在 Zabbix 前端中配置 proxy 组:
- 转到 管理 > proxy 组
- 单击 创建 proxy 组

| 参数 | 描述 |
|---|---|
| 名称 | proxy 组的名称。 |
| 故障转移周期 | 在此时间段内,proxy 组中的 proxy 必须与 Zabbix 服务器通信,才能被视为在线(默认值:1m;范围:10s-15m)。如果 proxy 在此时间段内未进行通信,其状态将更改为 离线,并且其主机会立即重新分配给其他 proxy。proxy 负载均衡将在经过该时间段的 10 倍时间后开始。 支持时间后缀(例如 30s、1m)和用户宏。 |
| proxy 最小数量 | 保持proxy 组在线所需的在线 proxy的最小数量(默认值:1;范围:1-1000)。 支持用户宏。 此值应小于组中 proxy 的总数。例如,在包含 10 个 proxy 的组中,将最小数量设置为 10 会导致任意 proxy 发生故障时该组转为离线。请注意,离线组中的在线 proxy 仍会正常运行,但不会进行负载均衡/高可用性处理。 |
| 描述 | proxy 组的描述。 |
| Proxy | 编辑包含 proxy 的组时,显示最多五个 proxy 的列表(根据用户对 proxy 的权限,以链接或纯文本形式显示)。 |
配置 proxy 负载均衡
要使用 proxy 负载均衡,您需要在 Zabbix 前端中配置 proxy 组(参见上文),并确保主机由 proxy 组监控,而不是由单个 proxy 监控(您可以使用主机批量更新,将主机从 proxy 移动到 proxy 组)。
如果使用 Zabbix agent,还需要进行如下配置:
- 对于被动检查,在 Server 参数中列出 proxy 组中的所有 proxy。
- 对于主动检查,建议在 ServerActive 参数中列出 proxy 组中的所有 proxy 或 Zabbix 服务器。 请注意,只有 Zabbix agent 7.0(或更高版本)在主动模式下支持 proxy 组。
如果 ServerActive 参数中仅包含 proxy 组中的一个 proxy(或 Zabbix 服务器),agent 仍然能够连接到正确的 proxy。
当 agent 服务启动并连接到指定的 proxy 后,agent 将接收并缓存该组中所有 proxy 的完整列表及其当前负载。
随后,主动检查将根据 proxy 组中当前的 proxy-主机分配关系,重定向到负责该主机的正确在线 proxy。
如果 Zabbix agent 的 ServerActive 参数中仅指定一个 proxy,而 agent 在该 proxy 离线时启动或重启,可能会导致监控数据丢失。
使用 Zabbix sender 时,数据请求也会根据 proxy 组中当前的 proxy-主机分配关系,重定向到负责该主机的正确在线 proxy。
但是,如果您要从输入文件发送多个主机的值,请使用 -g 选项,以避免将数据发送到错误的 proxy。
Zabbix agent 还必须能够通过防火墙连接到 proxy 组中的所有 proxy。 否则,在重定向或故障转移期间,主动检查可能会挂起或失败。 例如:
- 在主动检查期间,某个 proxy 可能会将 agent 重定向到另一个 proxy。 如果该 proxy 被防火墙阻止,通信将在等待响应时挂起。
- 在没有近期重新平衡的稳定高可用设置中,agent 可能永远不会联系备用 proxy。 如果防火墙规则发生更改且未经过测试,故障转移可能会失败。
测试 proxy 负载均衡
要测试 proxy 负载均衡:
- 配置 proxy 组。
- 确保 proxy 组处于在线状态。
- 确保主机由 proxy 组监控,而不是由单个 proxy 监控(您可以使用主机批量更新将主机从 proxy 移动到 proxy 组)。
- 等待几秒钟,以便更新配置并在 proxy 组中的 proxy 之间分配主机。
在管理 > Proxy中刷新主机列表,观察变化。
重要说明
- SNMP 陷阱不受 proxy group 中的 proxy 支持。
- 依赖外部配置的检查(例如用于外部检查的脚本,或用于数据库检查的 ODBC 配置)必须在 proxy group 中的所有 proxy 上使用相同的配置。
- 数据库检查需要对数据库对象/服务器具有扩展权限。
- 由 proxy group 监控的 VMware 主机会随机分配到该组中的各个 proxy。 这会导致每个 proxy 缓存所有 VMware 数据,从而增加 vCenter 的负载。
- 根据 proxy group 中某个 proxy 的自动注册数据创建的主机会被设置为由该 proxy group 监控。 但是,根据 proxy group 中某个 proxy 的网络发现数据创建的主机会被设置为由该 proxy 监控。