I have done some more research, and it doesn't look like connection limits on the pool members will meet my requirements. I believe that once a member falls below the limit, it will start taking connections again, which I do not want to happen. I started working on an iRule....
when RULE_INIT {
array set ::active_connections { }
}
when HTTP_REQUEST {
if LB::status pool pool1 member 10.10.10.1 up
set servername server1
if active_connections($servername) <= 1000
use pool pool1 member 10.10.10.1 80
incr ::active_connections($servername)
else LB::status pool pool1 member 10.10.10.1 80 down
use pool pool1 member 10.10.10.2 80
set servername server2
incr ::active_connections($servername)
if LB::status pool pool1 member 10.10.10.2 80 up
set servername server2
if active_connections($servername) <= 1000
use pool pool1 member 10.10.10.2 80
incr ::active_connections($servername)
else LB::status pool pool1 member 10.10.10.2 80 down
use pool pool1 member 10.10.10.3 80
set servername server3
incr ::active_connections($servername)
else use 10.10.10.3
set servername server3
use pool pool1 member 10.10.10.3 80
incr ::active_connections($servername)
}
when CLIENT_CLOSED {
incr ::active_connections($servername) -1
}
I know I need more brackets, but other than that, will this work?