Proxying Traffic to a Group of Servers
Follow the steps below
- Setup an upstream block within the http block
nginx configuration
http
{ upstream my_glassfish_cluster
{ server backend1.example.com weight=5; server 192.168.99.100:28080; server 192.168.99.100:28081 backup; } }
Use weight to specify importance (1:lowest - 5:highest), use backup to specify only route to this server if all other servers in the cluster fail
Now specify the upstream group that nginx will pass requests to (can be any one of the following protocols: proxy_pass, fastcgi_pass, memcached_pass, uwsgi_pass, or scgi_pass)
nginx configuration
http
{
...
server
{ location /
{ proxy_pass http://my_glassfish_cluster; }
} }
This will pass all http requests up to my_glassfish_cluster server group
Choosing a Load Balancing Method
NGINX supports four load balancing methods in the open source version and one extra method in the paid version
Open source methods
- round-robin - iterate equally around each server in a server group
- least_conn - send requests to server with the least number of connections
- ip_hash - using a hash algorithm, select server in a server group based on client's IP address
- hash - the server to which a request is sent is determined from a user-defined key which may be a text, variable, or their combination
Paid version
- All of above
- least_time - for each request, NGINX Plus selects the server with the lowest average latency and the least number of active connections, where the lowest average latency is calculated based on which of the following parameters is included on the
least_time
directive:header
– Time to receive the first byte from the serverlast_byte
– Time to receive the full response from the server