[comment]: # translation:outdated

[comment]: # ({4eeeebad-150822ec})
# 2 Proxy 负载均衡和高可用

[comment]: # ({/4eeeebad-150822ec})

[comment]: # ({5f8e5ae4-9db44722})

#### 概述


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

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

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

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

proxy 状态支持:

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

Proxy负载平衡和高可用性由 [proxy group manager](/manual/concepts/server#server-process-types-and-threads)  进程管理。Proxy 组管理器始终知道哪些其他proxy是健康的或不健康的。

**版本兼容性**

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

[comment]: # ({/5f8e5ae4-9db44722})

[comment]: # ({a3f7898e-1abf84b3})


#### 主机重新分配


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之间分配未分配的主机。

[comment]: # ({/a3f7898e-1abf84b3})

[comment]: # ({f0c8dab3-ffeb9a46})

#### 配置一个Proxy组

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

-   前往: *Administration → Proxy 组*
-   点击 *创建Proxy组*

![](../../../assets/en/manual/distributed_monitoring/proxy_group.png){width="600"}

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

[comment]: # ({/f0c8dab3-ffeb9a46})

[comment]: # ({f4736e78-e520307a})
#### 配置Proxy负载平衡

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

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

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

3. 配置主机由Proxy组（而不是单个Proxy）监控。您可以使用host [mass update](/manual/config/hosts/hostupdate) 将主机从Proxy移动到Proxy组。

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

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

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

[comment]: # ({/f4736e78-e520307a})

[comment]: # ({new-61149717})
##### Testing proxy load balancing

To test proxy load balancing:

1. Configure a proxy group.
2. Make sure that the proxy group has an [online state](/manual/web_interface/frontend_sections/administration/proxy_groups).
3. Make sure that hosts are [monitored by](/manual/config/hosts/host#configuration) a proxy group, not individual proxies (you may use host [mass update](/manual/config/hosts/hostupdate) to move hosts from proxies to the proxy group).
4. Wait a few seconds for the configuration update and host distribution among proxies in the proxy group. Observe the change by refreshing the host list in *Monitoring > Hosts*.

[comment]: # ({/new-61149717})

[comment]: # ({907c85d0-9e4321d3})

##### 限制：

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

[comment]: # ({/907c85d0-9e4321d3})
