当一个进程的线程超过500个的话,那么这个进程的运行效率会变得很低。因为一个进程产生过多的线程,CPU资源会浪费在线程间切换过程当中。但当服务器配置很高的情况下,如:32G内存,16核的CPU。这样一台高配的机器上只装一个Tomcat实例,会有点浪费。其实我们可以根据服务器的硬件配置,配置多个Tomcat实例,充分利用硬件的资源。你第一时间可能会想到,直接下载多份Tomcat安装包,直接解压,改下端口跑起来不就可以了? 这样也是可以的,但不好维护。假设你在一台机器上安装了5个Tomcat实例,日后要升级Tomcat时,你需要将新版本的tomcat复制并覆盖掉旧的5个tomcat安装程序和配置,所以还是挺麻烦的。下面介绍多个Tomcat实例共享同一个安装包的配置方法。
安装环境
操作系统:CentOS6.5 64位 Mini版 JDK:1.8,安装目录: /yxue/jdk/jdk1.8.0_74 Tomcat:tomcat-7.0.69,安装目录:/opt/apache-tomcat-7.0.69 配置3个Tomcat实例组件一个集群: /opt/tomcat_instance/tomcat1 /opt/tomcat_instance/tomcat2 /opt/tomcat_instance/tomcat3
安装步聚
1> 下载Tomcat安装包并解压,目录结构如下:
drwxr
-xr-x. 3 root root
4096 5月
26 01:
41 bin
drwxr
-xr-x. 3 root root
4096 6月
28 16:
14 conf
drwxr
-xr-x. 2 root root
4096 5月
25 22:
12 lib
drwxr
-xr-x. 2 root root
4096 6月
28 15:
48 logs
drwxr
-xr-x. 2 root root
4096 5月
25 22:
12 temp
drwxr
-xr-x. 7 root root
4096 5月
25 22:
14 webapps
drwxr
-xr-x. 3 root root
4096 5月
12 05:
57 work
1234567
1234567
2> 在/opt/tomcat_instance下分别创建3个实例的目录:
shell> mkdir -p /opt/tomcat_instance/tomcat1
shell> mkdir -p /opt/tomcat_instance/tomcat2
shell> mkdir -p /opt/tomcat_instance/tomcat3
123
123
3> 拷贝tomcat安装目录下的conf目录分别放入3个实例目录中
shell
> cp
-R /opt/apache-tomcat-7.0.69
/conf /opt/tomcat_instance/tomcat1
/
shell
> cp
-R /opt/apache-tomcat-7.0.69
/conf /opt/tomcat_instance/tomcat2
/
shell
> cp
-R /opt/apache-tomcat-7.0.69
/conf /opt/tomcat_instance/tomcat3
/
123
123
4> 在tomcat实例下创建实例启动和停止脚本
启动和停止脚本放到tomcat实例的bin目录下
a) 启动脚本,下边以tomcat1实例为例子讲解
shell> mkdir -p /opt/tomcat_instance/tomcat1
/bin
shell> cd /opt/tomcat_instance/tomcat1
/bin
shell> touch startup.sh
shell> chmod +x startup.sh
123
123
将以下脚本拷贝到startup.sh文件中,注意修改CATALINA_BASE指向的tomcat实例路径:
#!/bin/bash
export JRE_HOME=/yxue/jdk/jdk1.8.0_74/jre
export CATALINA_HOME=/opt/apache-tomcat-7.0.69
export CATALINA_BASE=
"/opt/tomcat_instance/tomcat1"
export CATALINA_TMPDIR=
"$CATALINA_BASE/temp"
export CATALINA_PID=
"$CATALINA_BASE/bin/tomcat.pid"
export JAVA_OPTS=
"-server -Xms1024m -Xmx1024m -Djava.awt.headless=true -Dtomcat.name=tomcat1"
if [ !
-d "$CATALINA_BASE/logs" ];
then
mkdir
$CATALINA_BASE/logs
fi
if [ !
-d "$CATALINA_BASE/temp" ];
then
mkdir
$CATALINA_BASE/temp
fi
bash
$CATALINA_HOME/bin/startup.sh
"$@"
1234567891011121314151617181920
1234567891011121314151617181920
b) 停止脚本
shell> touch
shutdown.sh
shell>
chmod +
x shutdown.sh
shell> vim
shutdown.sh
123
123
拷贝以下脚本到shutdown.sh文件中:
#!/bin/bash
export JRE_HOME=/yxue/jdk/jdk1.8.0_74/jre
export CATALINA_HOME=/opt/apache-tomcat-7.0.69
export CATALINA_BASE=
"/opt/tomcat_instance/tomcat1"
export CATALINA_TMPDIR=
"$CATALINA_BASE/temp"
export CATALINA_PID=
"$CATALINA_BASE/bin/tomcat.pid"
bash
$CATALINA_HOME/bin/shutdown.sh
"$@"
12345678
12345678
5、修改每个tomcat实例中server.xml中的端口
<Server port=
"8005" shutdown=
"SHUTDOWN">
...
<Service name=
"Catalina">
...
<Connector port=
"8080" protocol=
"HTTP/1.1"
connectionTimeout=
"20000"
redirectPort=
"8443" />
...
<Connector port=
"8009" protocol=
"AJP/1.3" redirectPort=
"8443" />
...
<Engine name=
"Catalina" defaultHost=
"localhost">
...
<Host name=
"localhost" appBase=
"/opt/deploy/webapps1"
unpackWARs=
"true" autoDeploy=
"true">
...
</Host>
</Engine>
</Service>
</Server>
12345678910111213141516171819202122
12345678910111213141516171819202122
上面是裁剪过后的server.xml,分别修改以上三个端口(Server、HTTP、AJP),不要和其它实例的端口或系统已经占用的端口发生冲突。
6、创建实例部署应用的目录
shell> mkdir -p /opt/deploy/webapps1
1
1
mkdir -p /opt/deploy/webapps1mkdir -p /opt/deploy/webapps2mkdir -p /opt/deploy/webapps3各个实例的app部署到各个的目录下,注意修改server.xml中Host节点的appBase属性的值,对应各个实例的部署目录。
7、启动服务
shell>
/opt/tomcat_instance/tomcat1/bin/startup.sh
shell>
/opt/tomcat_instance/tomcat2/bin/startup.sh
shell>
/opt/tomcat_instance/tomcat3/bin/startup.sh
123
123
服务器启动之后,会分别在相应的实例目录下生成logs、temp、work和webapps目录。另外也可以在实例目录下创建lib目录,用于存放app的jar。现在来看实例的安装目录,就和tomcat的安装包解压后的目录结构一样了,但所有实例共享同一套tomcat安装程序的bin和lib。后面如果需要升级tomcat或修改tomcat脚本的相关配置,只需要更新这一套程序就行,也方便了日后的维护。
转载请注明原文地址: https://ju.6miu.com/read-670948.html