Forum Discussion
Pool member failback
Hi guys,
the following irule logic inspired by some of the comments above, seems a bit neater and should do the trick. You will need to adjust the pool names and pool member counts as required, and you can of course perform more complex calculations if you prefer.
I did some basic testing, but i can't promise i caught all potential errors, so make sure to give it a whirl in a test environment first.
when RULE_INIT {
set static::pp "webpool"
set static::bp "backupwebpool"
set static::flag "flag"
}
when CLIENT_ACCEPTED {
if { [table lookup $static::flag] eq "backup" && [active_members $static::pp] < 1 } {
we're in backup mode
log local0. "backup mode"
pool $static::bp
}elseif { [active_members $static::pp] >= 1} {
active mode
log local0. "going back to active mode"
table set $static::flag "active"
pool $static::pp
}else {
backup mode needs to be enabled
log local0. "enabling backup mode"
table set $static::flag "backup"
pool $static::bp
}
}
Hi Kai,
First off, Thanks for posting your original irule. I believe you solved the OP's question, which is much appreciated. This wasn't really a critique of your irule. The context in which I made this version was just expressly to improve readability for a different person who actually drew their inspiration from your solution. I did not attempt to tweak for performance in any way, and I posted this here just as a way of sharing an alternative version since the work was already done.
I also didn't attempt to use the OP's numbers, understanding being that the user will place the numbers they desire.
Talking of performance, strictly speaking, the "table set $static::flag active" is completely unnecessary in my version, as the "active" value is never really used. That's one quick optimisation that I spotted.
Going further, the table set is probably totally unnecessary in fact, considering that the fallback to active pool always happens whenever the active pool is healthy. My version looks like this because I basically just took yours and tried to improve readability. I didn't approach OP's question from clean slate. It is possible that a simple solution could be devised where you simply need an
if [primary pool available members less than 4] then
backup;
Else:
primary;
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com