RHEL needs a decent loadbalancer

Latest response

As you can see in the "popular tags" overview, there is a lot of attention for things like clustering / high availability / etc.

 

One thing that seems to be overlooked far too often, is that there's no decent loadbalancer included in RHEL.

 

On a active / active cluster (the only "real" cluster which can do high-availability AND high performance), you need a load balancer to govern the incoming requests.

 

There is only one loadbalancer included in RHEL (as far as I know), which is LVS (/ piranha / IPVS). This is a pretty good load balancer, but, as it's only a "simple" TCP / UDP load balancer, it can only operate at level 3 (OSI-wise). When trying to do more advanced things, like SSL offloading, LVS falls short.

 

We use LVS in our orginization for just about everything. We even LVS'ed (if that's a verb) our Exchange 2010 CAS servers.

 

There are alternatives, such as HAProxy, but HAProxy is tailor-made for HTTP requests, which is not always what you want. There is an alternative for MySQL servers (MySQL proxy), but again, this is tailor-made for a single type of request.

 

What seems to me is really needed, is a load balancer which can do arbitrary TCP / UDP forwarding (preferably using the in-kernel IPVS support, such as LVS does), but is also able (maybe via some kind of modular interface) to do more advanced things with the requests, such as SSL offloading, request rewriting etc.

 

Furthermore, LVS seems to be a pretty old piece of software already, and seems to need some cleanup regardless (i.e. reloading the config file does not work correctly when using the send_program directive).

Responses

HAProxy does more than http load balancing; if you skim through http://haproxy.1wt.eu/download/1.4/doc/configuration.txt , you'll see the following:

mode { tcp|http|health }
[...]
  Arguments :
    tcp       The instance will work in pure TCP mode. A full-duplex connection
              will be established between clients and servers, and no layer 7
              examination will be performed. This is the default mode. It
              should be used for SSL, SSH, SMTP, ...
[...]

I have seen people use haproxy for a gaggle of different tcp services; perhaps some "official" documentation regarding haproxy would be better than an actual appliance or custom RedHat piece.

 

+1 for haproxy

not having haproxy is a real weakness

Another +1 for HAproxy. I've been looking at a Cisco ACE for load balancing some HTTP services, but it is not very flexible, and is also buggy with regard to adding custom http headers.

Public bugzilla #860221 tracks the addition of a static uid and gid for haproxy to RHEL6 and is currently ON_QA. The addition of an actual haproxy package to RHEL6 is being tracked through private bugzilla #846067.

 

In short, it looks likely that haproxy will be delivered in RHEL6.

 

As for the issue of reloading the LVS config file not working correctly, I haven't come across this and it doesn't appear to have been reported to Engineering. You may want to open a support case with GSS on it.

Close

Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.