http - HA 代理使用 tcp-check 进行 HTTP 连接
问题描述
我正在尝试使用 HA 代理对 Atlassian Bitbucket 集群进行负载平衡,以便在同一服务器上相应的 http 状态检查失败时标记 SSH 端点。
下面的配置过去可以正常工作,但是自从升级到 Bitbucket 6.10.5(具有新的嵌入式 Tomcat 服务器)后,我现在收到错误“服务器 bitbucket_ssh/bitbucket1 已关闭,原因:Layer7 无效响应,信息:” TCPCHK 在第 7 步评论中得到一个空响应:“HTTP 状态””。
如果 I 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
解决方案
似乎较新的 Tomcat 服务器需要一个带有额外 CR-LF 的显式 HTTP/1.0 连接。
改变:
tcp-check send GET\ /status\r\n
至
tcp-check send GET\ /status\ HTTP/1.0\r\n
tcp-check send \r\n
让它运行。
推荐阅读
- javascript - Javascript随机不加载
- c# - 用于从另一个表中选择 1 个表和 1 个列(与表 1 中的名称相同)中的所有内容的 SQL 查询
- ios - 使用 AudioKit 实现立体声脉冲响应的实时音频卷积
- javascript - Express-js - 我无法让 express.static(__dirname.. 工作
- mysql - 在 MySQL 中按多个时间戳排序
- c# - 浏览器检测扩展类型 C# 的差异
- reactjs - 通过反应获取 cookie
- regex - 按组匹配的正则表达式
- java - Apache Kafka Streams API 或生产者/消费者 API
- nginx - 虚拟机上 NGINX 中的“未知“mage_run_code”变量错误”