I have two virtual servers where I need sourceIP persistence when jumping between them. That's normally no problem using the default Across Virtuals option. The problem now is, that the poolmembers of each virtual server are different. It's something like this:
VS1: 10.10.10.10
- member1: 10.10.10.20
- member2: 10.10.10.21
VS2: 10.10.10.11
- member1: 10.10.10.30
- member2: 10.10.10.31
Members 1 and members 2 from each pool are corresponding, means if persistence for VS1 is pointing to member2, switching to VS2 must also be forwarded to member2.
Currently I have no Persistence profile configured, but handle this only with an iRule which looks like this:
- in the LB_SELECTED event I add/update the sourceIP in the persistence table
- in the CLIENT_ACCEPTED event I make a lookup for the sourceIP with the any virtual option
- if there isn't an entry for both VS the normal pool balancing decision takes place
- if the request was for VS1 and there is a persistence entry for this VS1, it will be used
- if the request was for VS2 and there is a persistence entry for VS1, the corresponding poolmember will be choosen (pool-command with member option)
Now my question is, what happend when there is any other VS which has nothing to do with this setup, but which has also sourceIP persistence configured and there is a sourceIP entry in the persistence table for this VS. What would be the result of the lookup?
Maybe I'm thinking in the wrong direction at the moment, but could this be a problem? Alternative I could use the dedicated pool-option for the lookup instead the any virtual, but then I need to loop through all possible allowed pools (two in the above example, later four because each VS will listen both on port 80 and 443, SSL can't be offloaded to the BIG-IP) until I have a positive result.
Or are there even any other or better ideas to solve this problem?
Thank you!
Ciao Stefan :)