Forum Discussion
[LB::server pool] evaluation changes between HTTP_REQUEST and HTTP_REQUEST_SEND
Consider a virtual server with two pools, one for virtual host A and one for virtual host B:
- https://A.example.com/ --> pool_A
- https://B.example.com/ --> pool_B
- We are using a Local Traffic Policy to perform pool selection.
- We have a client-side HTTP/2 profile attached to this virtual server.
- We are using TMOS 16.1.4.
- We do not have OneConnect enabled.
When I browse to site A and check "[LB::server pool]" in HTTP_REQUEST, it evaluates to "pool_A". In HTTP_REQUEST_SEND, "[LB::server pool]" also evaluates to "pool_A". This is to be expected…
However, when I then browse to site B and check "[LB::server pool]" in HTTP_REQUEST, I still get "pool_A"???
In the corresponding HTTP_REQUEST_SEND event, "[LB::server pool]" does correctly evaluates to "pool_B". (Also: in the corresponding LB_SELECTED event, "[LB::server pool]" correctly evaluates to "pool_B".)
Somewhere between HTTP_REQUEST and LB_SELECTED/HTTP_REQUEST_SEND, the value of "[LB::server pool]" changes from "pool_A" to "pool_B". This is NOT what I would expect...
If I remove the HTTP/2 client-side profile, this behaviour is not observed (and "[LB::server pool]" evaluates to the same pool in both the HTTP_REQUEST and LB_SELECTED/HTTP_REQUEST_SEND event).
Has anyone observed this behaviour before? Is this a 'bug' perhaps?
- zamroni777Nacreous
how is the persistence setting?
is it cookie or something else?
i suggest you use gui based traffic policy instead of irules.
https://community.f5.com/t5/technical-articles/to-irule-or-not-to-irule-introduction-to-local-traffic-policies/ta-p/279536 - Frank_ten_WoldeNimbostratus
No, we're not using persistence, nor cookies. And we are using LTPs to do the pool selection.
Also, I wouldn't expect the "LB::server pool" to change between the HTTP_REQUEST and LB_SELECTED/HTTP_REQUEST_SEND events...
- zamroni777Nacreous
I test using below irules and found that LB_SELECTED happens before HTTP_REQUEST.
so it seems that's why in HTTP_REQUEST you still get pool_A when traffic policy config should select pool_B.when LB_SELECTED { log local0. "CCCCCCCCC" } when HTTP_REQUEST { log local0. "BBBBBBBBBBBBB" } when HTTP_REQUEST_SEND { log local0. "AAAAAAAAAAAAAAA" }
Recent Discussions
Related Content
* 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