Symptoms:
NSX Load Balancer monitor is reporting web server pool members as "DOWN", despite the pool members being reachable.
When bypassing the load balancer and going directly to the server url, the page displays as expected.
In the NSX Load Balancer logs, you see the following log entries:
2018-08-06T19:14:16+00:00 ###-edge-307-0 nagios: [user.info] SERVICE ALERT: host_x.x.32.86;monitor:monitor-hom-nsx-lb-svcdockr-dtr-lab-47777::pool:pool-hom-nsx-lb-svcdockr-dtr-lab-47777::member:X.X.32.86::type:haproxy;CRITICAL;HARD;3;HTTP CRITICAL - Invalid HTTP response received from host on port 443: HTTP/1.1 400 Bad Request: missing required Host header 2018-08-06T19:14:18+00:00 ###-edge-307-0 nagios: [user.info] SERVICE ALERT: host_x.x.32.88;monitor:monitor-hom-nsx-lb-svcdockr-dtr-lab-47777::pool:pool-hom-nsx-lb-svcdockr-dtr-lab-47777::member:x.x.32.88::type:haproxy;CRITICAL;HARD;3;HTTP CRITICAL - Invalid HTTP response received from host on port 443: HTTP/1.1 400 Bad Request: missing required Host header 2018-08-06T19:14:20+00:00 ###-edge-307-0 nagios: [user.info] SERVICE ALERT: host_x.x.32.84;monitor:monitor-hom-nsx-lb-svcdockr-dtr-lab-47777::pool:pool-hom-nsx-lb-svcdockr-dtr-lab-47777::member:x.x.32.84::type:haproxy;CRITICAL;HARD;3;HTTP CRITICAL - Invalid HTTP response received from host on port 443: HTTP/1.1 400 Bad Request: missing required Host header
Currently, there is no resolution for this issue.
Workaround:
To workaround this issue, add a "Host" header to the extensions field in the HTTP/HTTPS monitor extension for example:
header="Host: app1.example.com".
In the above example, you will change the "app1.example.com" to the FQDN of one of the pool members as displayed in the image below:
Apply the change, and the pool should come UP immediately.
You can add additional Host header extensions to include all pool members.