Open source load-balancers and high availabilty cluster software

Load balancing is the processing and distribution of communications equally across a network to achieve high security, scalability and redundancy. Load balancing is required where a network server is configured to communicate and respond to fast simultaneous incoming requests from a WAN or spoke networks. If the network server has less capacity to handle the forwarded requests, it requires load balancing to support the server, this is actually to improve response and communication.  Web-hosting providers use load-balancing to cope up with increasing customer needs. A hardware load balancer is a commercial PC class device with an embedded linux software, packet forwarding ability and inbuilt NIC cards.


English: SMLT mesh with nine 1Gig paths (all c...

Software load-balancers conveniently and transparently facilitates distribution of load beyond the gateway across to multiple clients behind the scenes that initiate the actual processing.  load-balancing is further scalable when multiple load balancers are logically chained together creating a fail-over cluster.

Examples of load-balancing software ;

Linux virtual server (LVS)

LVS is one of the earliest and most common forms of load-balancing. Early versions of the LVS project implementation worked with linux 2.2 version of the kernel.  Until the linux-2.4 version, embedded kernel packet filtering architecture allows LVS to be implemented as modules. Unlike version 2.2, kernel 2.4 is suggested that where possible just these options are built as modules.

Networking options  --->
  Network packet filtering (replaces ipchains)
  <m> IP: tunnelling
  IP: Netfilter Configuration --->
     <m> Connection tracking (required for masq/NAT)
        FTP protocol support
      IP tables support (required for filtering/masq/NAT)
        Packet filtering
         <m> REJECT target support
       <m> Full NAT
         <m> MASQUERADE target support
         <m> REDIRECT target support
         <m> NAT of local connections (READ HELP) (NEW)
       <m> Packet mangling
         <m> MARK target support
       <m> LOG target support

The Linux Virtual Server Project (LVS) uses using Layer 4 Switching that supports load balancing of networking services such as web and mail servers that use TLS and SSL protocols. It is extremely fast and allows scalability of the services to achieve 10s or 100s of thousands of simultaneous connections. Debugging an LVS system is simple. The network can be tracked and debugged using network monitoring tools from even outside so long as it is a done on a virtual network interface that differs from the one that contacts the outside world (primary interface).


BalanceNG is a small, fast, and easy to setup with different communication load methods  like Round Robin, Random, Weighted Random, Least Session, Least Bandwidth, Hash, Agent, and Randomized Agent) and a customizable UDP  connection health check. It supports VRRP to set up high availability configurations on multiple clients. It supports SNMP, integrating the BALANCENG-MIB with Net-SNMPD. It implements a very fast in-memory IP-to-location database, allowing powerful location-based server load-balancing.


Nginx or Engine X as pronounced is one of the popular web-servers and loadbalancing software powering at least 6% of web-servers around the globe. It has easy and flexible configuration with a true config “reload” support. Features, like SNI server naming indication (SNI) is synonymous with nginx, and allows users to host multiple SSL websites using a single IP.  It synchronizes user requests into one instance rather than call for a new thread suitable for database intensive applications or web-based applications that include hosting, uploading or downloading of multiple files.  Engine X , is also used as reverse proxy because with its inbuilt powerful scripting language that uses conditional logic for advanced configuration directives.

Haproxy (High Availability Proxy)

HAProxy is a great TCP/HTTP load balancer that distributes a workload across a set of servers to optimize network resource usage. A setup that requires a connection between a front-end applications and a database backend can easily decrease server performance with many concurrent running connections; therefore HAProxy provides queuing connections towards one or more related databases and prevents degradation of server performance because of too many requests.

Monitoring and debugging ha-Proxy

Current version of HAProxy load-balancers have a GUI intergrated web-based dashboard with global stats, server stats, and aggregate stats for both the frontend and backend on a single page where you can see which servers are busiest or even those experiencing downtime. Debugging degraded performance is simple at service level using the HAProxy dashboard instead of just determining routine health checks by establishing a TCP connection. This is because even though a virtual server is used to facilitate distribution of load to a database the database backend may experience downtime and still be able to respond to TCP connection requests.

Redhat cluster suite

Red Hat Cluster Suite has distinct types of clustering

  • Application/Service Failover
  • IP Load Balancing

Load balance incoming IP network requests across a farm of servers  With Red Hat Cluster Suite, applications can be deployed in high availability configurations so that they are always operational-bringing “scale-out” capabilities to Red Hat Enterprise Linux deployments for high-volume open source applications, such as NFS, Samba, and Apache

Ultra Monkey

Ultra Monkey enables load balancing for network services HTTP, HTTPD, SSL, TLS. For example a cluster of web servers that appear as a single web server to end-users. The service may be for end-users across the world connected via a virtual private network, or for enterprise users connected via a local intranet. Ultra Monkey uses the Linux OS to provide a flexible solution ranging from clusters of only two clients to large systems serving huge loads of traffic per second.


The Pound program is a reverse proxy, load balancer and HTTPS front-end for Web server(s). Pound was developed to enable distributing the load among several Web-servers and to allow for a convenient SSL wrapper for those Web servers that do not offer it natively. Pound is distributed under the GPL – no warranty, it’s free to use, copy and give away.”

Load Balancer Project

The Load Balancer Project is a tool with a transparent proxying feature that allows clients to balance requests using clusters of servers. The goal of the project is to achieve high availability load balancing with a simple configuration for the load balancing. It has a plugin module that leaves the servers untouched so the configuration only resides on the load balancer, and it allows you to manage any type of service via a plugin model design and a transparent proxy feature.


Balance is a simple but powerful generic TCP proxy with round-robin load balancing and failover mechanisms. Its behavior can be controlled at runtime using a simple command line syntax. Balance supports IPv6 on the listening side, which makes it a very useful tool for IPv6 migration of IPv4 only services and servers.

Distributor load balancer

Distributor is a software TCP load balancer. Like other load balancers, it accepts connections and distributes them to an array of back end servers. It is compatible with any standard TCP protocol (HTTP, LDAP, IMAP, etc.) and is also IPv6 compatible. It has many unique and advanced features and a high-performance architecture.

Pure Load Balancer

Pure Load Balancer is a high-performance software load balancer for the HTTP and SMTP protocols. It uses an asynchronous non-forking/non-blocking model, and provides fail-over abilities. When a backend server goes down, it automatically removes it from the server pool, and tries to bring it back to life later. Pure Load Balancer has full IPv6 support and works on OpenBSD, NetBSD, FreeBSD and Linux.

Load Balancer Project

The Load Balancer Project is a tool that allows you to balance requests using clusters of servers. The goal is to achieve high availability load balancing with a simple configuration for the load balancer and the network topology. It leaves the servers untouched so the configuration only resides on the load balancer, and it allows you to manage any type of service via a plugin model design and a transparent proxy feature.


mod_athena is an Apache-based application load balancer for large systems. It allows the HTTP server to act as a load balancer either internally to Apache’s own mod_proxy (for reverse proxying), or externally to machines querying it. Arbitrary statistics are sent to the engine via a simple GET plus query-string interface, from which it will then make decisions based on chosen algorithms.


Udpbalancer is a reverse proxy that sorts UDP requests from your clients to your servers. It may operate in round-robin, volume balance, and load balance modes.


MultiLoad is a load balancer that redirects HTTP requests to pre-defined servers/locations. It gives the provider a way to balance the traffic by masquerading the real download location. It allows you to manage different versions of each download. It is also a load balancing server extension. You can distribute files on some servers so that a downloaded file can be loaded form different servers.

technical credits