Forum Discussion

Dbow_21284's avatar
Dbow_21284
Icon for Nimbostratus rankNimbostratus
Jul 10, 2009

Design - LB Servers running 30 Sites - ALL HTTP

I am looking for advice on the best way to load balance many sites on multiple web servers. Its all HTTP too and all sites are running on the same default ip and port 80. We are justing using the host headers to direct within IIS.

 

 

A little background first: I wanted to create multiple pools (essentially one for each site) so I can do advanced monitoring for each site individually, rather than do a blanket pool and VS. Also I want to use a HTTP profile to redirect to fallback host (maintenance page) when its not available, but thinking this is rudimentary way of doing it and wont really work here. My idea originally was to create a single Vitual Server and use iRules to examine the HOST header and direct it to a pool accordingly. However, a Virtual Server needs to have a default pool associated with it.

 

 

So the issues I am thinking will be the following:

 

1) If the default pool goes down, then everything is down as the VS will be red and marked down

 

2) The HTTP profile with the fallbackhost goes on the virtual server. Thus, if the VS is not down in the LTM's eyes, then it will continue to send traffic to all pools even though a pool (or some pools) might be down and will only redirect to fallback if the default pool on VS config is down.

 

 

GOAL:

 

1) What is the best way to design something so that I can monitor each site individually? (FYI I have monitoring working using HH)

 

2) What is the best way to do this if I DO NOT want to create a VS for each site?

 

3) How do I direct traffic to maintenance page if a specific site is down (pool)?

 

4) Do I just create a default pool that will always be up and then use iRULE to examine host header, determine pool it should goto, test that at least one member in the pool is available, send the traffic to it, otherwise send to maintenance page.

 

 

I am assuming this would all be done via iRules but wanted to get feedback from the experts.

 

 

2 Replies

  • I am thinking I can do something like this:

     

     

    when HTTP_REQUEST {

     

     

    if { [HTTP::host] equals "guidelines.acc.org" } {

     

    if {[active_members SP_Guidelines] > 0} {

     

    pool SP_Guidelines

     

    } else {

     

    HTTP::redirect "http://maintenance.acc.org"

     

    event disable all

     

    }

     

    } elseif { [HTTP::host] equals "members.acc.org" } {

     

    if {[active_members SP_Members] > 0} {

     

    pool SP_Members

     

    } else {

     

    HTTP::redirect "http://maintenance.acc.org"

     

    event disable all

     

    }

     

    } elseif { [HTTP::host] equals "qualityfirst.acc.org" } {

     

    if {[active_members SP_QF] > 0} {

     

    pool SP_QF

     

    } else {

     

    HTTP::redirect "http://maintenance.acc.org"

     

    event disable all

     

    }

     

    }

     

    .......

     

    }

     

     

     

    But I guess I am confused on if I do it this way I still need a pool to be in the VIP for it to be up. For instance, if there is no pool, its RED in the LTM GUI.

     

     

    So not saying that I solved my issue, but I am researching and welcome all feedback ona design.

     

     

    Thanks so much in advance.

     

     

    Dbow
  • Ok so I guess it would be fine to just create a dummy Pool that uses the IPs of servers and just monitor health via ICMP! Cuz if I cant ping it, then everything else is down anyway and I can just redirect to maintenance via fallbackhost in HTTP profile.

     

     

    So again, looking for feedback if anyone else thinks there is better way of doing it and maybe there is something that I am not considering.

     

     

    Thanks again in advance.

     

     

    Dbow