HAProxy 创建自定义路由逻辑

HAProxy 创建自定义路由逻辑

是否可以为 HAProxy 编写自定义路由逻辑。我需要这样一种方式,即为每个应用程序服务器分配最多 1000 个 TCP 连接,然后负载均衡器才应尝试将下一个 TCP 请求路由到下一个应用程序服务器。

如果不能使用 HAProxy,是否有其他可以做到的负载均衡器,请告诉我。

持久性是否可以应用于 TCP 连接。不会有 HTTP 请求。

谢谢

答案1

是的,这是可能的。您需要balance firstbackendorlisten部分中使用该语句。您还需要maxconn为每个后端服务器分配一个值。

以下是一个示例配置:

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 地址。


根据您的评论,您需要监视服务器上的某些参数,以决定将客户端负载平衡到哪个服务器,您应该option httpchk结合http-check expect或来查看http-check disable-on-404。您也可以使用option lb-agent-chk

让我们看看option httpchkhttp-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

答案2

HAproxy 的内置负载平衡算法均不能满足您的使用情况,也不提供任何创建您自己的自定义算法的方法。

在 HAproxy 中能够执行此操作的唯一方法是修改源以提供此功能。

相关内容