Skip to main content

Multiple Tomcat Instances on Single Machine

In this post we will see how to run multiple tomcat instances on a single machine and under a single user account.

tomcat

Setup


We already see how to run tomcat in Ubuntu machine in my previous blog (http://kmlsarwar.blogspot.com/2014/08/how-to-install-apache-tomcat-on-ubuntu.html).

Step One—Create folder

Create two folder named "tomcat-instance1" and "tomcat-instance2" anywhere, and copy conf, logs, temp, webapps and work  folder from CATALINA_HOME folder and change conf/server.xml file in tomcat-instance1 and tomcat-instance2. we need to change 3 port shutdown port, connector port and ajp port.



Shutdown port - this port is used for shutdown the tomcat. when we call the shutdown.sh script they send signal to shutdown port. this port listen by tomcat java process. if signal is received the that process then its cleanup and exit by itself.

Connector Port -This port is actual port to expose the application to outside client. 

AJP port - this port is used to apache httpd server  communicate to tomcat. this port used when we setup load balanced server.

See the sample server.xml file:

<server port="8005" shutdown="SHUTDOWN">
.....
 <connector connectiontimeout="20000" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectport="8443">

<connector port="8009" protocol="AJP/1.3" redirectport="8443">
</connector></connector></server>


So we change these three port to different number, because once this port is binded  then other process can't bind it again. so wee bind different port. 

So tomcat-instance1/conf/server.xml file i configured server port =8105, connector port = 8181, ajp port = 8109.

And tomcat-instance2/conf/server.xml file i configured server port =8205, connector port = 8282, ajp port = 8209


Step Two—Create Script

 

Now we create two script file for startup and shutdown the tomcat-instance1 and tomcat-instance2.

startup-instance1.sh
export CATALINA_BASE=/usr/local/tomcat/tomcat-instance1
cd $CATALINA_HOME/bin
./startup.sh


startup-instance2.sh
export CATALINA_BASE=/usr/local/tomcat/tomcat-instance2
cd $CATALINA_HOME/bin
./startup.sh



shutdown-instance1.sh
export CATALINA_BASE= /usr/local/tomcat/tomcat-instance1
cd $CATALINA_HOME/bin
./shutdown.sh

shutdown-instance2.sh
export CATALINA_BASE= /usr/local/tomcat/tomcat-instance2
cd $CATALINA_HOME/bin
./shutdown.sh

Here we explicitly set the CATALINA_BASE variable and point to new tomcat-instance1 and
tomcat-instance1 the we go to CATALINA_HOME/bin folder because all binary for running tomcat is still present in CATALINA_HOME folder then startup/shutdown the script.

Based on above technique we can create many instance folder and change conf/server.xml file port values and run that instance with own newly created script files.


Step Three—Run

 

We need to give  permission to this scripts to execute. Then we run this script with this command

$ ./startup-instance1.sh
$ ./startup-instance2.sh

Once that runs, Two Tomcat are up and ready on port 8181 and 8282.

You can visually verify that Tomcat is working by accessing your server page at
 your_IP_address:8181 and  your_IP_address:8282

We can stop tomcat instance using the  shutdown script

$ ./shutdown-instance1.sh
$ ./shutdown-instance2.sh

This will shutdown the tomcat instance. Enjoy multiple instance of Tomcat!!!

 

 


Comments

Popular posts from this blog

JavaMelody: Monitoring the Performance of Tomcat Application Server

Javamelody is an opensource (LGPL) application to monitor Java or Java EE application servers in QA and production environments. JavaMelody is mainly based on statistics of requests and on evolution charts. (Extract from the Javamelody home page) It allows to improve applications in QA and production Give facts about the average response times and number of executions Make decisions when trends are bad, before problems become too serious Optimize based on the more limiting response times Find the root causes of response times Verify the real improvement after optimization It includes summary charts showing the evolution over time of the following indicators: Number of executions, mean execution times and percentage of errors of http requests, sql requests, jsp pages or methods of business façades (if EJB3, Spring or Guice) Java memory Java CPU Number of user sessions Number of jdbc connections These charts can be viewed on the current day, week, month, year or cu

Configuring URL Encoding on Tomcat Application Server

Application servers may have different settings for character encodings. We strongly recommend UTF-8 where possible. By default, Tomcat uses ISO-8859-1 character encoding when decoding URLs received from a browser. This can cause problems when Confluence's encoding is UTF-8, and you are using international characters in the names of attachments or pages. To configure the URL encoding in Tomcat: Step 1 - Configure connector: Edit conf/server.xml and find the line where the Coyote HTTP Connector is defined. It will look something like this, possibly with more parameters: < Connector port = "8080" /> Add a URIEncoding="UTF-8" property to the connector: < Connector port = "8080" protocol = "HTTP/1.1"      connectionTimeout = "20000"      redirectPort = "8443"      URIEncoding = "UTF-8" /> If you are using mod_jk you should appl

Set Up Nginx Load Balancing

About Load Balancing Loadbalancing is a useful mechanism to distribute incoming traffic around several capable Virtual Private servers. By apportioning the processing mechanism to several machines, redundancy is provided to the application -- ensuring fault tolerance and heightened stability. The Round Robin algorithm for load balancing sends visitors to one of a set of IPs. At its most basic level Round Robin, which is fairly easy to implement, distributes server load without implementing considering more nuanced factors like server response time and the visitors’ geographic region. Setup The steps in this tutorial require the user to have root privileges on your VPS. Prior to setting up nginx loadbalancing, you should have nginx installed on your VPS. You can install it quickly with apt-get: sudo apt-get install nginx Upstream Module In order to set up a round robin load balancer, we will need to use the nginx upstream module. We will incorporate the conf