当后端关闭时,haproxy 是否缓冲 tcp 请求正文?

Does haproxy buffer tcp request body when backend is down?

我正在使用 haproxy 1.6.4 作为 TCP(不是 HTTP)代理。 我的客户正在发出 TCP 请求。他们不等待任何响应,他们只是发送数据并关闭连接。

当所有后端节点都关闭时,haproxy 的行为如何? 我看到(从客户端的角度来看)haproxy 正在接受传入连接。

Haproxy 统计显示前端状态为 OPEN,他正在接受连接。

前端的会话数和字节数增加,但后端没有增加(他宕机了)。

haproxy 是否缓冲传入的 TCP 请求,并在后端启动后将它们传递给后端? 如果是,是否可以配置此缓冲区大小?数据缓冲的地方(内存,磁盘?)

是否可以在所有后端节点都关闭时关闭前端(不接受传入的 TCP 连接)?

编辑: 当后端启动时,我看到了 * 后端字节数和会话数等于前端会话数 * 但我唯一的后端节点有输入字节数、发烧会话和错误。

因此,在默认配置中似乎没有 tcp 缓冲。 即使所有后端节点都关闭,haproxy 也可以接受数据,但这些数据会丢失。 当没有后端服务器时,我宁愿关闭 tcp 前端——这样客户端连接将被拒绝。这可能吗?

编辑: haproxy 日志是

Jul 15 10:02:32 172.17.0.2 haproxy[1]: 185.130.180.3:11319 [15/Jul/2016:10:02:32.335] tcp-in app/ -1/-1/0 0 SC [=10=]/0/0/0/0 0/0 908

我的日志格式是

%ci:%cp\ [%t]\ %ft\ %b/%s\ %Tw/%Tc/%Tt\ %B\ %ts\ \%ac/%fc/%bc/%sc/%rc\ %sq/%bq\ %U

我从日志中了解到:

我不认为你正在寻找的是可能的。 HAproxy 分别处理连接的两侧(前端、后端)。首先建立传入的 TCP 连接,然后 HAproxy 为其寻找匹配的目的地。