Forum Discussion
iRule Source IP to prioritized list of pool members
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
}
}
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 } } }
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 } } }
- cmp19Nimbostratus
This is exactly what I was missing. Thanks for such a quick response Amine!!
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