Forum Discussion
smp_86112
Feb 13, 2012Cirrostratus
OneConnect, Cookie Persistence, and LB_FAILED event
I've got an HTTP virtual with a OneConnect and Cookie profiles applied. The virtual also has an iRule applied. In effect, the iRule is written like this:
rule myrule {
when HTTP_REQUEST {
log local0. "[LB::server]"
if { [HTTP::uri] starts_with "/app" } {
pool mypool
}
}
when LB_FAILED {
HTTP::redirect "http://myapp.app.com/error_page"
}
}
Client requests are coming to the app from a global content delivery provider. I have studied the requests at a TCP level, and it appears they are pipelining HTTP requests from different users through a single TCP connection. When a client request for "/something_else" comes in without a Cookie on an established TCP connection, the LTM appears to be making a load-balancing decision BEFORE processing the iRule. It appears this way because the log statement provides me with a pool name and a member, and the LB_FAILED event does not fire. When a client request for "/something_else" comes in on a new TCP session, no load-balancing decision is made and the LB_FAILED event fires as we expect (and want!). My understanding of OneConnect is that each request is evaluated for load-balancing. And if that's true, my expectation is that no load-balancing decision is made until all the iRules have been process. That appears to not be the case. Can someone explain to me what the expected behavior is in the scenario I described?
- hooleylistCirrostratusHi SMP,
- smp_86112CirrostratusHi Hoolio. You and I expected the same thing, but that is not what's happening. The case number is C1050675. Here's the explanation I got:
if { not ($uri starts_with "/app") } { If the loadbalanced server is not the vip detach if {not ([IP::local_addr] equals [LB::server addr])} {LB::detach} }
- hooleylistCirrostratusThanks for that. I'll watch the case. If you don't get a valid final response/solution let me know.
- smp_86112CirrostratusOur engineer pointed us to "sol9800: Using an iRule to load balance HTTP requests to multiple pools", which actually does a pretty good job of addressing most of the cases. However we seem to have found an edge case that the sol does not address, which is how does the LTM make a default pool selection for virtual servers using OneConnect when there is no Default Pool defined?
Recent Discussions
Related Content
DevCentral Quicklinks
* 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
Discover DevCentral Connects