Using iRules to separate applications and components across a large server environment.
I am a developer, not an f5 expert (just learning up on iRules...).
Problem today: 15 of our internal applications are all hosted on the same set of application servers. We have 3 load balanced application servers under F5 that have the same configuration and code deployed to them. The web services and websites that support those applications are hosted under individual virtual directories under wwwroot.
Today we have a VIP called http://prod01 and that points to the pool that has these 3 servers under it. The problem is that if we realize one of the services is a resource hog. We end up creating a 4th server and that server now needs all services that support all 15 applications on it.
What we want to do: We want to create separate VIPs for each application and sub component. This will allow us to put each applications services on an appropriate of servers required to support it. One service could be on just two servers and another on 5 servers. The naming convention we want is something like this:
environment-instance-tier-application-subcomponent
An example of this would be: dev-01-web-app1-component1
F5 Implementation Create one VIP, pools per app & component, and then use the iRule to decide which pool to use. There would be about 30-40 pools per environment. We have about 20 environments. The iRule would be similar to this..
when HTTP_REQUEST {
switch [string tolower [HTTP::host]]
{
"dev-01-web-app1-component1" {
pool Dev-01-web-app1-component1-80
}
" dev-01-web-app1-component2" {
pool Dev-01-web-app1-component2-80
}
…. and so on for about 40 more entries.
Questions:
Our internal F5 team thinks this is quite a bit of work. I think its worth the benefit this gives us. What do you think?
Does this seem like a reasonable thing to do? Or is this not what F5 is designed for?