Load Balancers for Linux?
scales asks: "We currently use the Dispatcher component of IBM's WebSphere Edge Server as a load balancer on some Red Hat boxes where I work, and the boss has asked me to look into OSS alternatives. I've already been pointed at Linux Virtual Server and Ultra Monkey, and I was wondering if any readers have had any experience with these packages, or had any opinions they could offer about other products." Ask Slashdot last visited a similar topic way back in 1999, so I think it might be time for an update.
If so did you call support? Who are you going to call if it is OSS? Make sure what ever you pick has at least some kind of level of support if this is a mission critical web farm. The last thing you want to have is a 24/7 web farm down and a manager standing behind you screaming.
No matter what anyone else here says, make sure you have support for this thing unless you are the one the wrote it, or it is just not that important to you to keep it up 24/7.
Neck_of_the_Woods
#/usr/local/surf/glassy/overhead
OpenMosix is a Linux Kernel Patch that distributes load between Linux boxes invisibly to the user. Spawn an application and it is migrated to the box with the most availble processing power. Details available at OpenMosix.org. It's in wide university use.
Simply put, it makes any group of linux boxes into a highly scalable cluster.
This may do what you wish, it may not, but it's a good option. I'm in process on setting it up t home now - first I had to get a kernel compile going.
OpenMosix sounds very interesting for multiplying processing power. We have more horsepower needs than capability now, and Solaris boxes are WAY too expensive - I want to migrate to an openMosix Linux cluster for way cheap.
Unitarian Church: Freethinkers Congregate!
I hear that the Wai Wai Tribe Is pretty good at balancing large loads.
(ok. that was retarded, but someone had to say it)
HURD - Hurd's Under Research & Development
Hmm. If it's x86 or Alpha hardware there's something called FreeBSD that might really help things out.
I used UltraMonkey way back a few years ago.. It did the job.. and we never went down.. it has i believe 4 ways you can weight the webservers.... Actually.. it does more than just webservers... which is a plus as well...
I liked..
ChiefArcher
If so look at JBoss's load balancing.
If you just want it for Web server there is an Apache module for load balancing as well.
Open Source Identity Management: FreeIPA.org
i havnt used it, but, isnt this what your looking for... http://www.backhand.org/mod_backhand/ anyone here used it? did it leave your days filled with joy and happyness or dispair and bitterness?
no sig today, come back tomorrow
I'm confused. Is there some reason why this job can't best be done with a content balancer? It's been about a year since I looked at them, but last I recall Cisco's Local Directors were very highly regarded. They had intelligent session-level balancing and such, and worked well.
I write in my journal
Since you're already familiar with RH, why not take a look at AS 2.1? IIRC, it's based on Mission Critical Linux's Kimberlite config.
Show me what you want, and I'll show you how to get along without it...
Dosen't apache now have a load balencing module... or can't you just hack mod_cache and mod_proxy to do it?
http://www.redhat.com/software/advancedserver/tech nical/piranha.html
Why aren't we told when editors moderate our posts?
I'm also interested in hearing about what other tools are available for load balencing under linux, but if you're using network dispatcher already why not keep on with that? I've played with it quite a bit and it seems pretty solid, so why switch? Is it falling short somewhere on features or what?
Just curious...
LVS was able to handle a medium-sized HTTP/HTTPS load at my last job quite well. It had 6 months of uptime serving 5-10 hits/second, and I literally never had to worry about it going down. In combination with mon, bringing machines up and down was never a problem, and failure situations were handled without the end user noticing.
Installation was a bit frustrating because I hadn't dealt with the networking issues before (the ARP problem). However, in the end it was only my lack of networking knowledge that was lacking, and the ARP problem turned out to be simple to overcome.
Support from the mailing list was great, I got thorough replies to my questions in a few hours. The documentation is good, although some parts of the HOWTO could be trimmed back a bit (more information than is needed to understand the problem, takes a bit of time to filter).
The hardware was two slower UP boxes (one live, one for failover), and the load was esstentially 0, even with mon and MRTG running.
LVS is of course just the load balancer, and the setup also included mon for monitoring, heartbeat for failover, and MRTG for trending. They all play well together, and create a very reliable, informative, load balancer setup.
Depending on your setup, one of the meta-packages such as Ultra Money or Redhat's HA suite might be best, but installing the components individually isn't much of a hassle either.
Buy a Cisco Local Director on Ebay. Buy two, they're cheap.
Spend 15 minutes setting it up.
Sleep well at night.
ask slashdot shows what they run.
Arrowpoint switch/load balancers.
You could go totally OSS, and use Resin Server, along with its HardCore httpd server, you can easily create a load balanced cluster in this manner, as well as doing some funky things with sharing JVMs... ... Or, you could look at EddieWare... not sure if that project is still running (use Google), but it looked quite promising last time I looked.
If it works the same way, I was told:
It send a Meta redirect to the client
then if the browser isn't old/broken connects
chews up some extra bandwidth, and s..l..o..w
OK, the request, redirect, and new request are
probably small compared to the returned page
and I was told this by a stateful, wire speed, L4+ switch vendor
It doesn't make very much sense to say "Should I use UltraMonkey or LVS?" as the latter is a piece of the former. There are other combinations of LVS+other stuff that you might put into that sentence: "Should I use Piranha or UltraMonkey?" or "Should I use UltraMonkey or Joe Macks LVS Config scripts?" or even "Should I build my own LVS scripts or use an existing framework?"
There are other HTTP load balancing options out there. Squid has a new branch in CVS called rproxy that handles multiple backend web servers very effectively with failure detection and other fun stuff (not to mention caching). Pound is a reverse proxy that does load balancing of HTTP traffic and SSL wrapping (most everything Squid can do for reverse proxying minus the caching features).
Balance is a generic TCP load balancer with some nice features. The best features being that it is simple and works on more platforms than just Linux and handles more than just the HTTP protocol. It probably has some disadvantages for some situations because it operates at a lower level than the HTTP proxies above, though it can probably do lots of the same things LVS does (I don't know very much about Balance).
Eddie is a neat framework written in Ericssons Erlang language. Seems to be dormant, but I think it is in pretty widespread use so is probably pretty stable.
Links:
LVS
Squid rproxy branch
Pound
Balance
Eddie
Enhanced Load Balancing via new features such as Network Address Translation (NAT), Kernel-level Content Based Routing (CBR) support and the WebSphere Edge Server Consultant for Cisco CSS switches. This can improve server selection, load optimization, and fault tolerance. -The linked to site...
I've been wanting to "balance"?? my DSL connection to the net... I want to give packets on certain ports higher priority... yet make sure that other trafic continues...
I want to be able to tune my network connection to make low latancy medium bandwith applications work awesome, while making sure that webserfing happens reasonably fast, and streaming has its data put into order and maybe cached on the router...
Basically, I want to prioritize between gaming, file sharing, streaming and downloading.. and browsing.
Maybe having a few seporate network stacks?? (do I even know what I'm talking about?) and a process that can send a Woah, slow down buddy command to the servers?
Please use [ informative / summarizing ] SUBJECT LINES
Flame me here
Scenario
m ynet/
v -Routing-HO WTO-15.html
DSL box
|
firewall (Linux/FreeBSD)
|
Your network
For FreeBSD look at dummynet.
http://info.iet.unipi.it/~luigi/ip_dum
Check out the weights and bandwidth stuff.
Or look for traffic shaper in the ipfw man.
For Linux look at netfilter aka iptables.
http://www.fokus.gmd.de/linux/HOWTO/Ad
# iptables -A OUTPUT -t mangle -p tcp --dport telnet \
-j TOS --set-tos Minimize-Delay
# iptables -A OUTPUT -t mangle -p tcp --dport ftp \
-j TOS --set-tos Minimize-Delay
# iptables -A OUTPUT -t mangle -p tcp --dport ftp-data \
-j TOS --set-tos Maximize-Throughput
--
Scenario
DSL
|
Cisco (firewall+router, with real IOS on it)
|
Your internal network
OR
DSL box = a Cisco router with IOS.
|
Your internal network
Use the Cisco queueing features - when I last checked years ago there was at least custom, priority, and fair queuing. The Cisco docs on their website are pretty good - lots of examples, lots of example configs.
We use LVS to handle millions of pages a day and it just goes on and on. I'm glad we didn't spend money on the big names.
We have been using LVS for about 8 months now. It is rock-solid. You would want to be combining it with keepalived for High Availability and failover. The thing about LVS is that it requires 2 dedicated load balancing machines to run in front of your web cluster. This can be a bit expensive. A possible solution that I discovered and am about to start evaluating, is a product called EAC. I initially found this product when searching for a way to cluster some MySQL servers together effectively. They are about to release an Apache solution as well. Where this product seems to differ is that there is no need for dedicated Load Balancing machines. The load distribution and scheduling is done by EAC software which is run directly from the machines in the cluster. As I say, I have not used it yet, but their documentation looks exciting and I have spoken to them in Finland. I am particularly excited about the MySQL clustering solution because it is promising to deliver the holy grail for MySQL which is a cluster of read AND write databases, sharing the same datasource in the same state with little or no performace hit for the real time replication. Bear in mind this is a commercial product with a per CPU license fee. But if you consider that you no longer need dedicated load balancers, the maths looks good.