In this blog we are going to learn how to implement High availability and load balancing using an Apache web server with two Tomcat instances. This can help in improving performance as well as ensuring that there is no downtime. There could be other modes as well of implementing HA LB using other servers also like IIS, NGINX, HA proxy, load balancer appliances provided by AWS GCP etc. But in this blog we have covered how it can be done using Apache web server.
To implement load balancing using the Apache web server, you can use the mod_proxy and mod_proxy_balancer modules. Here’s a step-by-step guide:
Tools Used :
Java JDK 1.11 Apache Tomcat servers Apache web server Mod_jk connector
Implementation Steps :
Note: We have 2 servers. On server 1, the Apache web server is installed, and the Helical Insight BI application is installed on both servers
Step 1: Install Apache Web Server
Make sure Apache is installed on your server. You can install it using the package manager for your operating system. For example, on a Debian-based system:
sudo apt-get update sudo apt-get install apache2
Step 2: Enable Required Modules
Enable the mod_proxy, mod_proxy_balancer, mod_proxy_http, and mod_lbmethod_byrequests modules by using the below commands:
sudo a2enmod proxy sudo a2enmod proxy_balancer sudo a2enmod proxy_http sudo a2enmod lbmethod_byrequests
Step 3: Configure the Load Balancer
Open “apache2.conf” file from below server path
/etc/apache2
And add below configuration and save the file
ServerNamelocalhost JkMountCopy On
Step 4: Open “workers.properties” from below server path
/etc/libapache2-mod-jk/
And add below configuration and save the file
worker.list=balancer,status
worker.tomcat1.port=ajp13 worker.tomcat1.host=localhost // server1-(in our case Apache web server is on same server so using localhost) worker.tomcat1.type=ajp13 worker.tomcat1.lbfactor=1
worker.tomcat2.port=ajp13 worker.tomcat2.host=<server2-ip< worker.tomcat2.type=ajp13 worker.tomcat2.lbfactor=1
worker.balancer.type=lb worker.balancer.balance_workers=tomcat1,tomcat2
worker.status.type=status
Step 5: open below “jk.conf” from below server path
/etc/apache2/mods-available
And add below configuration and save the file
JkMount /status status JkMount /* balancer
Step 6: Restart Apache web server using below command
sudosystemctl restart apache2
In order to test if HALB is working or not , please access
Note: Stop server1 Tomcat and server2 Tomcat alternately, and you should still be able to access the Helical Insight application.”
We are sharing HALB config files for reference as well, Click here to download.