Forum Discussion

N_67263's avatar
N_67263
Icon for Nimbostratus rankNimbostratus
Aug 27, 2013

Difference between health monitor using "http" and "tcp port-80"

Folks,

 

The use case I have is we have a pool configured with 2 nodes in it and has the health monitor set as http. There was some testing going on on one of the nodes and the pool was showing as down. On the second node, however port 80 was responding to telnet and I was also able to get the webpage from the second node.

 

Question is, how can we technically explain the difference while configuring a health monitor as "http" and as "tcp-port 80". What could be the reason that the pool was up when I switches over to TCP-80?

 

http should be a protocol working on port 80 and providing some additional service like a HTTP get 200 which I was receiving.

 

Regards, Nik

 

3 Replies

  • To amplify Jie's comments, an HTTP monitor is a TCP three-way handshake and then the transmission and reception of HTTP (protocol) messages. The monitor configuration itself allows for some significant flexibility in the layer 7 messages you can send and in what you expect to receive. A TCP monitor is really nothing more than the three-way handshake - in your case on port 80. It doesn't by default check anything more than the NETWORK status of the remote server, while the HTTP monitor is checking both the network and application layers of the remote server. You can, technically, send and receive HTTP messages with Telnet using a scripted monitor, which would make it functionally equivelant to an HTTP monitor, but the built-in monitor is going to be easier to use.

     

  • JG's avatar
    JG
    Icon for Cumulonimbus rankCumulonimbus

    Simply put, HTTP runs over TCP, and sucessful access on the TCP layer does not mean HTTP works as well, as is shown in your case.

     

  • how can we technically explain the difference while configuring a health monitor as "http" and as "tcp-port 80". What could be the reason that the pool was up when I switches over to TCP-80?

     

    i guess no send/recv string is configured in tcp-port 80 monitor, isn't it? if yes, tcp-port 80 monitor does not check response but http monitor does.

     

    Troubleshooting Ltm Monitors by Aaron

     

    https://devcentral.f5.com/wiki/advdesignconfig.TroubleshootingLtmMonitors.ashx

     

    sol3224: HTTP health checks may fail even though the node is responding correctly

     

    http://support.f5.com/kb/en-us/solutions/public/3000/200/sol3224.html