2022 Zabbix中国峰会
2022 Zabbix中国峰会

2 Proxy 负载均衡和高可用

概述

Proxy 负载平衡允许通过Proxy组监控主机,并自动分配主机到不同的Proxy,以确保Proxy的高可用性。

如果Proxy组中的某个Proxy下线,其管理的主机将立即分配给其他具有最少已分配主机的Proxy。或者,如果某个Proxy的主机数量远高于或远低于组内平均值,系统将触发重新平衡,以均匀分配主机。

主机重新分配仅在在线Proxy组中进行。Proxy组被视为“在线”,如果配置的最小Proxy数目处于在线状态(不是离线或未知状态)。

在线proxies的最小数量应该少于Proxy组中的总Proxy数。在一个拥有 10 个Proxy的组中,将最小在线proxies数设置为 10 会导致,如果一个Proxy失败,整个组将全部下线的情况发生。设置为需要 6 个在线Proxy更为合适。这样可以支持 4 个不健康的Proxy。

proxy 状态支持:

  • 在线 - 通信间隔时间在这个 故障切换 时间内 (被动Proxy响应Server请求,主动Proxy向Server发送请求);
  • 离线 - 如果在故障切换延迟期间没有与其通信;
  • 未知 - 在Proxy创建或服务器启动后。 您可以使用 zabbbix[proxy group,<name>,state] 内部监控项监视Proxy组的状态。 .

Proxy负载平衡和高可用性由 proxy group manager 进程管理。Proxy 组管理器始终知道哪些其他proxy是健康的或不健康的。

版本兼容性

  • Zabbix agents 7.0 及更高版本才可以在主动模式下与Proxy组配合使用;
  • 在升级之前,Zabbix 7.0 之前版本的Proxy及其监控的主机被排除在重新平衡操作之外。

主机重新分配

Zabbix server 检查主机分配给Proxy的平衡情况。如果出现以下情况,则认为组处于“不平衡”状态:

  • 主机过多 - 一个Proxy的主机数远高于组的平均值;
  • 主机不足 - 一个Proxy的主机数远低于组的平均值。

如果某Proxy的主机数相对于组平均值的偏差超过10个,并且是2的因数,那么服务器会标记该组在宽限期(10 x 故障切换延迟)后进行主机重新分配,如果平衡没有恢复的话。

以下表格使用示例数字说明了何时会触发主机重新分配:

Proxy上的主机数量 组平均值 主机是否重新分配
>100 50 Yes
60 50 No
40 50 No
<25 50 Yes
>15 5 Yes
10 5 No

Proxy组管理器将按以下方式重新分配Proxy组中的主机:

  • 计算每个Proxy的平均主机数量;
  • 对于主机过多的Proxy - 将多余的主机移动到未分配的Proxy;
  • 对于主机不足的Proxy - 计算平衡Proxy所需的主机数量;
  • 从主机最多的Proxy中移除所需数量的主机;
  • 在主机最少的Proxy之间分配未分配的主机。

配置Proxy负载平衡

要为监视主机配置Proxy负载平衡,请执行以下操作: 1.创建一个Proxy组(请参阅下面的“配置Proxy组”)。 对于被动检查,必须在Proxy的“Server”参数中列出组的所有agents。 将组的所有Proxy添加到受监控主机的ServerActive agent参数(用分号分隔)是有益的,但不是强制性的。主动模式Proxy可以在ServerActive字段中有一个Proxy,Proxy负载平衡将起作用。当Proxy服务启动时,Proxy将收到所有Zabbix Proxy的所有IP地址的完整列表,加载并保存到内存中。主动检查(以及Zabbix发件人数据请求)将根据当前Proxy主机分配重定向到主机的正确在线Proxy。

如果在特定Proxy脱机时启动/重新启动Proxy,则ServerActive字段中只有一个Proxy可能会导致监控数据丢失。

  1. 确认 proxy 组是在线的状态。

  2. 配置主机由Proxy组(而不是单个Proxy)监控。您可以使用host mass update 将主机从Proxy移动到Proxy组。

由单个Proxy监控的主机(即使该Proxy是Proxy组的一部分)根本不涉及负载平衡/高可用性。

  1. 等待几秒钟,等待配置更新和Proxy组中Proxy之间的主机分发。通过刷新监控->主机中的主机列表来观察更改。

当根据属于Proxy组的Proxy的自动注册/网络发现数据创建主机时,此主机将设置为由该Proxy组监控。

限制:
  • Proxy组中的Proxy不支持 SNMP 陷阱。
  • 取决于外部配置的检查必须在Proxy组中的所有Proxy具有相同的配置。这包括:
    • 外部检查 - 脚本;
    • 数据库检查 - ODBC 配置。
  • 使用“数据库监控”项目时,DB 对象/服务器必须具有扩展权限。
  • 在Proxy组中监视 VMware 主机时,将在组内的Proxy之间随机分配 VMware 主机,并导致每个Proxy缓存所有 VMware 数据,从而对 vCenter 造成额外负载。
可能的防火墙问题

Agents 必须始终在防火墙级别允许访问所有Proxy。考虑以下几种情况:

  • 在 Zabbix agent 的主动检查中,在Proxy启动时,第一个Proxy响应并重定向到另一个Proxy。由于防火墙问题,另一个Proxy无法访问,通信停止在等待另一个Proxy响应的状态。这种情况的根本原因是第一个Proxy确信另一个Proxy是健康的。如果第一个Proxy失败,则它将尝试连接“ServerActive”参数中配置的不同地址,这不会成为问题。

  • HA 设置已经稳定运行了多个月。主机重新平衡从未发生过;也不需要。Proxy不需要验证到任何其他Proxy的“备用”通道。在故障转移场景中,可能因为半年前防火墙被修改而导致失败。

配置一个Proxy组

去配置一个Proxy组在Zabbix前端:

  • 前往: Administration → Proxy 组
  • 点击 创建Proxy组

参数 描述
Name 输入Proxy组名称。
Failover period 输入故障切换执行前的时间段(默认为 1 分钟;允许范围为 10 秒至 15 分钟)。
支持时间后缀(例如,30s,1m)。
支持用户宏。
Minimum number of proxies 输入使该组在线所需的最小在线Proxy数量(默认为 1;允许范围为 1 到 1000)。
支持用户宏。
Description 输入Proxy组描述。
Proxies Proxy组中的Proxy列表。最多显示五个Proxy(作为链接或普通文本显示,取决于对Proxy的权限)。
编辑现有代理组时显示此列表,如果组中至少有一个Proxy。