我将 Nginx 配置为四台服务器之间的 UDP 负载均衡器,配置如下:
溪流 { 服务器 { 听7004 udp; #UDP 流量将被转发到“server_list”上游组 代理服务器列表; 代理响应 0; } 服务器 { 监听1813 udp; #UDP 流量将被转发到“server_list_5g”上游组 代理服务器列表_5g; 代理响应 0; } 上游服务器列表 { 服务器 192.168.1.2:7004; 服务器 192.168.1.3:7004; 服务器 192.168.1.4:7004; 服务器 192.168.1.5:7004; } 上游服务器列表_5g { 服务器 192.168.1.2:1813; 服务器 192.168.1.3:1813; 服务器 192.168.1.4:1813; 服务器 192.168.1.5:1813; } }
我想在发送流量之前检查目标上运行的特定进程,以避免将流量发送到无法处理的目的地。我该如何实现?
答案1
显然,使用 UDP,您不能使用 nginx 的内置健康监控 - 或者任何依赖于双向流的东西,而不知道协议(并且协议是否总是会做出回复)。
Nginx plus(即 $$$ 版本)具有 ngx_http_api_module,它提供了动态重新配置 nginx(包括后端)的功能。如果您使用的是开源版本,那么您将不得不付出更多努力。快速谷歌搜索后,出现了重排它似乎提供了您需要的后端成员资格功能 - 但我无法评论其兼容性/稳定性。可能还有其他 nginx 解决方案。
如果我接到这个任务,我会花一些时间寻找除了 nginx 之外还有什么可用的。虽然这在紧急情况下很方便,但这并不是 nginx 的核心重点。