HAPROXY vs NGINX : Better Load Balancer ?

First of all , what is Load balancing ? In a layman's term, it is nothing more than Load distributing over multiple systems. To be more precise, instead of all requests pointing to a single resource increasing possibility of overloading, load balancing distributes the load. There are three common load balancing techniques.

  • Round-Robin
  • IP Hash
  • Least Connections

There is no hard-and-fast rule about choosing the right option. It depends upon the requirement which techniques to use. For more details visit my another post here.

Not to be biased and blaming any developers, here I will try to figure out plus and minus from NGINX and HAProxy. The decision will be made after discussing from both perspectives. In my other post, I have explained what NGINX can do better than Apache. But here the comparison goes between Nginx and HAProxy.

Plus & Minus of using NGINX

Although Nginx’s open source version of the load balancer is quite limited in terms of the statistics it provides (if you don’t use the community-developed module), Nginx does offer what they call Nginx Plus which is a paid solution. This solution provides more flexibility, however, gets to be quite pricey.

AdvantagesDisadvanatges
Nginx is canonical modern software of web server.
Not suitable for proxying and load balancing
Can do SSL offloadingHas NO interface where you can view statistics
Can sometimes be 'the only HTTPd you need', making administration simpler if you don't need any other HTTPd's. HAProxy has at least eight different algorithms, including common algorithms such as round-robin, static round-robin and least connection. Nginx offers just three different algorithms and for that reason, is not as flexible.
Low memory footprint, modular design Advanced load balancing features( dynamic configuration,   status page,  advanced load balancing algorithms,   session affinity (via special cookies),   backend servers status polling etc.)    are either only in commercial version of nginx or not available yet.   So HAproxy still has notable advantages, when it is about load balancing only.

Plus & Minus of using HaProxy

Advantages Disadvantages
HAProxy is reliable and fast open source solution for proxying and load balancing.
Not for web server
Advantages of HAProxy can be added to some of the shortcomings of Nginx, such as Support Session to maintain, Cookie boot; and support to detect the status of the back-end server by getting the specified url. Lack of UDP support: For UDP we could use an alternative solution like LVS(Linux Virtual Server)
HAProxy load balancing algorithm is now specific as following:
1. Roundrobin ;
2. static-rr, according to the weight ;
3. Leastconn, said the least connected to the first deal ;
4. Source, according to the request of the source IP, the nginx IP hash mechanism with similar ;
5. The RI said, according to the request of the URI;
6. The rl_param said, according to the URl parameters' request balance url_param 'requires an URL parameter name;
7. The HDR (name), according to HTTP request header to lock every HTTP request;
8. The rdp-cookie (name) said, according to cookie (name) to lock and hash every TCP request.
Support is going to be from the mailing list or the HAProxy community site. For Enterprise edition, you need a paid service.

Summary

Nginx is a great open source web server. But when it comes to Load Balancing functions, I think Nginx losses the match against HAProxy. When you are already using Nginx, need very basic load balancing functions and happy it with, go ahead with Nginx. Even as a reverse proxy, Nginx works fine. But looking from robust, scalable and reliable Load Balancer, I will go with HAProxy. With high availability, monitoring functions and many more, HAProxy comes in the first line.

In conclusion, there is no real right or wrong answer – nginx can be a nice and convenient solution, especially when one can leverage more of its functions together, but HAproxy can offer more when one looks for advanced load balancing.

As a best option, you can also use both Nginx and HAProxy together to take advantage of each solution’s strong points. Nginx as web server and HAProxy as Load Balancer.
You can check my other post on how to conifgure them together.

mm

Anup Chhetri

IT system administrator

You may also like...

error: Content is protected !!