Load balancing is defined as the methodical and efficient distribution of network or application traffic across multiple servers in a server farm. Each load balancer sits between client devices and backend servers, receiving and then distributing incoming requests to any available server capable of fulfilling them.
The underlying concept is simple but powerful. Imagine you’re working with a website that needs to serve a huge number of users. Currently, the domain points to the IP address of a single web server. Responding to each request consumes some fraction of the server’s resources. When the server is using all of its resources, it will either take longer to respond to requests or the requests will fail entirely and the user experience will suffer. You can add more RAM, more storage capacity, and, in some cases, additional CPU cores, but you can’t scale forever. Enter load balancers.
A load balancer acts as the “traffic cop” sitting in front of your servers and routing client requests across all servers capable of fulfilling those requests in a manner that maximizes speed and capacity utilization and ensures that no one server is overworked, which could degrade performance. If a single server goes down, the load balancer redirects traffic to the remaining online servers. When a new server is added to the server group, the load balancer automatically starts to send requests to it.
A load balancer performs the following functions:
- Distributes client requests or network load efficiently across multiple servers
- Ensures high availability and reliability by sending requests only to servers that are online
- Provides the flexibility to add or subtract servers as demand dictates
Load balancing offers many benefits including reduced downtime, redundancy, scalability, flexibility, efficiency, as well as global server load balancing.
Load balancing can be performed at various layers in the Open Systems Interconnection (OSI) Reference Model for networking.
Layer 4 (L4) load balancers work at the transport level. That means they can make routing decisions based on the TCP or UDP ports that packets use along with their source and destination IP addresses. L4 load balancers perform Network Address Translation but do not inspect the actual contents of each packet. Layer 7 (L7) load balancers act at the application level, the highest in the OSI model. They can evaluate a wider range of data than L4 counterparts, including HTTP headers and SSL session IDs, when deciding how to distribute requests across the server farm.
L7 load balancing is more CPU‑intensive than packet‑based L4 load balancing, but rarely causes degraded performance on a modern server. L7 load balancing enables the load balancer to make smarter load‑balancing decisions, and to apply optimizations and changes to the content.
Load balancers can be hardware-based or software-based.
Here’s our recommended free and open source software load balancers.
To provide an insight into the quality of software that is available, we have compiled a list of 12 load balancers. Hopefully, there will be something of interest for any organization that wants to manage their network or application server load.
Let’s explore the 12 load balancers at hand. For each title we have compiled its own portal page, a full description with an in-depth analysis of its features, together with links to relevant resources.
|Traefik||Modern HTTP reverse proxy and load balancer|
|HAProxy||High availability layer 7 load balancer and proxy server for TCP and HTTP|
|nginx||Includes a L7 load balancer|
|fabio||Fast, modern, zero-conf load balancing HTTP(S) and TCP router|
|BFE||Modern L7 load balancer|
|RoadRunner||High-performance PHP application server, load balancer, and process manager|
|Seesaw||Linux Virtual Server (LVS) based load balancing platform. L4 load balancer|
|gobetween||Modern and minimalistic L4 load balancer and reverse-proxy|
|nuster||High-performance HTTP proxy cache server and HTTP/TCP load balancer|
|GLB Director||Set of stateless L4 load balancer servers|
|Zevenet||Multilayer open source load balancer with support for L3, L4 and L7|
|Balance||Generic TCP proxy with round robin load balancing and failover capabilities|
We also want to mention Katran, a C++ library and BPF program to build high-performance layer 7 load balancing forwarding plane.
|Return to our complete collection of recommended free and open source software including our latest additions.|