我正在使用 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 尝试“无代理”变量?
我没有其他线索。