![在 TCP 模式 + “透明客户端 IP” 下与 HAProxy 的连接断开](https://linux22.com/image/740542/%E5%9C%A8%20TCP%20%E6%A8%A1%E5%BC%8F%20%2B%20%E2%80%9C%E9%80%8F%E6%98%8E%E5%AE%A2%E6%88%B7%E7%AB%AF%20IP%E2%80%9D%20%E4%B8%8B%E4%B8%8E%20HAProxy%20%E7%9A%84%E8%BF%9E%E6%8E%A5%E6%96%AD%E5%BC%80.png)
基本设置
我们在一对 PFsense 盒子中运行 HAProxy。在前面,我们为一组 IP 地址提供服务,对于每个 IP 地址,我们在后面有一对 SSL 卸载器。
HAProxy 用于在两者之间进行负载平衡。配置大致如下:
frontend FOO_FRONT_80
bind 5.5.5.5:80 name 5.5.5.5:80 transparent
mode tcp
log global
maxconn 10000
timeout client 30000
use_backend FOO_BACK_80
backend FOO_BACK_80
mode tcp
log global
option log-health-checks
balance source
timeout connect 30000
timeout server 30000
retries 3
source ipv4@ usesrc clientip
server FOO_LB_001 10.0.0.21:80 check inter 10000 weight 100
server FOO_LB_002 10.0.0.22:80 check inter 10000 weight 100
这可以同时服务几万个连接。
这是一张图片:
问题
所有常规的 GET 请求都可以顺利通过负载均衡器。但是 POST 请求(任何请求主体大于 50kBytes 的请求)却不行,因为 HAProxy 和后端 Apache 之间的连接显然被切断了。
在实验室环境中,我们无法重现此问题。但在生产中,当我们关闭透明客户端 IP 设置时,这些问题就消失了。
我们现在正在尝试找出导致这种情况的原因。可能是因为某个大问题(我对此表示怀疑)还是某个地方(哪里?)的配置错误。
任何帮助都将不胜感激。
鲁本