I am using a Windows build (and it has to be Windows) of Apache 2.4.33 from https://www.apachelounge.com
I have configured it as a load balancer, and everything seems to work fine until I try adding health checks. If I use hcmethod=GET, the health check is performed, and everything works fine. But if I set hcmethod=TCP, all of the check seem to fail. Surprisingly, I see no attempt at a check being made in Wireshark (I can see it just fine when using GET health check).
This is what I get in logs
[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.
This is the relevant part of the config:
<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>
The check for 6002 works as expected, so I assume I have all of the required modules loaded (I see no errors in the log files relating to this).
I have tied googling the issue, and found something that might be relevant: http://bugs.httpd.apache.narkive.com/tyCY7SPh/bug-61499-new-tcp-healthchecks-failing-falsely-not-actually-checking
Unfortunately, I do not know how to utilize this comment (I'm an Apache newbie):
Any chance that you could try the 'no-proxy' variable via SetEnvIf?
I have no other leads.