Take one pool down when another fails
Hi,
I have a relatively simple problem which I can't think of a solution to..
I have 3 pools with the following inter dependencies:
- Pool1 Backend App
- Pool2 Fontend App
Pools 1 and 2 have four members each, two in the primary location and two in the DR.
Problem:
Priority groups are the natural solution, but they must all fail together.
- For example: suppose Backend App1-2 (in the primary) are both down, by that pool's priority groups, traffic is now directed to Backend App3-4 however Frontend are still in the primary. unacceptable.
- For example suppose Fronend App1-2 (in the primary) are both down, by that pool's priority groups, traffic is now directed to Fronend App3-4, however they themselve connect to Backend App1-2 which is still in the primary location.
The apps are not HTTP and DNS (GTM) is impossible as clients must use IPs.
Approaches tried:
One approach would have been a 'compound' monitor of:
- in the frontends "Frontend & (Backend app1 OR app2)"
- in the backends "Backend & (Frontend app1 OR app2)" (& Another the backend is depended on).
Which means a frontend pool member would fail if he himself failed his healthchecks or both the local backend failed (now everything moves to the 'dr').
Similarly a backend pool member would fail if he himself failed (or "Another" he's depended on) or both local frontends failed (now everything moves to the 'dr').
However there is no "AND OR" compound healthcheck.
Another approach would have been creating four additional "objects":
- two local backends
- two remote backends
- two local frontends
- two remote backends.
Then have the regular "AND" healthcheck of "Frontend & localBackend" for the frontends and "Backend & localFrontends" (& "Another) for the backends.
However how can you check pool availability in a healthcheck? creating a VS for each doesn't work.
Another approach I thought of is per node in a pool "at least 1" healthcheck of the required resources, however this runs-over the pool one (so we get to the first approach's problem - in this case all are OR, can't have the Pool one AND the per-node OR).