我使用HAProxy制作了一个负载平衡器。我的连接最多可能需要1-4分钟,因此我将HAProxy中的默认超时值增加到300s,如下所示:
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
)时,它不会超时。
我想知道是否有人可以帮助我。
答案 0 :(得分:1)
首先,我不认为“ redispatch”和“ http-keep-alive”在tcp模式下有效-因为haproxy不能在tcp模式下处理应用程序(http)信息。
也许您应该尝试“选项tcpka”。 TCP确实可以保持活动状态,因此在没有数据交换时操作系统不会取消连接-我猜这是在发生这种情况。
您不应将连接超时设置为如此高的值,因为该超时是用于与服务器的初始连接。