On Wed, 14 Jan 2009, Atom Powers wrote:

> I see two strategies emerging:
> * Internal load balancing: let the servers negotiate between each other to
> determine which one should service the request. aka linux-ha, carp.
> But a pretty serious problem occurs if one or more of the servers fails in
> such a way that it thinks all the other servers are down and all the other
> servers think that it is down. I would rather not leave it up to the servers
> in the cluster to decide if they have failed or not.
>
> * External load balancing: use a proxy or router to balance requests among a
> cadre of servers. aka F5, pf rdr rules, ipvs/lvs.
> But how do you make the load balancer highly available? A hardware load
> balancer will be more stable than any server, but it can still fail.

it's basicly the same software running on the external box as you would 
put on the server.

and if you use an external box you need to have two of them (so that if it 
fails you aren't dead), how do you think the two of them decide which is 
primary?

you can't eliminate this problem by throwing external devices at it, you 
just move the problem to your external devices.

> ipvs/lvs hasn't been updated since 2004 (the FreeBSD port was last updated
> in 2005). While that might indicate a mature project, I'm skeptical;
> especially given the amount of work that has gone into other networking
> projects since then.

LVS has been in the kernel (as opposed to an external module) for several 
years, the development is continuing, but in the kernel, not in the 
external module

> linux-ha/heartbeat looks interesting, but sounds like it could be very
> suceptabe to the situation where more than one server thinks that it should
> be the only server.

why do you think this?

heartbeat can use multiple network channels between the boxes so that a 
switch failure won't cause you problems. you can configure it to check an 
external device as well, you can configure them to power the other box off 
if you think it's dead.

at some point this should satisfy your needs.

but the other question is 'what is the worst that happens if you do have 
a split-brain happen'

what would happen is that both boxes would accept updates from the 
network, but they wouldn't replicate them so new changes would only go 
into one.

depending on what you are doing with the system, this can range from an 
inconvienience, to a disaster. you need to decide this. if it's a disaster 
then you can configure heartbeat in it's most paranoid mode (power off the 
other system if you think it's sick), if it's not you can be less paranoid 
(simple redundant network connections are usually good enough)

> I can build a pretty simple, and moderatly robust, load balancer using carp,
> pf, and router-side scrips which should do nearly the same thing as a
> layer-7 router. This seems like my best option at the moment. (It doesn't
> *have* to be open source, but my CFO would appreciate it.) Unfortunatly pf,
> as near as I can tell, doesn't do weighted redirection and would require
> scripts, and associated load, to manage the IPs in the cluster.

you really don't want to roll your own here unless you have very special 
needs. there are a lot of subtle interactions and failure modes that are 
easy to get wrong. you are better off taking advantage of the experiance 
and testing of others.

David Lang
_______________________________________________
Tech mailing list
Tech@lopsa.org
http://lopsa.org/cgi-bin/mailman/listinfo/tech
This list provided by the League of Professional System Administrators
 http://lopsa.org/

Reply via email to