配置多实例多应用
多实例多应用:多个 Tomcat 部署多个不同的项目。这种模式在服务器资源有限,或者对服务器要求并不是很高的情况下,可以实现多个不同项目部署在同一台服务器上的需求,来实现资源使用的最大化
有一种做法就是简单的复制出一个新的 Tomcat 目录后改一下端口,这种方法应用起来也是可以的,但是会有几个问题:
1 当你对集群中Tomcat 版本升级 如何做?
2 当你需要针对每一个不同的 Web 服务分配不用的内存时,你需要怎么做
官方建议配置多实例方法
上图中的 CATALINA_HOME 指Tomcat安装路径,CATALINA_BASE 指实例所在位置。CATALINA_HOME 路径下只需要包含 bin 和 lib 目录,而 CATALINA_BASE 只存放 conf、webapps、logs 等这些文件,这样部署的好处在于升级方便,配置及安装文件间互不影响,在不影响 Tomcat 实例的前提下,替换掉 CATALINA_HOME 中的安装文件。
下面是具体操作过程
1 首先进入Tomcat安装路径
[root@tom01 tools]# cd /usr/local/
[root@tom01 local]# ls
bin etc games include jdk lib lib64 libexec sbin share src tomcat
创建两个实例目录
mkdir tomcat-1 tomcat-2
[root@tom01 local]# ls
bin etc games include jdk lib lib64 libexec sbin share src tomcat tomcat-1 tomcat-2
2 拷贝文件到实例目录
cd /usr/local/tomcat
cp -r conf/ webapps/ temp/ logs/ work/ …/tomcat-1
[root@tom01 tomcat]# ll …/tomcat-1
总用量 20
drwxr-xr-x 3 root root 4096 3月 6 17:02 conf
drwxr-xr-x 2 root root 4096 3月 6 17:02 logs
drwxr-xr-x 2 root root 4096 3月 6 17:02 temp
drwxr-xr-x 7 root root 4096 3月 6 17:02 webapps
drwxr-xr-x 3 root root 4096 3月 6 17:02 work
cp -r conf/ webapps/ temp/ logs/ work/ …/tomcat-2
[root@tom01 local]# ll tomcat-2
总用量 20
drwxr-xr-x 3 root root 4096 3月 6 17:03 conf
drwxr-xr-x 2 root root 4096 3月 6 17:03 logs
drwxr-xr-x 2 root root 4096 3月 6 17:03 temp
drwxr-xr-x 7 root root 4096 3月 6 17:03 webapps
drwxr-xr-x 3 root root 4096 3月 6 17:03 work
3 创建启动文件
mkdir /usr/local/tomcat-shell
启动脚本
[root@tom01 tomcat-shell]#vim start_tomcat.sh
#!/bin/bash
export CATALINA_HOME=/usr/local/tomcat
export CATALINA_BASE=${1%/}
echo $CATALINA_BASE
TOMCAT_ID=`ps aux |grep "java"|grep "Dcatalina.base=$CATALINA_BASE "|grep -v "grep"|awk '{ print $2}'`
echo $TOMCAT_ID
if [ -n "$TOMCAT_ID" ] ; then
echo "tomcat(${TOMCAT_ITOMCAT_ID}) still running now , please shutdown it firest";
exit 2;
fi
TOMCAT_START_LOG=`$CATALINA_HOME/bin/startup.sh`
if [ "$?" = "0" ]; then
echo "$0 ${1%/} start succeed"
else
echo "$0 ${1%/} start failed"
echo $TOMCAT_START_LOG
fi
停止脚本
[root@tom01 tomcat-shell]# vim stop_tomcat.sh
#!/bin/bash
export CATALINA_HOME=/usr/local/tomcat
export CATALINA_BASE=${1%/}
echo $CATALINA_BASE
TOMCAT_ID=`ps aux |grep "java"|grep "[D]catalina.base=$CATALINA_BASE "|awk '{ print $2}'`
if [ -n "$TOMCAT_ID" ] ; then
TOMCAT_STOP_LOG=`$CATALINA_HOME/bin/shutdown.sh`
else
echo "Tomcat instance not found : ${1%/}"
exit
fi
if [ "$?" = "0" ]; then
echo "$0 ${1%/} stop succeed"
else
echo "$0 ${1%/} stop failed"
echo $TOMCAT_STOP_LOG
fi
4 修改实例端口
同一个服务器部署不同 Tomcat 要设置不同的端口,不然会报端口冲突,所以我们只需要修改conf/server.xml中的其中前三个端口就行了。但它有四个分别是
Server Port:该端口用于监听关闭tomcat的shutdown命令,默认为8005
Connector Port:该端口用于监听HTTP的请求,默认为8080
AJP Port:该端口用于监听AJP( Apache JServ Protocol )协议上的请求,通常用于整合Apache Server等其他HTTP服务器,默认为8009
Redirect Port:重定向端口,出现在Connector配置中,如果该Connector仅支持非SSL的普通http请求,那么该端口会把 https 的请求转发到这个Redirect Port指定的端口,默认为8443;
我这里吧tomcat-1 端口设为 8081 tomcat-2 端口设为 8082
5 为每个实例创建不同的测试页面
[root@tom01 local]# vim /usr/local/tomcat-1/webapps/ROOT/index.jsp
[root@tom01 local]# vim /usr/local/tomcat-2/webapps/ROOT/index.jsp
插入代码
Tomcat-1
Hello Tomcat! from Tomcat-1.
6 启动多实例
/usr/local/tomcat-shell/start_tomcat.sh /usr/local/tomcat-1
/usr/local/tomcat-shell/start_tomcat.sh /usr/local/tomcat-2
7 检查启动情况
[root@tom01 local]# netstat -ant|grep “808”
tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8082 0.0.0.0:* LISTEN