cancel
Showing results for 
Search instead for 
Did you mean: 

HTTP monitor which ignores timeouts

JamesR
Nimbostratus
Nimbostratus

Hi all,

 

Might be approaching this in the wrong way but I want a way for the application owners to trigger a pool failure by placing a text file on a web server. This is so they are in control without having access to the appliances themselves. I was planning to have a HTTP Monitor check for a file on a web server such as /pool1down.txt that the application owners can create, if the file exists then the monitor fails and marks the pool as down.

 

That works, however, if for any reason the web server is down, the monitor will be marked as down also and effectively this web server becomes a SPOF.

 

What is the best way to implement such a solution?

 

Cheers

8 REPLIES 8

Samir
Nacreous
Nacreous

Custom Health monitor is always best option to check send/receive string. Ask application team to create one webpage and monitor that page via F5 HTTP health monitor. Its call ECV (Extended Content Verification) - some info is sent to the server and some info is expected to receive.

 

https://support.f5.com/csp/article/K2167

 

Below Screen will help you to understand the setting.

 

0691T000008t2iWQAQ.jpg

Hi  , thanks for the reply.

 

I was hoping to have this centralised that we have a single monitor that is used for holding the service down rather than doing it node-by-node. In the solution we have an 'admin' server that I was hoping to use for this but I'd only want the monitor to be marked as down if the HTTP request returned a 200 and not if it timed out or other things occurred.

 

I was working on something like this;

ltm monitor http /Common/ServiceMonitor { defaults-from /Common/http description ServiceMonitor destination admin.node.ip:80 send "GET /srvdown.txt HTTP/1.1\r\nHost: bigip.health.check\r\nConnection: Close\r\n\r\n" recv "HTTP/1.1 200" interval 30 timeout 60 reverse enabled }

Doesn't look like this is possible though - is that your understanding too?

 

Cheers

I believe it should work. Did you try?​

It works unless admin.node.ip is down or timing out then the monitor reports DOWN rather than UP.

No seen these use case so far. Need to do research on these options (transparent and Reverse)​. Thanks

Heino
Cirrus
Cirrus

I can't really see this issue resolved with regular monitor settings only. My guess is that somebody adept with external heathmonitors could write a bash script or similar, to resolve this.

 

I would implement a workaround in case the management server fails. It is likely not very efficient, but I think it'll get the job done.

If no management server is available, you send the traffic to a backup pool that doesn't include the manual maintenance monitor. The consequence is that the application team cannot bring the server pool down unless the management server is online.

 

You could create three pools of servers: two with your webservers (one with all monitors, and one without the maintenance monitor), and one for your management server.

 

  1. standard_webserver_pool.

-- monitors: both manual_maintenance_monitor, and server_health_monitor

2. bad_webserver_pool

-- monitor: server_health_monitor

3. management_server_pool

-- monitor: server_health_monitor

 

Below ought to be correct irule syntax, but I haven't tested it.

when CLIENT_ACCEPTED { if { [active_members management_server_pool] < 1 } { pool bad_webserver_pool } else { pool standard_webserver_pool } }

The else part is essentially there for read-ability. If that is not something you care about and the standard_webserver_pool has been defined in the vserver configuration you can make do with

when CLIENT_ACCEPTED { if { [active_members management_server_pool] < 1 } { pool bad_webserver_pool } }

Can be done in various events. source, clouddocs: active_members

 

Sorry I couldn't get your complete requirement.

 

You have a pool and have some members in it. But you do not want to monitor all the members but to monitor a a specific pool member (admin.node.ip as you say). If this server is not responding to your health check, you want this is to be Up ? I'm confused.

Hi ,

 

> You have a pool and have some members in it.

  • Correct

 

> But you do not want to monitor all the members but to monitor a a specific pool member (admin.node.ip as you say).

  • Yes

 

> If this server is not responding to your health check, you want this is to be Up ?

  • If the server isn't responding or giving back a known good state I want the pool to be marked as 'Up'.

 

> I'm confused.

  • Hopefully that's fixed! But maybe not! What I'm after is a single centralised place to put a file that takes a pool out of service but if that single centralised place goes offline for some reason then the pool isn't taken out of service for that reason - only on giving a known response. A timeout or other network fault shouldn't effect the pool health. I do realise this isn't most probably possible without a custom monitor.

 

Cheers