Forum Discussion

Timothy_92333's avatar
Timothy_92333
Icon for Nimbostratus rankNimbostratus
Sep 15, 2014

VIP Selecting a Pool Member Based on Dependancy

Folks,

 

I have attached a diagram to explain what I'm trying to achieve. In summary, I'd like to configure a VIP listening on HTTP with a pool containing two pool members. Each pool member is located in a different data centre. The availability of the pool member is based on its health along with it's upstream server. The health check will be different for each tier.

 

To summarise the architecture:

 

  • The pool contains two pool members: dc1srv1 and dc2srv1
  • The VIP should only send traffic to a pool member if its upstream server is also alive

 

I've been through a number of iterations on paper. From a conventional method (through the GUI) I can't just add four health checks to a pool because the truth table wouldn't work. I can't nest health checks because it isn't possible.

 

I'm thinking this is going to require something like:

 

  • Each node will be assigned a http-based health check appropriate for it's tier
  • The pool will contain two pool members; dc1srv1 and dc2srv1
  • The VIP will listen on port 80
  • The smarts will be an iRule that when a client connects the script will assign traffic to a pool member only if it and it's upstream tier are both passing their health checks

Is what I'm asking for based on reality? Is the iRule necessary? Have I missed anything?

 

Thank you for your help.

 

Timothy

 

  • Create two monitors. One for DC1SRV1 HTTP, and another for DC1SRV2 HTTP.

     

    DC1SRV1 will be a typical HTTP monitor with send and recv strings set. DC1SRV2 will have the alias IP set for the IP of DC1SRV2, and the alias port to which port SRV2 operates on.

     

    Add both monitors to DC1SRV1 at the pool member level, and require all monitors. Do the same for the DC2SRV2. The second monitor will check the alias IP and port on DC1SRV2, but will take down DC1SRV1 if the DC1SRV2 monitor fails.

     

  • Create two monitors. One for DC1SRV1 HTTP, and another for DC1SRV2 HTTP.

     

    DC1SRV1 will be a typical HTTP monitor with send and recv strings set. DC1SRV2 will have the alias IP set for the IP of DC1SRV2, and the alias port to which port SRV2 operates on.

     

    Add both monitors to DC1SRV1 at the pool member level, and require all monitors. Do the same for the DC2SRV2. The second monitor will check the alias IP and port on DC1SRV2, but will take down DC1SRV1 if the DC1SRV2 monitor fails.

     

  • Chris,

     

    Very clever! Thanks. That was the only thing I didn't think of. Thank you for your wisdom!

     

    Timothy