Configuring multiple Tomcat application servers with Apache HTTP server/ Load Balancing with Apache Web Server



In this article, I am going to explain how we can configure multiple Tomcat instances with single Apache Web Server.

There are many solutions posted on the web, but it is the simplest and easiest way to do this.

Prerequisite:

  • Apache HTTP Server 2.x
  • Tomcat 6.x
  • mod_jk.so module for Apache Web server
  • Any text editor, i.e. Notepad, gedit, etc.

if you do not have Apache HTTP server goto http://httpd.apache.org/ and download the appropriate version and install on your machine.

if you do not have Apache Tomcat Server goto http://tomcat.apache.org/ and download the appropriate version and install on your machine.

if you do not have mod_jk.so module, goto http://tomcat.apache.org/download-connectors.cgi and download the appropriate connector for Apache Web Server.

Step 1: Configure Tomcat

If you having one machine per Tomcat, you don’t need to do this. but if you don’t have, you have to configure each tomcat instance for different port to run successfully.

To configure Tomcat’s port, goto conf directory of any tomcat instance you have and open the server.xml file in the text editor.

search these lines in the server.xml and make the value of port property unique for each instance of tomcat.

<Server port=”8005″ shutdown=”SHUTDOWN”>

<Connector port=”8080″ protocol=”HTTP/1.1″ connectionTimeout=”20000″ redirectPort=”8443″ />

<Connector port=”8009″ protocol=”AJP/1.3″ redirectPort=”8443″ />

Step 2: Creating configuration file of Tomcat instances for Apache Web Server

now open text editor and create a file called workers.properties and enter the information of all tomcat instances you have. and save it  under the conf directory of Apache.

A sample workers.properties is given:

# lists the workers by name

worker.list=tomcat1, tomcat2, loadbalancer

Tomcat1 configuration

worker.tomcat1.port=8009 //AJP1.3 Connector’s port

worker.tomcat1.host=localhost //IP of machine where tomcat1 is running

worker.tomcat1.type=ajp13 //AJP Connector type.

worker.tomcat1.lbfactor=100 //Load Balancing factor

Tomcat2 configuration

worker.tomcat2.port=8119 //AJP1.3 Connector’s port

worker.tomcat2.host=localhost //IP of machine where tomcat1 is running

worker.tomcat2.type=ajp13 //AJP Connector type.

worker.tomcat2.lbfactor=100 //Load Balancing factor

#Load Balance worker configuration

worker.loadbalancer.type=lb

worker.loadbalancer.balanced_workers=tomcat1,tomcat2

Step 3: Configure JK module

Copy the downloaded JK module file (mod_jk.so) to the modules directory of Apache Web Server. now goto conf directory of Apache Server, and open the httpd.conf file in the text editor.

and add these lines to the end of httpd.conf

LoadModule jk_module modules/mod_jk.so

JkWorkersFile conf/workers.properties

JkLogFile logs/mod_jk.log

JkLogLevel info

now you have done all the configuration, now you need to configure the JK Module to redirect the requests to specific tomcats. It can be done by the following:

To redirect specific request to specific Tomcat add this line to httpd.conf:

JkMount /abc/* tomcat1

or

JkMount /*.do tomcat2

Or, if you want to configure requests to be served by any of the tomcat then add this:

JkMount /*.jsp loadbalancer

if any of the tomcat is stopped then all the request will be served by other tomcat and if both the tomcat are running then the requests are redirected to tomcat servers according to the lbfactor specified in the workers.properties.

Now start all the Tomcat Servers and Apache Server, and its done.

 

12 comments

12 pings

Skip to comment form

  1. I simply want to say I’m all new to blogs and truly liked this web blog. Probably I’m going to bookmark your site . You amazingly have terrific article content. Appreciate it for sharing with us your website.

  2. i totally agree

  3. Your site has a strong visual impact and color information, the language is brief and it is easy for info has a quick disseminates, l like this style, thanks for great work

  4. I apologise, but, in my opinion, you are not right. LetЎЇs discuss. Write to me in PM, we will communicate.

  5. My brother recommended I might like this blog. He was entirely right. This post actually made my day. You cann’t imagine simply how much time I had spent for this info! Thanks!

    • Santosh Kumar Choudhary on September 13, 2011 at 5:58 PM

    Great post. It save my days……. 🙂

    • Maxmind on April 19, 2011 at 4:08 AM

    No sticky sessions?

  6. Great post. I was wondering if there was a way with the cluster you setup to enable sticky sessions. I am finding that the load balancer is just switching ever other request to the different tomcat servers.

  7. Great post! 😀

    Harovia

  8. The Apache Web server allows site managers to override the standard error page that is served for specific errors by number. Server Computers

  9. Very nice work.

    It may be worth explaining how you can have more than two instances just as easily.

    • Hussain on July 11, 2010 at 9:39 AM

    Very nice, clean and simple approach …. will surely try it out. Thanks a lot.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: