Nginx 在转发流量之前检查目标上运行的进程

Nginx 在转发流量之前检查目标上运行的进程

我将 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 的核心重点。

相关内容