我有以下配置,它向我的应用程序发送 TCP 运行状况检查(因为最后一行上的
check
):
backend bk_my-service-9801
mode tcp
balance leastconn
server kube_my-service-0 myhost:31801 check ca-file cicada_CA_renew20220113.pem ssl
但是这些 TCP 运行状况检查导致我的访问日志中有 400 个条目:
192.123.4.5 - - [21/Feb/2024:10:13:27 +0000] "-" 400 -
所以我想更新它以发送 HTTP HEAD 请求到 / 而不是 TCP 请求(但仍然使用 tcp-check 而不是 httpchk)。我使用 https://docs.haproxy.org/2.8/configuration.html#4-option%20tcp-check:
中的示例添加了此内容backend bk_my-service-9801
option tcp-check
tcp-check connect
tcp-check send HEAD\ /\ HTTP/1.1\r\n
tcp-check send User-Agent:\ HAProxy\ tcpcheck\r\n
tcp-check send \r\n
tcp-check expect rstring HTTP/1\..\ (2..|3..) comment check\ HTTP\ response
mode tcp
balance leastconn
server kube_my-service-0 myhost:31801 check ca-file cicada_CA_renew20220113.pem ssl
但是收到此错误:
Layer7 invalid response, info: "TCPCHK did not match content (regex) at step 5 comment: check HTTP response", check duration: 0ms. 0 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
即使添加了此内容,我仍然在日志中看到相同的 400 个条目。
你知道我做错了什么吗?
您可以使用 选项 httpchk,正如 @steffen 提到的 http-check connect。
这是一个未经测试的片段
backend bk_my-service-9801
option httpchk
http-check connect
http-check send "HEAD / HTTP/1.1\r\n"
http-check send "User-Agent: HAProxy/tcpcheck\r\n"
http-check send \r\n
http-check expect rstring "HTTP/1\.. (2..|3..)" comment "check HTTP response"
mode tcp
balance leastconn
server kube_my-service-0 myhost:31801 ..more options
一个小建议,为了更好的可读性,请尽可能使用
"
,它在 HAProxy 中的工作原理记录在 引用和转义