We have a 4 node cluster for JIRA. We are using F5 load balancer to distribute traffic. Due to increase in rest api calls from external applications we are experiencing some performance issues. So, we want divert rest api calls from external applications to Node 4. I read this https://confluence.atlassian.com/enterprise/traffic-distribution-with-atlassian-data-center-895912660.html. But, not sure how to implement in our F5 load balancer. Can someone please give some detailed steps to implement this? Thank You.
Dear @Jonnada Kiran,
separating REST from 'normal' calls can be done by analyzing the header information of HTTP requests, sent to the load balancer from the network. Everything that carries /rest/api/ in the destination URL is directed to a specific node.
As your company has invested in premium product, there should be a comprehensive documentation about F5 traffic balancing. I cannot help further, I am not familiar with this product.
So long
Thomas
Hi Jonnada,
Did you made it worked? I am also trying to setup same with F5 load balncer.
Please share the details if you done so?
Thanks,
Sanu P Soman
@Sanu Soman Hi. I have implemented it. It works great. Implement the below irule in F5. Thanks.
when HTTP_REQUEST {log local0. "New code"set referrer_host [ URI::host [HTTP::header value Referer]]log local0. "host: [HTTP::host]"log local0. "uri: [HTTP::uri]"log local0. "path: [HTTP::path]"log local0. "Referer: $referrer_host"if { ([HTTP::header exists "Referer"]) } {if { $referrer_host eq "" } { set referrer_host "none" }if { !($referrer_host contains "jiratest.corp.chartercom.com") } {log local0. "referrer is not equal to jira" if { ([HTTP::uri] contains "/rest/") } {log local0. "referrer is not equal to jira and contain rest" pool JIRA-test-external-pool } else { pool JIRA-test-pool } } else { log local0. "referer is jira" pool JIRA-test-pool }} else {log local0. "Referer does not exist"if { !([HTTP::uri] contains "/rest/") } {log local0. "referrer is not equal to jira and contain rest" pool JIRA-test-pool } else { pool JIRA-test-external-pool } }}
Great and many thanks for sharing it.
Is your JIRA running with SSL enabled? If so, do we need to terminate SSL at F5 level to configure this?
I dont know about SSL.
@Jonnada Kiran and @Sanu Soman,
keep in mind, that Jira is communicating with itself via REST. So best you do not balance requests from Jira.
Jira will request the F5 from its external network interface and not communicate from localhost to localhost.
This is not valid for Confluence, only Jira.
Hi all,
To clarify @Thomas Deiler answer:
Everything that carries /rest/api/ in the destination URL is directed to a specific node.
Jira UI operations also use same REST API, so you should be careful here and redirect traffic to specific Node4 only from External application (bot), not from normal user. In another case you will have user session expired all the time.
There is no single way how you can do this, a couple of options to name:
If referrer != app.yourdomain.com and the request ~ /rest: If the page requested == /login.jsp: Direct traffic to Node 1 or Node 2 or Node 3 //normal traffic Else: Direct to Node 4 //external REST API traffic
Hope this helps.
It looks like you're new here. Sign in or register to get started.