当后端关闭时haproxy缓冲tcp请求体吗?

时间:2016-07-15 08:59:24

标签: haproxy tcp-ip

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

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

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

前端的会话数和字节数增加,但不是后端(他是DOWN)。

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 \ 0/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

我从日志中了解到:

  • 没有后端服务器
  • 终止状态SC转换为

    S:TCP会话被服务器意外中止,或者             服务器明确拒绝了它。 C:代理正在等待CONNECTION建立         服务器。服务器最多可能已经注意到连接尝试。

1 个答案:

答案 0 :(得分:1)

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