NGINX UDP健康检查

2024 年 8 月 29 日 | 阅读 3 分钟

在这里,我们将讨论如何在负载均衡的上游服务器组中为UDP(用户数据报协议)服务器配置不同类型的健康检查。

我们配置了一个处理UDP网络流量(DNS、RADIUS、Syslog)的上游服务器组,在stream { } 语境中,例如

并且我们配置了一个将UDP数据报传递到上游服务器组的服务器。

被动UDP健康检查

Nginx Plus或Nginx开源版本可以将服务器标记为不可用,并停止向其发送UDP数据报一段时间,如果服务器回复错误或超时。

使用上游服务器的max_fails参数设置在特定时间内连续失败的连接尝试次数。(默认值为1)。

时间由fail_timeout参数设置(默认值为10秒)。该参数还设置了在将Nginx设置为不可用之后,Nginx认为服务器不可用的时间量。

因此,如果连接尝试在10秒内至少超时或失败一次,Nginx会将服务器标记为不可用10秒。以下示例显示了如何将这些参数设置为在60秒内出现两次失败。

主动UDP健康检查

主动健康检查允许检查更广泛的故障类型,并且仅适用于Nginx Plus。例如,Nginx Plus不会等待来自DNS服务器的实际TCP请求,而是会向每个上游服务器发送特殊的健康检查请求,并检查是否符合某些条件的响应。

如果无法建立与服务器的连接,则健康检查失败,并且该服务器被认为是不健康的。Nginx Plus不会对不健康的服务器进行代理客户端连接。如果指定了多个健康检查,则任何一个检查的失败就足以认为相应上游服务器不健康。

要启用主动健康检查

1. 在上游组中,使用zone指令定义一个共享内存区域 - Nginx Plus工作进程在其中共享有关计数器和连接的状态信息。在zone指令中,指定zone名称和zone大小。(这里,dns_zone是zone名称,64k是zone大小)。

2. 在将流量转发到上游组的服务器块(通过proxy_pass)中,为health_check指令指定UDP参数。

微调UDP健康检查

我们可以通过为health_check指令指定以下给定的参数来微调健康检查

interval: 它定义了Nginx Plus每隔多少秒发送健康检查请求(默认为5秒)。

passes: 服务器必须响应的连续健康检查次数才能被认为是健康的。默认值为1。

fails: 服务器必须未响应的连续健康检查次数才能被认为是不健康的。默认值为1。

在上面的示例中,UDP健康检查之间的时间增加到20秒。服务器在连续两次健康检查失败后被认为是不健康的,并且服务器需要通过连续两次检查才能再次被认为是健康的。


下一主题#