Forum Discussion

amritkp789's avatar
amritkp789
Icon for Nimbostratus rankNimbostratus
Aug 09, 2017

HTTPS monitors not getting the members up

In one scenario, I am asked to create two VIPs, which point to the same backend servers and same port i.e 443, just that they are used for different applications. So, I was suggested to create two pools, with the same set of pool-members(server IP:port) just that two separate HTTPS monitors. The two monitors were also identical, however in the GET string used in 'send' field, they were using different HOSTs. Now, out of the two pools, one is UP and the other is NOT... what can be the issue? Pool A Monitor send string "GET /health/prospect HTTP/1.1\r\nHost: a.xyz.com.au\r\nConnection: Close\r\n\r\n" Pool B Monitor send string "GET /health HTTP/1.1\r\nHost: b.xyz.com\r\nConnection: Close\r\n\r\n"

 

  • You can use the curl command from a bash prompt to simulate the monitor and see the response that the server is providing. This is sometimes faster than enabling monitor logging or using a packet capture to diagnose monitor issues.

    For example, to send your current Host A monitor run the following from a bash prompt:

    curl -kvv -H "Connection: Close" -H "Host: a.xyz.com.au" https://[pool member ip]/health/prospect

    You can then modify the command to simulate changes to your monitor config and view the response from the server.

    You noted that the monitors are identical other than the send string, but can you confirm the configuration of each monitor's recv string? If the pools are truly identical (same members across both pools), then I suspect you're getting at least some response to both monitors given success on pool B. An https monitor with no recv string would mark the pool up with any response from the member. Confirm you have an appropriate recv string for the failing monitor, and use the curl command above to review the server's actual response. This should provide some clues to narrow the issue.

  • Pool A Monitor:

    "GET /health

    /prospect
    HTTP/1.1\r\nHost: a.xyz.com.au\r\nConnection: Close\r\n\r\n"

    Pool B Monitor: Don't have

    /prospect
    , add this and let us know.

    "GET /health HTTP/1.1\r\nHost: b.xyz.com\r\nConnection: Close\r\n\r\n"

    Something like below,

    "GET /health/prospect HTTP/1.1\r\nHost: b.xyz.com\r\nConnection: Close\r\n\r\n"