在 TCP 模式 + “透明客户端 IP” 下与 HAProxy 的连接断开

在 TCP 模式 + “透明客户端 IP” 下与 HAProxy 的连接断开

基本设置

我们在一对 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 设置时,这些问题就消失了。

我们现在正在尝试找出导致这种情况的原因。可能是因为某个大问题(我对此表示怀疑)还是某个地方(哪里?)的配置错误。

任何帮助都将不胜感激。

鲁本

相关内容