Nginx/lvs/haproxy Load Balancer software pros and cons

Source: Internet
Author: User
Tags node server haproxy nginx load balancing

Ps:nginx/lvs/haproxy is currently the most widely used three load balancing software, I have been implemented in a number of projects, reference to some information, combined with some of their own experience, summed up.

The general use of load balancing is to use different technologies depending on the stage of the site's ascent. Specific application needs to be specific analysis, if it is small and medium-sized Web applications, such as the daily PV less than 10 million, with Nginx can be completely; if there are many machines, you can use DNS polling, LVS consumes more machines or more, large web sites or important services, and the server is relatively long, You can consider using LVS.

One is through the hardware to carry out, the common hardware has more expensive F5 and array and other commercial load balancer, its advantage is that there is a professional maintenance team to maintain these services, the disadvantage is that the cost is too large, so for the smaller network services for the moment there is no need to use The other is Linux-based, open-source, free load balancing software similar to Nginx/lvs/haproxy, which is implemented at the software level, so it's very inexpensive.

At present, the structure of the Web site architecture is generally more reasonable: the Web front-end uses nginx/haproxy+keepalived as the load balancer, and the backend uses the MySQL database as a master and read-write separation, using the lvs+keepalived architecture. Of course, according to the specific needs of the project plan.
The following is the respective characteristics and applicable occasions.

The advantages of Nginx are:

1, work on the 7 layer of the network, you can do some diversion strategy for the HTTP application, such as for the domain name, directory structure, its regular rules more powerful and flexible than haproxy, which is one of the main reasons for its widespread popularity, The nginx can be used more than LVS on this occasion.
2, nginx dependence on network stability is very small , in theory can ping pass the load function, this is one of its advantages; Contrary to the network stability of LVS is relatively large, which I have deep experience;
3, Nginx installation and configuration is relatively simple, easy to test, it is basically able to print out the error log. LVS configuration, testing will take a relatively long time, LVS on the network dependence is relatively large.
3, can bear high load pressure and stability, in the case of hardware is not bad generally can support tens of thousands of times the concurrency, the load is relatively smaller than LVS.
4, Nginx can detect the server internal failure through the port, for example, according to the server processing the status code returned by the Web page, timeout, etc., and will return the wrong request resubmitted to another node, but the disadvantage is that the URL is not supported to detect. For example, the user is uploading a file, and processing the upload node just in the upload process failure, Nginx will upload to another server to re-processing, and LVS directly broken off, if it is to upload a large file or very important files, users may be dissatisfied.
5, Nginx is not only a good load balancer/reverse proxy software, it is also a powerful Web application server. Lnmp is also a very popular web architecture in recent years and has a good stability in high-traffic environments.
6, Nginx now as the Web reverse acceleration cache more and more mature, faster than the traditional squid server, you can consider using it as a reverse proxy accelerator.
7, Nginx can be used as a middle-class reverse proxy, this level nginx basically no opponent, only can compare Nginx only lighttpd, but lighttpd at present has not done nginx full function, configuration is not so clear and easy to read, Community information is far from Nginx active.
8, Nginx can also be used as a static web page and image server, this aspect of performance also no opponent. The Nginx community is very active and there are many third-party modules.

The drawbacks of Nginx are:
1, Nginx can only support HTTP, HTTPS and email protocol, so in the scope of application smaller, this is its shortcomings.
2, the back-end server Health check, only support through the port to detect, not supported by the URL to detect. the direct hold of the session is not supported, but can be solved by Ip_hash.

LVS: Using a Linux kernel cluster to implement a high-performance, highly available load-balancing server with good scalability (Scalability), Reliability (reliability), and manageability (manageability).

The advantages of LVS are:
1, anti-load capacity, is the work in the Network 4 layer only for distribution, No traffic generated , this feature also determines its performance in the Load Balancer software is the strongest, the memory and CPU resource consumption is low.
2, the configuration is relatively low, this is a disadvantage is also an advantage, because there is not much to configure things, so do not need too much contact, greatly reducing the chance of human error.
3, the work is stable, because of its own resistance to load capacity is very strong, the self has a complete two-machine hot-standby program, such as Lvs+keepalived, but we in the project implementation of the most used or lvs/dr+keepalived.
4, no traffic, LVS only distributes the request, and the traffic does not go out from itself, this ensures that the performance of the Equalizer IO will not receive large traffic impact.
5, the application of a wide range, because LVS work in the 4 layer, so it can almost all applications to do load balancing, including HTTP, database, online chat room and so on.

The disadvantages of LVS are:
1, the software itself does not support regular expression processing, can not do static and dynamic separation , and now many sites in this area have a strong demand, this is the advantage of nginx/haproxy+keepalived.
2, if the application of the site is relatively large, lvs/dr+keepalived implementation is more complex, especially after the Windows Server machine, if the implementation and configuration and maintenance process is more complex, relatively, nginx/haproxy+ Keepalived is a lot easier.

Haproxy is characterized by:
1, Haproxy also support virtual host.
2, the advantages of haproxy can be added to some of Nginx's shortcomings, such as support session to maintain, cookie guidance, and support by obtaining the specified URL to detect the status of the backend server.
3, haproxy similar to LVS, itself is just a load balancer software, simply from the efficiency of haproxy will be better than nginx load balancing speed, in concurrent processing is better than nginx.
4, HAProxy support the TCP protocol load-balanced forwarding , MySQL read load Balancing, the backend of the MySQL node detection and load balancing, you can use lvs+keepalived to load balance MySQL master and slave.
5, Haproxy Load Balancing strategy is very many, Haproxy load balancing algorithm is now specific to the following 8 kinds:
①roundrobin, said the simple polling, this is not much to say, this is the load balancer basically have;
②STATIC-RR, said according to the weight, suggest concern;
③leastconn, indicating that the minimum number of connections to deal with, suggest concern;
④source, according to the request source IP, this is similar to Nginx's ip_hash mechanism, we use it as a way to solve the session problem, it is recommended to pay attention to;
⑤ri, which represents the URI according to the request;
⑥rl_param, which represents the URL parameter according to the request ' balance Url_param ' requires an URL parameter name;
⑦HDR (name), which indicates that each HTTP request is locked according to the HTTP request header;
⑧rdp-cookie (name), which indicates that each TCP request is locked and hashed according to the cookie (name).

Disadvantages of Haproxy:

But for HAPROXY,STATIC-RR is a simple poll, the logic of choosing server is the simplest. Roundrobin, in fact, is a high-level poll that supports dynamically modifying the server weight during the HAProxy run.

Whether it is STATIC-RR, Roundrobin or leastconn, are natural support weight. Only during run time, the STATIC-RR server weight cannot be changed or changed and is not valid. All cases where weight is 1 are a special case of the weight-based load balancing algorithm.

HAProxy disadvantages are not introduced. In combination with the individual on the NIGNX part of the understanding, listed some HAProxy less than Nginx place, for reference only:
1. POP/SMTP Protocol not supported
2. SPDY protocol not supported
3. The HTTP cache feature is not supported. Now many open-source lb projects, are more or less with the HTTP cache feature.
4. The functionality of the overloaded configuration requires a restart process, although it is also soft restart, but no Nginx reaload is more smooth and friendly.
5. Multi-process mode support is not good enough.

a summary of the comparison between Nginx and LVs:
1, Nginx work in the Network 7 layer, so it can be targeted at the HTTP application itself to do the shunt strategy, for example, for the domain name, directory structure, in contrast, LVS does not have such a function, so the nginx alone can use the occasion far more than LVS But Nginx is useful for these functions to make it more adjustable than LVS, so often to touch touch, touch more, the probability of human problems will be large.
2, Nginx reliance on the stability of the network is small, theoretically as long as the ping, Web Access is normal, nginx can be connected, this is a big advantage of Nginx! Nginx at the same time can also distinguish between internal and external network, if the node has both internal and external network, the equivalent of a single machine has a backup line, LVS is more dependent on the network environment, at present, the server in the same network segment and LVS using direct mode shunt, the effect is more guaranteed. In addition, the LVS need to apply to the custodian at least one more IP to do the visual IP, it seems that it is not possible to use their own IP to do VIP. To do a good job of the LVS administrator, do have to follow up learning a lot about network communication knowledge, it is no longer an HTTP so simple.
3, Nginx installation and configuration is relatively simple, testing is also very convenient, because it is basically able to print out the error log. LVS installation and configuration, testing will take a long time, LVS on the network rely on a large number of times can not be configured to succeed is because of network problems rather than configuration problems, the problem to solve also the corresponding will be more troublesome.
4, Nginx can also withstand a very high load and stability, but the load and stability of the LVS there are several levels: Nginx processing all traffic so limited by the machine IO and configuration, the bug itself is still unavoidable.
5, Nginx can detect the internal failure of the server, such as the server to handle the return of the page status code, timeout and so on, and will return the wrong request resubmitted to another node. At present, LDIRECTD in LVS can also support monitoring the internal conditions of the server, but the principle of LVS makes it impossible to re-send requests. For example, the user is uploading a file, and processing the upload node just in the upload process failure, Nginx will upload to another server re-processing, and LVS is directly broken off, if it is to upload a large file or very important files, users may be annoyed.
6, Nginx to the request of asynchronous processing can help the node server to reduce the load, if using Apache Direct service, then there are a lot of narrow-band link when the Apache server will occupy a lot of memory and can not be released, using more than one nginx to do Apache agent, These narrow-band links will be blocked by Nginx, Apache will not accumulate too many requests, which reduces a considerable amount of resource consumption. This use squid also has the same effect, even if the squid itself is configured to not cache, the Apache still has a lot of help.
7, Nginx can support HTTP, HTTPS and email (the function of email less use), LVS support the application in this more than Nginx. In use, the general front-end strategy should be the LVS, that is, the DNS point should be the LVS equalizer, the advantages of LVS make it very suitable for this task. Important IP address, preferably by the LVS hosting, such as the database IP, WebService server IP and so on, these IP addresses over time, the use of polygons will become larger, if the replacement of IP will follow. So it is most prudent to give these important IPs to the LVS hosting, the only disadvantage is that the number of VIPs will be more. Nginx can be used as the LVS node machine, one can use Nginx function, the second is the performance of Nginx can be used. Of course, this level can also directly use the function of Squid,squid is weaker than Nginx, performance is also inferior to nginx. Nginx can also be used as a middle-tier agent, this level nginx basically no opponent, the only one can shake Nginx only lighttpd, but lighttpd at present has not been able to do nginx full function, configuration is not so clear and easy to read. In addition, the middle-level proxy IP is also important, so the middle-level agent also has a VIP and LVs is the most perfect solution. Specific application also have to be specific analysis, if it is relatively small site (PV less than 10 million), with Nginx can be completely, if the machine is also a lot, you can use DNS polling, LVS the cost of the machine is more; large web sites or important services, machines do not worry about the time, You should consider using LVs a lot.

The use of Network Load Balancing is now using different technologies as the scale of the site increases depending on the stage:

The first stage: using Nginx or Haproxy for a single point of load balancing, this stage of the server scale just out of the single-server, single-database mode, requires a certain load balancing, but still small, no professional maintenance team to maintain, there is no need for large-scale site deployment. This use of Nginx or Haproxy is the first choice, at this time these things get started fast, easy to configure, on the seven layer above the use of HTTP protocol can. This is the first choice.

The second stage: with the further expansion of network services, then the single-point nginx can not be satisfied, when the use of LVS or commercial array is the first choice, nginx at this time as a LVS or array of nodes to use, The specific LVS or array is selected according to the size of the company and the budget to choose,the application delivery function of the array is very powerful, I used in a project, cost-effective is much higher than F5, commercial first choice! but in general this phase of the relevant talent to keep up with the business, so the purchase of commercial load balance has become the only way.

The third stage: The Network Service has become the mainstream products, at this time with the company's popularity is further expanded, the ability of relevant talents and the number of the increase, then regardless of the development of their own product customization, and reduce the cost of the open source LVs, has become the first choice, then LVS will become the mainstream.
The final form of the ideal basic structure is:array/lvs-nginx/haproxy-squid/varnish-appserver.

Nginx/lvs/haproxy Load Balancer software pros and cons

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.