Forum Discussion
Maintaining persistancy based on Unique transaction ID for 2 different URI
Team,
Explaining a bit about scenario. Customer has requirement of sending certain traffic to specific node within a pool for 2 different URI with same transactionID (attaching snapshot for 2 sample transcationID) . The objective is api /req and api /resp should land on same node. Below irule seems not working as expected. the below irule is attached to persistancy uie and attached to vs.
when HTTP_REQUEST {
set txnid [findstr [HTTP::uri] "urn:txnid:" 10 ";"]
# set txnid [string range $string1 10 end]
# log local0. " Printing txnid: $txnid for [HTTP::uri]"
if { $txnid != "" } {
persist uie $txnid
}
}
Have done a bit of modification, can you please look into this and suggest any modifications. The new sample irule:
when HTTP_REQUEST {
if { (([string tolower [HTTP::uri]] contains "/upi/respbalenq/") or ([string tolower [HTTP::uri]] contains "/upi/reqbalenq/") and ( [string tolower [HTTP::uri]] contains "/urn:txnid:auto" ) } {
set txnid [findstr [HTTP::uri] "urn:txnid:" 10 ";"]
#set string1 [findstr [HTTP::URI] "urn:txnid:"]
#set txnid [string range $string1 10 end]
Log local0. " Printing txnid: $txnid for [HTTP::uri}"
if { $trxnid != ""} {
persist uie $txnid
pool inq_bal
} else {
return
}
}
In the snapshot 10.20.210.22 is selfip and 10.20.19.99 / 100 / 101 are backend servers. Objective is if transaction ID is same for both api (req and resp) , it should always land on same node.
5 Replies
- spalande
Nacreous
Can you try configuring oneconnect profile with /32 mask and see if that makes a diffrence? With oneconnect, F5 should detach the connection and reload-balance using persistence record per HTTP request.
- Amith_Rajgopal_
Employee
Sure Sanjay. I will try Oneconnect too.
Hi Amith,
I think your iRule is missing the part when you add the persistence record. Example:
persist add uie [findstr [HTTP::uri] "urn:txnid:" 10 ";"]Check here:
https://support.f5.com/csp/article/K7392
and here:
https://clouddocs.f5.com/api/irules/persist.html
With your iRule you are looking up a record that was never created.
Furthermore you can list existing persistence records and verify that your iRule works, see here:
https://clouddocs.f5.com/cli/tmsh-reference/v15/modules/ltm/ltm_persistence_persist-records.html
KR
Daniel
- Amith_Rajgopal_
Employee
Thanks Daniel for response.
I am under impression persist add uie is to be used for http_response and we are not inspecting response of the server.
Am i going wrong in my understanding?
You are right with your understanding, it must be inserted as part of the response.
Help guide the future of your DevCentral Community!
What tools do you use to collaborate? (1min - anonymous)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