Routing traffic to compatible nodes using the value of a cookie and and HTML page with the same value
Consider a web application incompatible with previous or future versions of itself. V1 can only process HTTP requests from V1 clients, nothing else. The application adds a cookie (AV) to the response with the version (V1, V2, V3 etc) as the value. An HTML page in the application displays the same version information. Two versions cannot coexist on the same node. The action of logging off, deletes the cookie.
Consider a web farm with a large number of nodes. A subset host V1 and another V2. Its deployment day and V1 nodes is being upgraded to V2. Customers perform transactions during this time with zero tolerance for disruptions. Sticky sessions prevent traffic intended for nodes with V1 to be sent to nodes with V2. Some nodes with V1 remain to allow old sessions to bleed off.
A script removes a node with v1 from of the pool. A customer with a V1 client starts a transaction. The load balancer arbitrarily assigns the request to another node with V2 installed. The application blows up and disrupts the customer. Tomorrow the process starts all over again with V3.
How would one configure the F5
- to ensure that traffic with the V1 cookie is only redirected to nodes with V1 installed?
- to ensure that traffic with the V2 cookie is only redirected to nodes with V2 installed?
- to ensure that traffic with the V1 cookie is evenly distributed between nodes with V1 installed? Using sticky sessions means that some nodes work harder due to the usage from the customer.
- to transparently handle nodes with V3 (and other versions) installed?
The site is under constant load. Customers use the system 24x7. We'd like to minimise downtime or mistakes during deployment. An iRule makes sense, however, folks are concerned about upgrades from one version of the F5 to another. There is also HTTP class profiles, but it seems complicated.