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:
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:
Is what I'm asking for based on reality? Is the iRule necessary? Have I missed anything?
Thank you for your help.
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.
Very clever! Thanks. That was the only thing I didn't think of. Thank you for your wisdom!