haproxy 服务器检查 %

haproxy 服务器检查 %

我想将请求负载平衡到三个后端上的同一端口。我有大约 20 个端口需要转发,所以我需要一种方法来使其动态化。这是为了为多个域平衡我们的生产、预生产、质量保证、开发、单元测试服务器。所以,是的,我可以使用 20 个后端、20 个 acl 和 20 个 use_backends 来实现这一点。但后来就忘了它吧。太麻烦了。

因此,我想使用一个变量来表示“请求的端口”。我尝试了 %[dst_port],因为这似乎在其他情况下有效。

我在某处读过 Willy T 的一个答案,如果省略端口,那么它只会转发到同一个端口。

但是它仍然需要服务端口或检查端口,除非我绑定到 20 个不同的前端,否则我事先不知道。

错误:服务器 X 没有服务端口,没有检查端口,也没有带端口信息的 tcp_check 规则“connect”。检查已被禁用。

例如。

listen load-balance
     bind :28080 
     bind :42080 
     bind :48080 
     bind :58080 
     bind :38080 
     mode http
     balance roundrobin
     option httpchk HEAD / HTTP/1.1\r\nHost:\ localhost
     server X 10.20.30.1 check %[dst_port]
     server Y 10.20.30.2 check %[dst_port]
     server Z 10.20.30.3 check %[dst_port]

你看,它需要一个变量。这可能吗?

(我的问题更加复杂,因为从技术上讲,理想情况下我需要一张从目标港口到检查港口的地图,但如果我能做到这个动态港口技巧,至少,现在就足够了。)

答案1

您需要使用以下配置进行配置

 server X 10.20.30.1 check port 80
 server Y 10.20.30.2 check port 80
 server Z 10.20.30.3 check port 80

您可以只设置一个端口来检查健康状况,或者使用“external-check 命令”使用自己的脚本检查您的服务器......

相关内容