Forum Discussion

omegaman66_1784's avatar
omegaman66_1784
Icon for Nimbostratus rankNimbostratus
Nov 10, 2015

Persistence between front end and back end servers

I'm trying to setup persistence but its not load balancing the way I want it to on the backend server

 

In this exemple I have a client connect to a web server which then connect to a tomcat server

 

Client -> VS Frontend (WebA node and WebB node) -> VS Backend (BackA node and BackB node) WebA and WebB node use the same SNAT IP to communicate out.

 

So I'm trying to set up persistence that the client talks to the same Backend node I was going to do source persistence.

 

And that works fine for the FrontEnd Server however when I try source persistence on the Backend server Instead of creating the persistence based on client IP ,it goes based on the SNAT IP that both WebA and WebB uses and since I'm using source persistence on the Backend,it goes to the same node over and over.

 

Is there a solution for this?

 

Omega

 

1 Reply

  • It's surprising that persistence uses the SNAT IP since persistence should be applied before SNAT in the BIG-IP. But that it's not doing persistence based on the client's IP is not surprising however, since it's the frontend servers that opens the second connection to the backend Virtual Server, and thus the Source IP should be either WebA or WebB, so doing source address persistence when you have only two possible sources will never work very well.

     

    As for a solution, yes there is - use another persistence method. I would suspect that the application has some form of session ID included in the traffic, either in the form of a cookie or maybe as a parameter in the URI. There is a persistence method called universal persistence and the idea there is that you write an iRule that extracts the session ID from the traffic and then the universal persistence will persist on that value. So do you know how that session ID is sent (cookie or parameter or both)?