24-Aug-2021 13:25
I have a VIP that has no status because the pool that it uses is determined by a policy. To add state to the VIP I've added the following iRule:
when HTTP_REQUEST {
if { [active_members pool1] == 0 } {
# log
}
The VIP now shows a status of green (UP). When I disable the pool members in pool1, the VIP goes down and the GTM routes traffic to another data center.
Since I have a VIP that has multiple pools, I need to fail the VIP if any one pool member is down.
I've tried these examples:
if { [active_members pool1] == 0 } {
# log
}
elseif { [active_members pool2] == 0 } {
# log
}
elseif { [active_members pool3] == 0 } {
# log
}
elseif { [active_members pool4] == 0 } {
# log
}
}
and...
when HTTP_REQUEST {
if { [active_members pool1] == 0 or [active_members pool2] == 0 or [active_members pool3] == 0 }r
# log
}
}
When I take any one pool down, the VIP remains up.
Any suggestions?
Thanks
Kevin
25-Aug-2021
15:05
- last edited on
05-Jun-2023
23:02
by
JimmyPackets
Hi Kevin,
ltm rule irule_poolstatus {
when HTTP_REQUEST {
if { [active_members pool1] == 0 || [active_members pool2] == 0 || [active_members pool3] == 0 || [active_members pool4] == 0} {
HTTP::respond 200 content "down"
}
else {
HTTP::respond 200 content "up"
}
}
}
ltm virtual vs_poolstatus {
destination 1.2.3.4:http
ip-protocol tcp
mask 255.255.255.255
profiles {
http { }
tcp { }
}
rules {
irule_poolstatus
}
serverssl-use-sni disabled
source 0.0.0.0/0
source-address-translation {
type automap
}
translate-address enabled
translate-port enabled
}
ltm monitor http monitor_status {
adaptive disabled
defaults-from http
interval 5
ip-dscp 0
recv up
recv-disable none
send "GET /\r\n"
time-until-up 0
timeout 16
}
ltm pool pool_status {
members {
1.2.3.4:http {
address 1.2.3.4
session monitor-enabled
}
}
monitor monitor_status
}
when HTTP_REQUEST {
if { [active_members pool_status] == 0} {
# log
}
}
first iRule and virtual server: for "up/down response"
pool and monitor: for receive a request to the virtual server and to see the "up/down" status
I couldn't find a shorter solution.