iRule for pool member reselect
Hello F5Admins, We are using LTM 11.3.0. One of our website running in IIS has lot of Application pools and whenever any of these pools goes down returns 503 http response code. Our requirement is whenever a response code of 503 occurs due to App pool failures, LB should route such request to the next available pool member without marking that pool member offline (since marking down will affect connections in other app pools). Though we are able to reselect a new pool member with this irule, it works only if the pool member is marked down. when HTTP_REQUEST { set my_host_header [HTTP::host] set my_uri_header [HTTP::uri] } when HTTP_RESPONSE { if { [HTTP::status] contains "503"} { catch { LB::down } HTTP::redirect "https://$my_host_header$my_uri_header" } } Any idea how to achieve this without the "LB:Down" statement. Any help on this will be highly appreciated. Thanks Sathish254Views0likes2CommentsHow can I reselect port after persistence and LB_SELECTED has selected a pool member?
I am trying to change the port that was selected during during persistence and LB decisions and then modify the destination port. I have tried several things with poor results. The below results in not being able to find the pool member, which I suspect is from no exact match on node/port combo. I have also tried using node but the port seems to be ignored. Any ideas? The general idea is to have one semi generic pool, and destination port be selected from based on URI mappings in a data-group. ltm virtual myvirtual { destination 10.1.1.10:any ip-protocol tcp mask 255.255.255.255 persist { my_universal_persist_profile { default yes } } pool mypool profiles { http { } tcp { } } rules { my_port_rule } snat automap translate-port disabled vlans-disabled } ltm rule my_persist_rule { when RULE_INIT { set persist_timeout "60" } when HTTP_REQUEST priority 998 { LB::detach if { [HTTP::header exists "someheader"] } { set myheader [HTTP::header "someheader"] persist uie "$myheader" $persist_timeout } } ltm rule my_port_rule { when LB_SELECTED { set server_port [class match -value "[HTTP::path]/" starts_with "node_ports"] if { "$server_port" ne "" } { LB::reselect pool [LB::server pool] member [LB::server addr] $server_port } } when LB_FAILED { log local0. "LB_FAILED" } } ltm pool mypool { members { server1.mydomain.com:any { address 10.10.10.10 session monitor-enabled state up } server2.mydomain.com:any { address 10.10.10.11 session monitor-enabled state up } server3.mydomain.com:any { address 10.10.10.12 session monitor-enabled state up } } monitor gateway_icmp }243Views0likes1Comment