Forum Discussion

Siming_84922's avatar
Siming_84922
Icon for Nimbostratus rankNimbostratus
Jul 15, 2009

Static HTTP Route?

Hi,

 

 

Can I configure a static HTTP Routing in BIP-IP? Let me explain what I mean by that.

 

 

I have two fixed session ids (say, sessionId1 and sessionId2). sessionId1 represents node1 of a weblogic cluster and sessionId2 represents node2 of the same cluster. The weblogic cluster is front ended by a BIP-IP. When a client makes an http request to the cluster, it is forced to encode one of the session ids into the url even for the initial request.

 

 

Here comes my question: can I configure BIP-IP so that, even for the first request, it is able to figure out which wls node to go to based on the session id encoded in the target url?

 

 

Based on what I read so far, I think the initial request is always load balanced in all persistence types.

 

 

Thanks much!

6 Replies

  • What would the logic be for selecting a pool member on the first request based on the sessionId token? Where in the URL is the session ID? Does the WLS session ID ever change for node 1 or node 2 after server restarts, reboots, etc?

     

     

    Aaron
  • Thanks Aaron for your response. This requirement comes up in WS-AT (Web Service Atomic Transaction). Here is a more detailed description of the scenario.

     

     

    A weblogic app starts a transaction on node1. It then invokes a dotNet web service with a transaction registration service url embeded in the soap message. This registration url points to web app running on both nodes of the wls cluster with its host name set to the BIG-IP. Moving on, the dotNet web service extracts the registration url and needs to make an hppt/s request to it to enlist with transaction coordinator on wls.

     

     

    So here is the two key points. First, the registration request from dotNet is an initial request to BIP-IP. Second, since the transaction initiated on node1 is pinned to node1, the registration request from dotNet has to land on node1. Otherwise, a transaction not found error will occur.

     

     

    My idea is presented in my initial post. If it works, it will probably be the simplest and most efficient way of implementing this scenario. Now to your other questions.

     

     

    The session Id will be appended to the end of the registration url using URL rewriting. So a registration service url could look like this:

     

    http://BIG-IP-HOST/WSATRegService;JSESSIONID=NODE1SESSIONID

     

     

    The session id is a constant for a given node but they are unique amongst cluster instances. It never changes over server reboot.

     

     

    Thanks again for your time.

     

    Siming
  • Hi Siming,

     

     

    So will you know the JSESSIONID for node1 and node2 in advance for all scenarios? Is the JSESSIONID hardcoded in a configuration file or somewhere similar?

     

     

    If the JSESSIONID for each pool member is static you could use an iRule which parses the HTTP::path for the JSESSIONID and selects the corresponding pool member. If the JSESSIONID is generated dynamically and could change this wouldn't work. If that's the case, I still don't understand the logic for selecting a pool member.

     

     

    Aaron
  • Hi Aaron,

     

     

    Yes, all static session ids for cluster nodes are known in advance. They can be hard coded or put into a configuration file. They will never change at runtime.

     

     

    I don't know much details about BIG-IP yet. Please bear with me with my simple questions. So I can use an iRule to extract the session id from a url. Then how can I configure BIG-IP in advance to make sure each unique but static session id is mapped to the right node even for the initial request? Thanks.

     

     

    siming
  • Thanks so much Aaron for your help. We will give it a try when I we get a chance.

     

     

    Siming