1

Right.

I'm looking into setting up a system something like this:

         / [Load Balancer] \        /\/\/\/\/\/\/\
[LAN1] -                     ----- | Server Pool  |
         \ [Load Balancer] /        \/\/\/\/\/\/\/
                 |
           [Redundant    ]
           [Load Balancer]

In this setup, there would be an active-active configuration of load balancers (to ensure no Single Point of Failure) and a variable number of web servers in the pool. Servers can be set up and running at any time (through network booting) and so the Balancers should be able to add those servers to the backend without having to restart the service. As you can tell I'm pretty clear on what the problem is, but I'm not sure how to implement it. I was wondering:

1) In this situation, which load balancer would be best suited? The ones I've looked into so far are HAProxy, Linux Virtual Server, Ultramonkey and XR crossroads. LVS can support adding and removing servers without restart through ipvsadm, and crossroads has an (albeit hacky) way to support it. I haven't found any notes about this on HAProxy so I don't know if it's possible.

1b) Is there a "best" OS for a particular LB? Obviously Linux is going to be needed, but is there a flavour which is best suited to this?

2) Is it actually possible to set up an Active-Active configuration? I've seen lots of people saying they've done it, but no notes on how to do it.

3) Would it be better to connect each balancer to its own pool of servers (IE a different interface and physical LAN)? Would this make a difference?

Any ideas/ tips/ kicks to the brain are accepted. I've been doing a lot of reading and it's hard to know what is/ isn't worth looking into.

jackweirdy
  • 293
  • 2
  • 10
  • "Obviously Linux is going to be needed" -- whilst I'm a Linux sysadmin, and run all my load balancers with IPVS, that statement is really, really broken. – womble May 13 '12 at 00:01
  • I just mean that windows would probably make a sucky load balancer; I didn't mean to generalise for everything, I haven't considered hardware load balancers thus far. From what I've read it just sounds like Linux is the only kernel that most of these run on; IPVS compiles a _custom_ kernel from linux after all. – jackweirdy May 13 '12 at 13:03
  • IPVS is a standard part of Linux; you don't need a rebuild. Also, there are OSes other than Linux and Windows. – womble May 13 '12 at 20:58
  • Is it? Argh I guess this is the result of reading documentation thats 5+ years old. And yes there are, but of the load balancer's I've looked at they all seem geared for Linux – jackweirdy May 13 '12 at 21:01

1 Answers1

0

how do you distribute requests to both the active-active load balancers?

You would need some virtual-address technology like windows-NLB or CARP, or a network-device implementation like Cisco content-switching-module

For most scenario I prefer a Active-standby system with aggressive monitoring, and treat the load balancing systems as "core shared infrastructure".

While its certainly possible to use network-load balancing and virtual IP addressing solutions in specific cases, I found lots of incompatibilities and hence prefer not to use it on "general" networks where I cannot control what is likely to be deployed, (and hence don't know what incompatibilities might arise)

If you have complete control of the network, then sure NLB/LVS for the fun of it!

Tom
  • 11,176
  • 5
  • 41
  • 63
  • 1
    I read [this paper](http://www.ultramonkey.org/papers/lvs_jan_2004/stuff/lvs_jan_2004.pdf) which said it's possible by setting a common IP and MAC for the LB, then using an algorithm along the lines of all even ips go to LB1, all odds to LB 2. Cheers for the tips :D – jackweirdy May 12 '12 at 20:26
  • I guess its worth mentioning that there is always some points in some system that is a single point of failure. (to those who disagree I say, asteroid hitting planet earth?, how do you deal with that ;-) Hence HA is about [choosing your battles wisely](http://thewisdomwarrior.com/tag/sun-tzu/). Unicast IP is a very reliably protocol, combined with bonded interfaces, reliable (read Cisco/juniper) networking equipment, you really don't need NLB/virtual-ip, as it is just adding an unreliable technology to an already reliable stack. – Tom May 12 '12 at 21:23