我们在tcp模式下使用haproxy进行thrift(rpc)服务器负载平衡。但是,当后端服务器重新启动时,我们遇到了一个问题。
当我们的thrift(rpc)服务器重新启动时,它首先停止侦听haproxy配置为连接的端口,但仍将处理正在运行的请求,直到它们全部完成(正常重启)。
因此,在重新启动期间,仍有通过haproxy从客户端到后端服务器连接的套接字,而后端服务器不接受任何新连接,但是haproxy仍将此后端服务器视为健康,并将调度新连接到此服务器。发送到此服务器的任何新连接都需要很长时间才能连接,然后超时。
有没有办法通知haproxy服务器已经停止监听而不是发送任何连接呢?
我试过以下:
timeout connect
设置为非常低+ redispatch
+ retry 3
option tcp-check
两者都没有解决问题。