Hi,
the problem is
[active_members -list $default_pool]
returns a list of list like :
{{192.168.1.144 80} {192.168.1.164 80}}
[lsearch -exact [active_members -list $default_pool] 192.168.1.144]
will always return
-1
the right command must be:
[lsearch -exact [active_members -list $default_pool] {192.168.1.144 80}]
or
[LB::status pool $default_pool member $target_member 80]
you can try this irule:
when CLIENT_ACCEPTED {
set default_pool [LB: Server pool]
log local5. "Pool $default_pool select"
}
when HTTP_REQUEST {
log local5. "Client Existing Cookie: [HTTP::cookie value "webserver"]"
Try to select a pool based on the http cookie containing pool information
if { [active_members $default_pool ] > 1 } {
switch [HTTP::cookie value "webserver"] {
"server11" {set target_member "192.168.1.160"}
"server22" {set target_member "192.168.1.164"}
"server33" {set target_member "192.168.1.143"}
"server44" {set target_member "192.168.1.144"}
default {
pool pool $default_pool
log local5. "No cookie : Load Balance to $default_pool pool"
return
}
}
if { [LB::status pool $default_pool member $target_member 80] } {
pool $default_pool member $target_member
} else {
pool $default_pool
log local5. "Pool member failure : Load Balance to $default_pool pool"
}
}
}