Forum Discussion
How to configure pool to go down if multiple members are down
- Sep 10, 2025
Priority group activation: if at least one node is up, the pool will appear up, and therefore the virtual server will also show as green.
iRule: this would work to reject traffic, but it’s not what I need.
Individual health checks: this is how it’s currently working. It’s fine for a small pool, but I’m looking for something more scalable.Just to recap, the goal is to mark the virtual server as down so that this IP is not advertised via BGP. This way, traffic will be routed to another site where the VS has more nodes available. The issue was detected when a pool had fewer than 6 nodes available, since it was unable to handle the amount of DNS requests it was receiving.
It seems I’ve managed to get it working with this solution, something like Injeyan_Kostas suggested:
I created a new pool with an external monitor that checks the status of the original pool. On the VS, I applied this new pool and it appears to work correctly.It doesn’t seem like the most optimal solution, but at least if there are many nodes or they change regularly, not many modifications are required.
Any other suggestions would be welcome.
This is .sh file:
#!/bin/bash
#
# External monitor genérico para marcar DOWN un pool si tiene menos de N miembros UP
## Variables de entorno pasadas desde el monitor
#Ej.-
#ltm monitor external monitor_externo_min_pool_member {
# defaults-from external
# description "Comprobacion de miembros arriba en un pool"
# interval 5
# run /Common/monitor_pool_min_members
# time-until-up 0
# timeout 16
# user-defined MIN_UP 3
# user-defined POOL Pool_A10_80
#}
POOL=$POOL
MIN_UP=$MIN_UP# Obtenemos número de miembros activos del pool
UP=$(tmsh show ltm pool $POOL | grep "Current Active Members" | awk '{print $5}')# Debug opcional en /var/log/ltm
#logger -p local0.info "Monitor $POOL: $UP miembros UP, mínimo requerido $MIN_UP"if [ "$UP" -lt "$MIN_UP" ]; then
# No mandamos nada a stdout -> el monitor marcará DOWN
exit 1
else
# Mandamos algo (ej: "UP") -> el monitor marcará UP
echo "UP"
exit 0
fiThis is original pool:
ltm pool Pool_A10_80 {
description "Pool que son 4 VS en A10 2-pruebasPart con iRUle 200 OK"
members {
N1:http {
address 10.10.100.1
session monitor-enabled
state up
}
N2:http {
address 10.10.100.2
session monitor-enabled
state up
}
N3:http {
address 10.10.100.3
session monitor-enabled
state up
}
N4:http {
address 10.10.100.4
session monitor-enabled
state up
}
}
monitor tcp
}This is the new pool assigned to VS:
ltm pool Pool_min_members {
description "Pool de chequeo de numero de miembros disponibles"
members {
N1:http {
address 10.10.100.1
session monitor-enabled
state down
}
N2:http {
address 10.10.100.2
session monitor-enabled
state down
}
N3:http {
address 10.10.100.3
session monitor-enabled
state down
}
N4:http {
address 10.10.100.4
session monitor-enabled
state down
}
}
monitor monitor_externo_min_pool_member
}
Hi pablo_juarez,
you can also achieve this with pool member specific monitors. Here is an example with 4 pool members, if 2 or more members go down, the whole pool will go down.
Monitors config, each monitor has a custom destination - its own IP and port.
ltm monitor http mon_http_10_100_153_120 {
adaptive disabled
defaults-from http
destination 10.100.153.120:http
interval 5
ip-dscp 0
recv none
recv-disable none
send "GET /\r\n"
time-until-up 0
timeout 16
}
ltm monitor http mon_http_10_100_153_121 {
adaptive disabled
defaults-from http
destination 10.100.153.121:http
interval 5
ip-dscp 0
recv none
recv-disable none
send "GET /\r\n"
time-until-up 0
timeout 16
}
ltm monitor http mon_http_10_100_153_122 {
adaptive disabled
defaults-from http
destination 10.100.153.122:http
interval 5
ip-dscp 0
recv none
recv-disable none
send "GET /\r\n"
time-until-up 0
timeout 16
}
ltm monitor http mon_http_10_100_153_123 {
adaptive disabled
defaults-from http
destination 10.100.153.123:http
interval 5
ip-dscp 0
recv none
recv-disable none
send "GET /\r\n"
time-until-up 0
timeout 16
}
And here goes the pool config, each member has 4 monitors assigned. This way, if two members go down, all pool members go down.
ltm pool pl_custom_monitors {
members {
10.100.153.120:http {
address 10.100.153.120
monitor min 3 of { mon_http_10_100_153_120 mon_http_10_100_153_121 mon_http_10_100_153_122 mon_http_10_100_153_123 }
session monitor-enabled
state up
}
10.100.153.121:http {
address 10.100.153.121
monitor min 3 of { mon_http_10_100_153_120 mon_http_10_100_153_121 mon_http_10_100_153_122 mon_http_10_100_153_123 }
session monitor-enabled
state up
}
10.100.153.122:http {
address 10.100.153.122
monitor min 3 of { mon_http_10_100_153_120 mon_http_10_100_153_121 mon_http_10_100_153_122 mon_http_10_100_153_123 }
session monitor-enabled
state up
}
10.100.153.123:http {
address 10.100.153.123
monitor min 3 of { mon_http_10_100_153_120 mon_http_10_100_153_121 mon_http_10_100_153_122 mon_http_10_100_153_123 }
session monitor-enabled
state up
}
}
}
Cheers
Daniel
Hello Daniel,
I have used this option in small pools, but I was thinking in something more scalable.
Thanks anyway.
- Daniel_WolfSep 10, 2025
MVP
I have two more ideas, though not tested.
1. Add all 10 members to a priority group, configure a minimum up requirement of "Less than..." 6 for this priority group. This should take down the whole priority group.
2. Use an iRule similar to this one:when LB_SELECTED { set active_members [active_members [LB::server pool]] if { $active_members < 6 } { reject } }
- Injeyan_KostasSep 10, 2025
Nacreous
To my knowledge less than in priority group implementation will just enable next priority group members if minimum number reached. Will not disable pool.
As for the irule will work for requests but will not mark pool and VS as down. So BGP announcement will continue
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