是否可以为HAProxy编写自定义路由逻辑? 我需要这样一种方式,每个应用程序服务器最多分配1000个TCP连接,然后只有负载均衡器尝试将下一个TCP请求路由到下一个应用程序服务器。
如果没有HAProxy,如果有任何其他负载平衡器,可以做到这一点,请让我知道。
可以持久性应用于TCP连接。 没有HTTP请求。
谢谢
是的,这是可能的。 你想在你的backend或listen节中的balance first语句。 您还需要为每个后端服务器分配一个maxconn值。
这是一个示例configuration:
listen kumarServer bind *:80 mode tcp balance first default-server maxconn 1000 server kumar1 10.0.1.21 server kumar2 10.0.1.22 server kumar3 10.0.1.23
是的,TCP连接可以有持久性。 但是你仅限于源IP地址。
根据您的评论,您需要监视服务器上的某些参数以决定将哪个服务器负载平衡到客户端,您应该结合使用http-check expect或http-check disable-on-404 option httpchk 。 你也可以使用option lb-agent-chk 。
让我们看看option httpchk和http-check disable-on-404 。 为了使这个工作,您的应用程序应该公开一个简单的状态网页,如果服务器可用于新的连接,则返回HTTP状态200;如果不应该打开新的连接,则返回404。 stick on src将允许已经有活动连接的用户保持他们的连接,并重新连接,如果他们的连接丢失。
listen kumarServer bind *:7000 mode tcp balance first stick on src default-server maxconn 1000 option httpchk http-check disable-on-404 server kumar1 10.0.1.21 check port 80 server kumar2 10.0.1.22 check port 80 server kumar3 10.0.1.23 check port 80
HAproxy的内置负载平衡algorithm没有一个能满足您的使用案例,也没有提供任何方法来创build您自己的自定义algorithm。
在HAproxy中可以做到这一点的唯一方法是修改源代码以提供此function。