对HA Proxy中的TCP服务器使用HTTP运行状况检查

Mic*_*ael 6 haproxy

假设我在localhost:9000上运行tcp服务器,在localhost:8000上运行HTTP服务器.HTTP服务器公开URL"/ healthz",如果tcp服务器正常,则返回200;如果tcp服务器不健康,则返回500.也就是说,执行:

curl localhost:9000/healthz
Run Code Online (Sandbox Code Playgroud)

将返回状态200或状态500,具体取决于tcp服务器的运行状况.

我希望HAProxy使用localhost:8000/healthz作为tcp服务器的运行状况检查.那可能吗?

小智 4

回答这个问题以防有人来这里寻找答案。

我本以为这行不通,因为你混合了 HTTP 和 TCP,但它似乎是可能的。我刚刚用 v1.4.24 进行了测试。技巧是指定一个不同的端口来检查后端的服务器线路。这是适合我的配置片段。

前端 httpfrontend
  绑定*:8080
  模式 http
  选项 httplog
  default_backend http 后端

后端 http 后端
  平衡循环赛
  模式 http
  选项 httplog
  选项 httpclose
  reqadd X-Forwarded-Proto:\ http
  服务器 server1 本地主机:8000

前端 TCP 前端
  绑定*:1080
  TCP模式
  选项 tcplog
  default_backend TCP 后端

后端 TCP 后端
  TCP模式
  选项 tcplog
  # 指定在后端运行的健康检查的格式
  选项 httpchk GET /healthz HTTP/1.0\r\n用户代理:\ LB-Check\ TCP
  # check -> 打开对此服务器的检查
  # port 8000 -> 将检查发送到后端服务器上的端口 8000(而不是 9000)
  # inter 60000 -> 每 60 秒检查一次
  服务器 server1 localhost:9000 检查端口 8000 inter 60000