个性化阅读
专注于IT技术分析

NGINX UDP运行状况检查

本文概述

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

我们已经配置了上游服务器组, 用于在流{}上下文中处理UDP网络流量(DNS, RADIUS, Syslog), 例如:

stream {
    #...
    upstream dns_upstream {
        server 192.168.136.130:53;
        server 192.168.136.131:53;
        server 192.168.136.132:53;
    }
    #...
}

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

stream {
    #...
    server {
        listen          53 udp;
        proxy_pass      dns_upstream;
        proxy_timeout   1s;
        proxy_responses 1;
        error_log       logs/dns.log;
    }
    #...
}

被动UDP健康检查

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

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

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

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

upstream dns_upstream {
    server 192.168.136.130:53 fail_timeout=60s;
    server 192.168.136.131:53 fail_timeout=60s;
}

主动UDP运行状况检查

Active Health Checks可以检查更广泛的故障类型, 并且仅适用于Nginx Plus。例如, Nginx Plus不会等待DNS服务器的实际TCP请求停机, 而是会向每个上游服务器发送特殊的运行状况检查请求, 并检查是否满足特定条件。

如果无法建立与服务器的连接, 则运行状况检查将失败, 并且服务器将被视为运行状况不佳。 Nginx Plus不会与不正常的服务器建立代理客户端连接。如果指定了多个运行状况检查, 则任何检查失败都会足以使相应的上游服务器不正常。

要启用主动健康检查:

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

stream {
    #...
    upstream dns_upstream {
        zone   dns_zone 64k;
        server 192.168.136.130:53;
        server 192.168.136.131:53;
        server 192.168.136.132:53;
    }
    #...
}

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

stream {
    #...
    server {
         listen       53 udp;
         proxy_pass   dns_upstream;
         health_check udp;
    }
    #...
}

微调UDP运行状况检查

我们可以通过为health_check指令指定以下给定参数来微调运行状况检查:

interval:定义Nginx Plus在几秒钟内发送健康检查请求的频率(默认值为5秒)。

通过:服务器必须响应几次连续的健康检查才能被视为健康。预设值为1。

失败:服务器必须做出某些连续响应的健康检查才能响应不健康。预设值为1。

server {
    listen       53 udp;
    proxy_pass   dns_upstream;
    health_check interval=20 passes=2 fails=2 udp;
}

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


赞(0)
未经允许不得转载:srcmini » NGINX UDP运行状况检查

评论 抢沙发

评论前必须登录!