首页 文章

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

提问于
浏览
1

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

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

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

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

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

当所有后端节点都处于DOWN状态时,是否可以关闭前端(不接受传入的TCP连接)?

编辑:当后端开始时,我看到后端以字节为单位,会话等于前端会话数但我的唯一后端节点有发烧字节数,发烧会话并有错误 .

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

编辑:haproxy日志是

7月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:代理正在等待在服务器上 Build CONNECTION . 服务器最多可能已经注意到连接尝试 .

1 回答

  • 1

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

相关问题