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