Tomcat一机多实例部署

多实例是在单机单实例的基础做的,过程比较多但挺简单。多实例就是在一台服务器上同时开启多个不同的服务端口,同时运行多个服务进程,这些服务进程通过不同的socket监听不同的服务端口来提供服务。

因为一台机器配置太高了,要是在多台机器和单台一样,我现在是在单台机器做,配置太高用不了这么多内存,单个实例又接受不了那么多并发,所以我就弄了三个实例。其实就是把三个实例的基准目录分开到不同的目录下,

一机多实例

多实例运行不同的应用(类似虚拟主机)

多实例运行相同的应用(实现负载均衡,支持高并发处理,session问题)

tomcat单机多实例配置

CATALINA_BASE:

instance1: /usr/local/tomcat/instance1/{conf,logs,temp,work} 8081 8091

instance2: /usr/local/tomcat/instance2/{conf,logs,temp,work} 8082 8092

instance3: /usr/local/tomcat/instance3/{conf,logs,temp,work} 8083 8093

接上一期

拷贝原来单实例的webapps到/下 /webapps/ROOT。这个目录拷到哪都行,应用是通用,要让它跑到三个tomcat进程里。

[root@tmocat tomcat]# cp -r webapps/ROOT /

1. 以单实例为基础

[root@tmocat tomcat]# /usr/local/tomcat/bin/shutdown.sh  把上一期的干掉(页面就不能访问了)

2. 配置三个实例的目录

分别创建目录instance1 instance2 instance3,拷贝原来的conf,log,temp,work到3个目录下

[root@tmocat tomcat]# \cp -r {conf,logs,temp,work} instance1/
[root@tmocat tomcat]# \cp -r {conf,logs,temp,work} instance2/
[root@tmocat tomcat]# \cp -r {conf,logs,temp,work} instance3/

\就是cp有同名的目录它会提示你会不会覆盖,cp没有强制覆盖的参数,但cp不是最原始的命令,最原始的linux命令不会有提示,cp只是一个别名,加了-r才有提示,把别名效果去了就是最原始的cp了,原始的命令没有任何提示,\就是取消它的别名效果,就直接覆盖了。

3. 配置实例server.xml

[root@tmocat tomcat]# vim /usr/local/tomcat/instance1/conf/server.xml

<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> →

<Server port="8091" shutdown="SHUTDOWN"> //修改8005

<Connector port="8081" protocol="HTTP/1.1" //删掉8080和8009的配置,添加此配置

connectionTimeout="20000"

redirectPort="8443" />

<Host name="localhost" appBase="/webapps" //修改网站基准目录,(我们把它挪到根下了)

unpackWARs="true" autoDeploy="true">

......

因为8009是和其他web程序对接的接口不用改,只需要改8005和8080就行了,端口改什么都行,只要它没被占用。

[root@tmocat tomcat]# cp /usr/local/tomcat/instance1/conf/server.xml /usr/local/tomcat/instance2/conf/server.xml

[root@tmocat tomcat]# vim /usr/local/tomcat/instance2/conf/server.xml

8081改8082 8091改8092

[root@tmocat tomcat]# cp /usr/local/tomcat/instance1/conf/server.xml /usr/local/tomcat/instance3/conf/server.xml
[root@tmocat tomcat]# vim /usr/local/tomcat/instance3/conf/server.xml
8081改8083 8091改8093

因为是拷贝的1所以不用改网站基准目录

4. 脚本内容

[root@tmocat tomcat]# vim /usr/local/tomcat/instance1/ins1.sh

#!/bin/bash

. /etc/init.d/functions  调用系统文件

export CATALINA_BASE="/usr/local/tomcat/instance1"    这是变量,instance1里的基准目录,当$1start干嘛stop干嘛

case "$1" in

start)

$CATALINA_HOME/bin/startup.sh;;

stop)

$CATALINA_HOME/bin/shutdown.sh;;

restart)

$CATALINA_HOME/bin/shutdown.sh

sleep 5  睡眠5秒

$CATALINA_HOME/bin/startup.sh;;

esac

export JAVA_OPTS='-Xms64m -Xmx128m'

[root@tmocat tomcat]# cp /usr/local/tomcat/instance1/ins1.sh /usr/local/tomcat/instance2/ins2.sh
[root@tmocat tomcat]# vim /usr/local/tomcat/instance2/ins2.sh
[root@tmocat tomcat]# cp /usr/local/tomcat/instance1/ins1.sh /usr/local/tomcat/instance3/ins3.sh
[root@tmocat tomcat]# vim /usr/local/tomcat/instance3/ins3.sh

把2,3脚本里改一下2,3

给可执行权限

[root@tmocat tomcat]# chmod +x /usr/local/tomcat/instance1/ins1.sh
[root@tmocat tomcat]# chmod +x /usr/local/tomcat/instance2/ins2.sh
[root@tmocat tomcat]# chmod +x /usr/local/tomcat/instance3/ins3.sh

5. 启动

[root@www ~]# /usr/local/tomcat/instance1/ins1.sh start

[root@www ~]# /usr/local/tomcat/instance2/ins2.sh start

[root@www ~]# /usr/local/tomcat/instance3/ins3.sh start

 这三个不用管

6.拷贝网站

 [root@tmocat webapps]# cp -r /usr/local/tomcat/webapps/ROOT/ .

 重启服务

[root@tmocat ROOT]# /usr/local/tomcat/instance1/ins1.sh restart
[root@tmocat ROOT]# /usr/local/tomcat/instance2/ins2.sh restart
[root@tmocat ROOT]# /usr/local/tomcat/instance3/ins3.sh restart

测试

 

 

服务端

 

 【注意】少熬夜,多看书。

猜你喜欢

转载自blog.csdn.net/weixin_53150440/article/details/127578839