Hardware vs Software Load Balancing. Traffic volumes are increasing and applications are becoming more complex. Load balancers provide the bedrock for building flexible networks, that meet evolving demands by improving performance and security for many types of traffic and services, including applications.
Hardware vs Software based Load Balancing solutions
Load balancers typically come in two flavors: hardware‑based and software‑based. Vendors of hardware‑based solutions, (ie F5 Networks or Citrix), load proprietary software onto the machine they provide (like a BIG-IP or VIPRION device), which often uses specialized processors and FPGAs.
To cope with increasing traffic at your website, you have to buy more or bigger appliances from the vendor. Software solutions generally run on commodity hardware, making them less expensive and more flexible. You can install the software on the hardware of your choice or in cloud environments like AWS EC2.
It is a softer world now
A few years ago, vendors of hardware-based load balancers like F5 Networks and Citrix didn’t provide a software-based solution.
Nowadays, with the advances in Cloud Computing and due to increased competition, form software-based vendors like Avi Networks and NGINX, F5 Networks and Citrix, are also providing software-based solution in the form of Virtual Machines, that you can run on your own Hypervisor like VMware, KVM, Hyper-V, etc or Images that you can run on Cloud environments, like AWS and Azure.
The last few years, there has been remarkable trend of decline of hardware sales for Load balaning appliances, and an increase on software-based solutions for load balancing.
Load Balancing role on Hardware or Software solutions
Whatever you are using a hardware-solution or software-based solution, the role of a Load Balancer is the same. It is a device, that acts as a reverse proxy and distributes network or application traffic, across a number of servers.
Load balancers are used to increase capacity, (concurrent users) and reliability of applications. They improve the overall performance of applications, by decreasing the burden on servers associated with managing and maintaining application and network sessions, as well as by performing application-specific tasks.
Load balancers are generally grouped into two categories: Layer 4 and Layer 7. Layer 4 load balancers act upon data found in network and transport layer protocols (IP, TCP, FTP, UDP). Layer 7 load balancers, distribute requests based upon data found in application layer protocols such as HTTP.
Requests are received by both types of load balancers, and they are distributed to a particular server, based on a configured algorithm. Some industry standard algorithms are:
- Round robin
- Weighted round robin
- Least connections
- Least response time
Layer 7 load balancers, can further distribute requests based on application specific data such as HTTP headers, cookies, or data within the application message itself, such as the value of a specific parameter.
Load balancers ensure, reliability and availability by monitoring the “health” of applications, and only sending requests to servers and applications that can respond in a timely manner.
Dynamic Configuration of pools (Server Groups)
With the advances in Cloud and Elastic Computing, many fast‑changing applications require new servers to be added or taken down on a constant basis. This is common in environments such as the Amazon Web Services (AWS) Elastic Compute Cloud (EC2), which enables users to pay only for the computing capacity they actually use, while at the same time ensuring that capacity scales up in response traffic spikes.
In such environments, it greatly helps if the load balancer can dynamically add or remove servers from the group without interrupting existing connections.