cancel
Showing results for 
Search instead for 
Did you mean: 

iRule to Use Existing Cookie for Persistence Routing

D_T
Altostratus
Altostratus

Is it possible to use an iRule to create persistent connections to pool members based on an existing application layer cookie? Meaning if the cookie exists, send the connection to one pool member persistently based on that cookie. If it doesn't, send to a default pool member. The reason for this would be persistent connection based on source IP will not work as the source IP is a proxy which lives in front of this pool and that IP doesn't change.

 

Thank you.

7 REPLIES 7

PeteWhite
F5 Employee
F5 Employee

Yes - universal persistence. https://support.f5.com/csp/article/K7392 gives you examples

Thank you! This does seem to do the trick. What I am noticing is traffic is only going to one pool member consistently though. The virtual server is set for the new Universal Profile created for this and pointing to the new iRule. The pool members are both set to round-robin and 1:1 in priority group. The UIE profile iRule looks like this:

 

when HTTP_RESPONSE { if { [HTTP::cookie exists "THECOOKIE"] } { persist add uie [HTTP::cookie "THECOOKIE"] pool po-serverpoolqa-https } } when HTTP_REQUEST { if { [HTTP::cookie exists "THECOOKIE"] } { persist uie [HTTP::cookie "THECOOKIE"] pool po-serverpoolqa-https } }

 

 

 

Is the cookie content different for each of those requests? I’d tend to do this only on request

D_T
Altostratus
Altostratus

Each client would have the cookie with a different value. That value would not change during their session.

D_T
Altostratus
Altostratus

I am trying to route users who have a cookie reflecting their useraccount as a value for example, consistently to a pool member but spread across those pool members for load balancing purposes. As they are going through a single proxy (with fail-over), using source_ip routing for example will not work.

How about cookie persistence?

D_T
Altostratus
Altostratus

I did attempt using cookie persistence with method Cookie Hash, mirror persistence, and the same session was scattered across the pool members.