Forum Discussion
How to provide a premium access for the VIP (Very Important People) ?
Hi, I've been challenged on an unexpected topic, and I'd appreciate your suggestions :
We have a java-based application, Tomcat is often under heavy load, and when too much users are on the same server the response time starts to increase dramatically. But we do not want to add more servers, we'll have to stick to the available hardware (3 machines) and accept the bad performance.
The application owner asked me if it was possible, with the F5, to grant a "premium access" for specific users, where they would be only some happy few to use a dedicated server ; whereas the regular users (and webservice queries) would use the other two servers that will be slower because under an heavier load.
Let's say that server1 and server2 are for regular users, and server3 is saved for premium users.
Also, we want to minimize downtime of the application, so we want to fallback to all available servers if one of them is missing ... Especially if server3 is missing, we obviously expect premium users to fallback to server1 and server2. Same goes for server1 and server2 downtimes.
And finally, we want to use a single entry point for everyone, it would be too easy otherwise to use two different VS :)
The first question is "how to identify premium users ?"
- we can assume that we know their IP@ and have a list of it ...
- or we can assume that we look for a specific header ...
In both cases we know how to manage that with iRules, so let's skip to the tricky part :
"How to save one server for premium access ?"
I thought about two approaches :
- first one is to load-balance using 2 different ratios, default ratio is set to 100 for server1 and server2; and 1 for server3. And if a premium user comes in, the ratio should be set to 1-1-100 instead, but only for this user => is this even possible ?
- second approach is to use priority groups, server1 and server2 have a priority group of 2, whereas server3 has a priority group of 1. And if a premium user comes in, he should use the server with the priority group of 1 => I found no way to deal with priority groups in iRules
I could hard-code the algorithm that says "if premium user && server3 is available then use server3 else round robin server 1 or 2" but my goal here would be to have a more generic approach that could be used on any virtual server regardless of the number of members, and without specifically writing the name of the node I want to use. So this iRule/property could be used on different Virtual Servers without having to rewrite it.
What are your suggestions ?
Regards
- Cyril_M
Altostratus
I think the most "genuine" approach would be to combine a higher priority group for servers 1 and 2 ; and a ratio set to 100 for server3 (but with a lower priority group).
If there was a way to just disable the priority group when a user is identified as premium ; then he would automatically go to the server with highest ratio (server3) whereas regular users would stick to servers with highest priority group (1 and 2)
But I found no way to just disable the priority group with iRule for one particular user ... Did I miss something ?
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com