This is a continution of the Bonsai Framework 0FS Tomcat Setup and explains how to scale vertically adding two additional instances of Tomcat on the same machine,
You may also opt to further mix and match with different versions of Tomcat and Java.
Here is a diagram of what we will be building,
Download the Bonsai Framework pre-packaged 0FS Tomcat setup.
Install by unzipping with a staff sudo enabled account,
wget http://www.bonsaiframework.com/downloads/0fs-tomcat-linux/0fs-tomcat.tar.gz sudo tar -xvpf 0fs-tomcat.tar.gz # sudo will ensure the permissions and users are kept sudo mv /0fs-tomcat/ /0fs-tomcat.1/ sudo mv /0fs-tomcat.1/ /opt/ |
Create the second instance,
sudo tar -xvpf 0fs-tomcat.tar.gz # sudo will ensure the permissions and users are kept sudo mv /0fs-tomcat/ /0fs-tomcat.2/ sudo mv /0fs-tomcat.2/ /opt/ |
These two Tomcat instances are completely independent of each other.
Change Default Ports
The different Tomcat instances cannot be listening on the same port.
Default ports for Tomcat are,
The new ports for Tomcat1 will be,
Verify that the ports for Tomcat1 are not being used.
netstat -an | grep LISTEN | grep 8105 netstat -an | grep LISTEN | grep 8109 netstat -an | grep LISTEN | grep 8180 netstat -an | grep LISTEN | grep 8543 |
You should not see anything return from running the above commands.
Change Tomcat1 to use use the new ports by editing /opt/0fs-tomcat/conf/server.xml. Use an editor or more quickly using the sed commands,
cd /opt/0fs-tomcat.1/conf/ sed -i 's/8005/8105/' server.xml sed -i 's/8009/8109/' server.xml sed -i 's/8080/8180/' server.xml sed -i 's/8443/8543/' server.xml |
Verify that the ports for Tomcat2 are not being used.
netstat -an | grep LISTEN | grep 8205 netstat -an | grep LISTEN | grep 8209 netstat -an | grep LISTEN | grep 8280 netstat -an | grep LISTEN | grep 8643 |
You should not see anything return from running the above commands.
Change Tomcat2 to use use the new ports by editing /opt/0fs-tomcat/conf/server.xml. Use an editor or more quickly using the sed commands,
cd /opt/0fs-tomcat.2/conf sed -i 's/8005/8205/' server.xml sed -i 's/8009/8209/' server.xml sed -i 's/8080/8280/' server.xml sed -i 's/8443/8643/' server.xml |
Verify
Startup your Tomcat instances and verify that they are listening,
su - serveradmin cd /opt/0fs-tomcat.1/bin/ ./startup.sh cd /opt/0fs-tomcat.2/bin/ ./startup.sh |
If you have a firewall setup do not forget to open the ports for testing and then close them afterwards if you plan to front with the Apache Web Server.
As covered in 0FS Tomcat Setup load a web browser to test, but replace 8080 with 8180 for Tomcat1 and 8280 for Tomcat2.
Solaris' built in ps has a specific limitation of 60 characters. As a result, it is not intuitive to determine which process of tomcat is which when the ps command is executed,
serveradmin 12150 13290 1 11:51:28 pts/2 0:10 /opt/jre1.6.0_16/bin/java -Djava.util.logging.manager=org.apache.juli.ClassLoad serveradmin 5906 13290 0 Jul 24 ? 6:17 /opt/jre1.6.0_16/bin/java -Djava.util.logging.manager=org.apache.juli.ClassLoad |
Notice that the names are exactly the same.
Using the Bonsai Framework method of bundling Java with Tomcat we can tell the differences,
serveradmin 12150 13290 1 11:51:28 pts/2 0:10 /opt/0fs-tomcat.1/java -Djava.util.logging.manager=org.apache.juli.ClassLoad serveradmin 5906 13290 0 Jul 24 ? 6:17 /opt/0fs-tomcat.2/java -Djava.util.logging.manager=org.apache.juli.ClassLoad |
I've still to write this, but I hope how folks can see how this will fits nicely into building Cloud friendly containers using LXC or Docker.