Forum Discussion
What if instead of applying the iRule at the time of maintenance it was just always in place and then you trigger the maintenance request portion by disabling all the pool members? You could then proxy your internal requests to a separate pool to handle the testing.
I haven't validated the syntax of this, however the iRule would look like this. If your default pool is named my_pool_name your internal pool would be named my_pool_name_internal.
when HTTP_REQUEST {
If pool members are down
if {[active_members [LB::server pool]] < 1}
if {not ( [IP::addr "[IP::client_addr]/8" equals "10.0.0.0/8"]or[IP::addr "[IP::client_addr]/12" equals "172.16.0.0/12"]or[IP::addr "[IP::client_addr]/16" equals "192.168.0.0/16"]or[IP::addr "[IP::client_addr]/25" equals ".../25"]or[IP::addr "[IP::client_addr]/28" equals ".../28"]or[IP::addr "[IP::client_addr]/26" equals "..."] ) } {
HTTP::redirect "http://www.***.com/Maint_Pages/Maintenance.html"
} else {
Send to internal pool
pool "[LB::server pool]_internal"
}
}
}
The down side is the fact you know have to keep two pools updated when you add/remove members.