Brocade ADX - The keepalive command
Within this article we will look into the 'keepalive' command. As this command isn't greatly documented I thought this would be a good opportunity to explain in a little more detail how it works.
Keepalive vs Keep-alive
First of all it is worth noting that the 'keepalive' command (which is configured under the real server) should not be confused with the 'keep-alive' command that is configured under the virtual server. Where as the 'keep-alive' command enables HTTP 1.1 functionality under the virtual server the keepalive command has a different role.
What does it do ?
The 'keepalive' command is configured within the real server using the syntax 'port <port> keepalive', as shown below.
server real 192.168.1.1-web1 192.168.1.1
port 80 keepalive
port 80 url "GET /"
When keepalive is enabled the loadbalancer periodically checks the real server based on the configured healthchecks.
However without the keepalive option enabled the ADX initally checks the port using the configured healthcheck (in this example HTTP GET /) at the point the port is bound.
The ADX then monitors the traffic and will only mark the port as FAILED if the real server fails to respond to multiple SYN packets.
At the point of a server being disabled, though no new connections are permitted existing connections will remain active until they gracefully finish. This in turn means that (as the ADX still sees these active connections) at the point the server is re-enabled the port status will return to ACTIVE without the initial healthcheck (in our case HTTP GET / ) being sent.