Forum Discussion

Prashant_R_7332's avatar
Prashant_R_7332
Icon for Nimbostratus rankNimbostratus
Mar 11, 2014

F5 Monitor with special requirement on a Pool

I am working on a LTM with v11.

 

I have a single application server with 6 managed nodes. All these managed nodes are configured on a pool. There are 3 applications deployed on the all the 6 nodes.

 

I want to create a monitor/monitors for this pool to monitor all the 3 applications via its context root(or something else if better).

 

If one of the requests for one application fails because of the application being down but all the managed servers are up, how can i modify this monitor to not make the pool down and other 2 applications to keep taking the requests on the active managed nodes.

 

Is there is a simple way to achive this via a any of Monitoring method or a Irule or any F5 component.

 

I have seen in other Forums asking to create multiple pools for each application, which is not a viable option if i want to implement this on a large scale. Forum Link 1- https://devcentral.f5.com/questions/multiple-pools-on-single-virtual-server Forum Link 2 - https://devcentral.f5.com/questions/monitoring-applications-on-f5

 

Thanks,

 

  • Or if you wanted to just keep one virtual server, you could do it by iRule and create three separate pools (app1, app2, and app3), all using the same six nodes with your appropriate monitor:

    when HTTP_REQUEST {
        if { [HTTP::uri] starts_with "/app1" } {
          pool app1
        }
        if { [HTTP::uri] starts_with "/app2" } {
          pool app2
        }
        if { [HTTP::uri] starts_with "/app3" } {
          pool app3
        }
      }
    
  • Possibly the easiest way to do this is to create a separate virtual server for each of the three applications. You can use the same pool with all six nodes for each virtual server, but you'll use a custom monitor for each application pool. Is there a specific URI that each application uses that you could test in an HTTP monitor send string?

     

  • Or if you wanted to just keep one virtual server, you could do it by iRule and create three separate pools (app1, app2, and app3), all using the same six nodes with your appropriate monitor:

    when HTTP_REQUEST {
        if { [HTTP::uri] starts_with "/app1" } {
          pool app1
        }
        if { [HTTP::uri] starts_with "/app2" } {
          pool app2
        }
        if { [HTTP::uri] starts_with "/app3" } {
          pool app3
        }
      }
    
    • Prashant_R_7332's avatar
      Prashant_R_7332
      Icon for Nimbostratus rankNimbostratus
      Yes each application uses a different URI's. Creating a separate Virtual Server is not possible. If I use HTTP monitor send string, if one application is down, F5 will make the pool member down, which i don't want.
    • Cory_50405's avatar
      Cory_50405
      Icon for Noctilucent rankNoctilucent
      If you are looking for health checking per application, then this solution would work. Each application with its own separate pool, with its application specific monitor. That way if one application goes down on a node, it'll only affect that application's specific pool. Make sense?
    • Prashant_R_7332's avatar
      Prashant_R_7332
      Icon for Nimbostratus rankNimbostratus
      Thanks Cory for this solution, really appreciate the help. This was one of the solutions that I was considering.