Payara Server load balancing with NGINX
Published on 10 Nov 2015
by Claudio Salinitro
This short blog post will show you how to use NGINX to load balance between 2 or more Payara Server instances using the sticky session.
The sticky session directive is included in the commercial release of nginx only, for this reason we are using the nginx-sticky-module-ng (not officially supported) module:
https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng
There are some minimal syntax differences between this and the commercial module, the latter gives more flexibility and more configuration options.
Requirements
The sticky session directive is included in the commercial release of nginx only, for this reason we are using the nginx-sticky-module-ng (not officially supported) module:
https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng
There are some minimal syntax differences between this and the commercial module, the latter gives more flexibility and more configuration options.
Architecture:
Configuration:
nginx.conf
http {
upstream backend {
sticky domain=.mydomain.com path=/ expires=1h httponly;
server 192.168.0.3:28080;
server 192.168.0.4:28080;
}
server {
location / {
proxy_pass http://backend;
}
}
}
In the http block we add the list of our servers, and the sticky directive used to configure the cookie creation options. It’s possible to define the name of the cookie (by default is ‘route’), but if you use the JSESSIONID name it will conflict with the cookie created by the JAVA application servers behind.
In the server block we define which location (in our case the root /) should be proxied to the backed servers previously defined.
In case we have more nginx frontend servers, and a load balancer in front of, we can apply the same configuration to nginx, and configure the load balancer stickiness using the cookie name defined.