使用tcp-check检查HTTP连接的HA代理。

问题描述 投票:0回答:1

我正试图用HA Proxy对Atlassian Bitbucket集群进行负载平衡,以便在同一服务器上的相应http状态检查失败时,SSH端点被标记下来。

下面的配置过去工作得很好,但是,自从升级到Bitbucket 6.10.5(它有一个新的嵌入式Tomcat服务器),我现在得到了错误 "Server bitbucket_sshbitbucket1 is DOWN, reason: Layer7无效响应,info: "TCPCHK在步骤7注释:'HTTP状态'时得到一个空的响应"。

如果我 curl http://bitbucket1.mydomain:8200/status响应回来了 {"state":"RUNNING"},和升级前一样。

什么原因会导致空响应?

backend bitbucket_ssh
  mode tcp
  balance roundrobin
  option tcp-check
  tcp-check comment "SSH Check"
  tcp-check connect port 8203
  tcp-check expect rstring ^SSH.*$
  tcp-check comment "HTTP Status"
  tcp-check connect port 8200
  tcp-check send GET\ /status\r\n
  tcp-check expect string RUNNING
  server bitbucket1 bitbucket1.mydomain:8203 check
  server bitbucket2 bitbucket2.mydomain:8203 check
  server bitbucket3 bitbucket3.mydomain:8203 check
http tcp bitbucket haproxy
1个回答
1
投票

似乎新的Tomcat服务器需要一个显式的HTTP1.0连接,并多了一个CR-LF。

改为

tcp-check send GET\ /status\r\n

改为

tcp-check send GET\ /status\ HTTP/1.0\r\n
tcp-check send \r\n

得到了它的运行。

© www.soinside.com 2019 - 2024. All rights reserved.