Setup Nginx as Load Balancer on Ubuntu

HOW TO SETUP NGINX LOAD BALANCING



LOAD BALANCING : Load Balancing is an efficient mechanism which improves the distribution of workloads or traffic across several capable Virtual Private Server.Using multiple components with load balancing instead of a single component may increase reliability and availability through redundancy.The Round Robin Algorithm will sequentially distribute requests across the group of servers and easy to implement.


SETUP : To setup Nginx Load Balancing

  • You must have root privilges on your VPS.

  • Nginx must be installed on your VPS.


By using "apt-get", you can easily install it.

sudo apt-get install nginx


UPSTREAM MODULE : In order to setup Round Robin Load Balancer,we have to use Nginx upstream module and include configuration into the Nginx setting.




sudo nano /etc/nginx/sites-available/default


Now, add the load balancing configuration to the file.

1. Include the Upstream Module


upstream xyz  
{
server xyz1.example.com;
server xyz2.example.com;
server xyz3.example.com;
}


2. Now, reference this module in the configuration. request from http://xyz would be distributed to xyz1.example.com, xyz2.example.com and xyz3.example.com

server
{
location /
{
proxy_pass http://xyz;
}
}


Now, restart nginx with:  


sudo service nginx restart





Several directives are used to direct site visitors more effectively to equally distribute load across virtual servers.


WEIGHT : Nginx allows us to assign weight to machines in number specifying the proportion of traffic that should be directed to each server.



upstream xyz
{
server xyz1.example.com weight=1;
server xyz2.example.com weight=2;
server xyz3.example.com weight=4;
}


If a server is known to be inactive, it should be marked as down like 




server xyz3.example.com.com  down;


MAX FAILS : There are two factors associated with the max fails: max_fails and fall_timeout.


Max_fails refers to the maximum number of failed attempts to connect to a server should occur before it is considered inactive.

Fall_timeout specifies the length of that the server is considered inoperative.


Now, the configuration look like :

Once the time expires, new attempts to reach the server will start up again.
The default timeout value is 10 seconds.


upstream xyz
{
server xyz1.example.com.com max_fails=3 fail_timeout=15s;
server xyz2.example.com weight=2;
server xyz3.example.com weight=4;
}

This is all about using Nginx as a load balancer. Any doubts or suggestions are most welcome in comments.

Leave a Reply

Your email address will not be published. Required fields are marked *