proxy_hcheck_module 使用 TCP 方法不起作用

proxy_hcheck_module 使用 TCP 方法不起作用

我正在使用 Apache 2.4.33 的 Windows 版本(必须是 Windows)https://www.apachelounge.com

我已将其配置为负载均衡器,一切似乎都运行正常,直到我尝试添加健康检查。如果我使用 hcmethod=GET,则执行健康检查,一切正常。但如果我设置 hcmethod=TCP,所有检查似乎都失败了。令人惊讶的是,我在 Wireshark 中没有看到任何检查尝试(使用 GET 健康检查时我可以看到它很好)。

这是我在日志中得到的信息

[Wed May 23 15:34:36.554601 2018] [proxy_hcheck:debug] [pid 16700:tid 888] mod_proxy_hcheck.c(820): AH03256: Threaded Health checking http://<ip-anonymized>:6001
[Wed May 23 15:34:36.554601 2018] [proxy:debug] [pid 16700:tid 888] proxy_util.c(2160): AH00942: HCTCP: has acquired connection for (<ip-anonymized>)
[Wed May 23 15:34:36.554601 2018] [proxy:debug] [pid 16700:tid 888] proxy_util.c(2175): AH00943: HCTCP: has released connection for (<ip-anonymized>)
[Wed May 23 15:34:36.554601 2018] [proxy_hcheck:debug] [pid 16700:tid 888] mod_proxy_hcheck.c(564): AH03251: Health check TCP Status (-1) for 291afc85400.

这是配置的相关部分:

<Proxy balancer://myset>
    BalancerMember http://<ip-anonymized>:6001 hcmethod=TCP hcinterval=5 hcpasses=2 hcfails=3
    BalancerMember http://<ip-anonymized>:6002 hcmethod=GET hcuri=/<path-anonymized> hcinterval=5
    ProxySet lbmethod=byrequests
</Proxy>

ProxyPass "/" "balancer://myset/"
ProxyPassReverse "/" "balancer://myset/"

<Location "/stats">
    SetHandler balancer-manager
</Location>

6002 的检查按预期工作,所以我假设我已经加载了所有必需的模块(我没有在与此相关的日志文件中看到任何错误)。

我已经在谷歌上搜索过这个问题,并发现了一些可能相关的内容:http://bugs.httpd.apache.narkive.com/tyCY7SPh/bug-61499-new-tcp-healthchecks-failing-falsely-not-actually-checking

不幸的是,我不知道如何使用这个评论(我是 Apache 新手):

您是否可以通过 SetEnvIf 尝试“无代理”变量?

我没有其他线索。

相关内容