Forum Discussion

Andy_Herrman_22's avatar
Andy_Herrman_22
Icon for Nimbostratus rankNimbostratus
Jun 29, 2006

Share persistence values for multiple protocols

I'm running into a problem with the iRules and persistence that I can't quite figure out, and I'm not sure if there even is a solution.

The application we're trying to load balance is fairly complex and allows multiple types of connections (using different protocols). We have an HTTP (and HTTPS) protocol and a raw TCP protocol. There is a unique identifier we use to determine which application instance a connection is for, and I have iRules for both HTTP and TCP to extract this, which work correctly. It's possible (and very likely) that different connection methods could be used for the same application instance.

Here's the problem: the pools seem to be specific to the connection type (port in this case) and each pool has a seperate persistence table. So even though I get the same unique ID the connections may go to different servers. What I really want to do is have a pool that's just the servers themselves (independent of the protocol) and when it routes to a server it just uses the same protocol that it received.

Here's an example persistence table I get when trying to connect. You can see that for one of the values (117586) both connection types happened to go to the same server, but for one of the other ones (117587) they went to different ones. Is there any way to set up a pool and iRules such that the persistence table is independent of the protocol being used?


PERSISTENT CONNECTIONS --
    Mode: universal   Value: 117587
    Virtual: 10.10.70.171:9080    Node: 10.10.70.39:9080    Age:  98sec
 
    Mode: universal   Value: 117587
    Virtual: 10.10.70.171:http    Node: 10.10.70.32:http    Age:  25sec
 
    Mode: universal   Value: 117586
    Virtual: 10.10.70.171:http    Node: 10.10.70.32:http    Age:  118sec
 
    Mode: universal   Value: 117586
    Virtual: 10.10.70.171:9080    Node: 10.10.70.32:9080    Age:  102sec

3 Replies

  • Hi,

     

     

    I think you can just enable match across services on the persistence profile.

     

     

    For details on this option, see here:

     

     

    Click here

     

     

    Alternately, you could try configuring the VIP and nodes on 'any' port. Then the persistence records shouldn't include the service/port. This assumes that the VIP and node ports don't need to be translated. Then disable port translation on the VIP.

     

     

    If these options don't work, try posting your rule and snippets of the relevant bigip.conf objects.

     

     

    Aaron