Health Checking

Health checking works by requesting something and examining the response. Health checking can be done at different layers of the TCP/IP stack. The higher in the stack, the better the health check is at determining the overall application health.

At Layer 3, the LoadMaster can use ICMP Ping. This will send a ping request to the server. If we receive a ping response, the server is considered healthy. However, this only checks that the server is running, not the application.

At Layer 4, the LoadMaster can use a TCP Connection. This will attempt to open a TCP connection to the server on the selected port. If the server completes the TCP handshake, the server is considered healthy. This checks that the application is at least accepting connections, but does not check that the application is functioning properly.

At Layer 7, there are a variety of protocol specific health checks. These will open a TCP connection to the server and begin application-level communication. Once the server responds with good data, the server is considered healthy. This checks that the application is up and functioning properly.

For HTTP and HTTPS healthchecks, you can specify some of the parameters used to make the request. These parameters are URL, method, version, hostname as well as additional headers. These parameters are assembled as follows:

<Method> <URL> HTTP/<Version>

If HTTP/1.1 is specified, you can also set the hostname as a header if your server requires this.

<Method> <URL> HTTP/<Version>
Host: <Hostname>

The default healthcheck looks like this:

HEAD / HTTP/1.0

Using the following settings, the healthcheck would look like this:

Method: GET
URL: /healthcheck.html
Version: 1.1
Hostname: example.com

GET /healthcheck.html HTTP/1.1
Host: example.com

If LoadMaster receives a 200, 301, 302 or 401 status code as a response, the server is considered healthy. You can get more granular if you specify the method to be GET. You can then specify a regular expression which is compared to the first 4KB of the response. If it matches, the server is considered healthy. This feature requires a 200 response code with content to be returned.

Was this article helpful?

1 out of 2 found this helpful

Comments

Avatar
david.zaring

Which interface performs the health check?

Avatar
droorda

is there a way to get the GET request to only except a 200 status code?

Avatar
Naseer Husein

Doug,

Unfortunately, there is no way for us to just accept a 200 status code. "2xx codes are always considered up in all cases and are subject to pattern matching if configured".

You can use the status codes option in the real server tab in the virtual service to define custom status codes which you'd like to accept.

You can find more information about the status code in the WUI document.
https://support.kemptechnologies.com/hc/en-us/articles/213906303-Web-User-Interface-WUI-

Avatar
droorda

Let me be more clear I am looking to only except the 2XX code and not the 301,302,401. I have found an ugly work around by specifying that I want to only except 599, but would prefer to not have to hope that I never experience a 599 code