04-Feb-2021
14:52
- last edited on
04-Jun-2023
21:04
by
JimmyPackets
Hi!
Trying to create an iRule that matches a clients source IP and sends it to a specific pool member. If the pool member is down or offline, send it to a different member in the same pool. So far the source client is sticking to the first pool member in my statement, but when I turn that pool member off, connections are failing to pool member #2. What have I missed? Thanks for checking it out!
**Note %12 is my route domain this traffic lives in
when CLIENT_ACCEPTED {
if { [IP::addr [IP::client_addr] equals a.a.a.a%12] } {
pool test_pool member 2.2.2.2%12 8443
} else {
pool test_pool member 3.3.3.3%12 8443
}
}
Solved! Go to Solution.
04-Feb-2021
15:38
- last edited on
04-Jun-2023
21:04
by
JimmyPackets
Basically, you are forcing the load balancing to member 1 whatever its status is. You need to either check its status before selecting it, or to use LB_FAILED event after selection to reselect another pool member.
when CLIENT_ACCEPTED {
if { [IP::addr [IP::client_addr] equals a.a.a.a%12] } {
if { [LB::status pool test_pool member 2.2.2.2%12 8443] eq "up" } {
pool test_pool member 2.2.2.2%12 8443
} else {
pool test_pool member 3.3.3.3%12 8443
}
}
}
04-Feb-2021
15:38
- last edited on
04-Jun-2023
21:04
by
JimmyPackets
Basically, you are forcing the load balancing to member 1 whatever its status is. You need to either check its status before selecting it, or to use LB_FAILED event after selection to reselect another pool member.
when CLIENT_ACCEPTED {
if { [IP::addr [IP::client_addr] equals a.a.a.a%12] } {
if { [LB::status pool test_pool member 2.2.2.2%12 8443] eq "up" } {
pool test_pool member 2.2.2.2%12 8443
} else {
pool test_pool member 3.3.3.3%12 8443
}
}
}
04-Feb-2021 15:57
This is exactly what I was missing. Thanks for such a quick response Amine!!