We are trying to set up some load balancing between two targets. However, in the test environment, the targets have self-signed certs so I set the value of “ignoreValidationErrors” to true with makes so we can call the target servers without issues but the HTTPMonitor doesn’t seem to care about this value since I in the logs can see that it complains about it couldn’t validate the certs. I have turned the validation of both in the target server and in HTTPTargetConnection in the HTTP block just to be sure. I feel like Apigee should use the same TLS settings when performing health checks as the proxy does when routing the traffic.
Any ideas on how to move forward from here?
This is the definition of my target server
{
"host": "target.example.com",
"isEnabled": true,
"name": "FMC-CANARY-EXAMPLE",
"port": 443,
"sSLInfo": {
"ciphers": [],
"clientAuthEnabled": "false",
"enabled": "true",
"ignoreValidationErrors": true,
"protocols": []
}
}
And the settings of my
<HTTPTargetConnection>
<SSLInfo>
<Enabled>true</Enabled>
<IgnoreValidationErrors>true</IgnoreValidationErrors>
</SSLInfo>
<LoadBalancer>
<MaxFailures>5</MaxFailures>
<ServerUnhealthyResponse>
<ResponseCode>500</ResponseCode>
<ResponseCode>502</ResponseCode>
<ResponseCode>503</ResponseCode>
</ServerUnhealthyResponse>
<Algorithm>Weighted</Algorithm>
<Retry>true</Retry>
<Server name="FMC-CANARY-EXAMPLE">
<Weighted>5</Weighted>
</Server>
<Server name="FMC-CANARY-EXAMPLE-CANARY">
<Weighted>1</Weighted>
</Server>
</LoadBalancer>
<Path>/</Path>
<HealthMonitor>
<IsEnabled>true</IsEnabled>
<IntervalInSec>5</IntervalInSec>
<HTTPMonitor>
<Request>
<ConnectTimeoutInSec>10</ConnectTimeoutInSec>
<SocketReadTimeoutInSec>30</SocketReadTimeoutInSec>
<Port>443</Port>
<Verb>GET</Verb>
<Path>/health</Path>
</Request>
<SuccessResponse>
<ResponseCode>200</ResponseCode>
</SuccessResponse>
</HTTPMonitor>
</HealthMonitor>
</HTTPTargetConnection>
We are running on-prem on version 4.19.06.00