120 秒后 HAProxy 超时

HAProxy timeout after 120 seconds

我使用 HAProxy 做了一个负载均衡器。我的连接最多可能需要 1-4 分钟,因此我将 HAProxy 中的默认超时值增加到 300 秒,如下所示:

global
    daemon
    log 127.0.0.1 local0 notice
    maxconn 2000

defaults
    log     global
    mode    tcp
    option  tcplog
    option  dontlognull
    retries 3
    option redispatch
    timeout connect 300s
    timeout client  300s
    timeout server  300s
    option http-keep-alive

frontend LOAD_BALANCER_TIER
    bind *:80
    default_backend WEB_SERVER_TIER

backend WEB_SERVER_TIER
    balance leastconn
    mode tcp
    server segmentingApi01 some_private_ip:7331 check tcp-ut 300000
    server segmentingApi02 some_private_ip:7331 check tcp-ut 300000
    server segmentingApi03 some_private_ip:7331 check tcp-ut 300000

如您所见,我什至在 server 选项中增加了 TCP 连接。然而,我对负载均衡器的请求恰好在 120 秒后超时。请注意,我认为问题出在负载平衡器上,因为当我直接向服务器 (some_private_ip:7331) 发送请求时,它不会超时。

我想知道是否有人可以帮助我。

首先,我不认为 "redispatch" 和 "http-keep-alive" 在 tcp 模式下工作 - 因为 haproxy 不处理 tcp 模式下的应用程序 (http) 信息。

也许你应该 "option tcpka" 试一试。这确实使 TCP 保持活动状态,因此 OS 不会在没有数据交换时取消连接 - 我猜这是在这里发生的。

您不应将连接超时设置为如此高的值,因为此超时用于与服务器建立初始连接。