测试环境-tomcat多实例多应用部署

为什么要采用tomcat多实例部署

在服务器资源有限,或者对服务器要求并不是很高的情况下,可以实现多个不同项目部署在同一台服务器上的需求,来实现资源使用的最大化。

规避采用单个tomcat,因为重启或挂掉 Tomcat 后会影响另外一个应用的访问。

Tomcat 的基本组成

tomcat安装后的目录结构

bin:主要存放脚本文件,例如比较常用的windows和linux系统中启动和关闭脚本

conf:主要存放配置文件,其中最重要的两个配置文件是server.xml和web.xml

lib:主要存放tomcat运行所依赖的包

LICENSE:版权许可证,软件版权信息及使用范围等信息

logs:主要存放运行时产生的日志文件,例如catalina.out、catalina..log等

NOTICE:通知信息,一些软件的所属信息和地址什么的

RELEASE-NOTES:发布说明,包含一些版本升级功能点

RUNNING.txt:运行说明,必需的运行环境等信息

temp:存放tomcat运行时产生的临时文件,例如开启了hibernate缓存的应用程序,会在该目录下生成一些文件

webapps:部署web应用程序的默认目录,也就是 war 包所在默认目录

work:主要存放由JSP文件生成的servlet(java文件以及最终编译生成的class文件)

Tomcat 常见的几种部署场景

通常,我们在同一台服务器上对 Tomcat 部署需求可以分为以下几种:单实例单应用,单实例多应用,多实例单应用,多实例多应用。

单实例单应用:比较常用的一种方式,只需要把你打好的 war 包丢在 webapps目录下,执行启动 Tomcat 的脚本就行了。

单实例多应用:有两个不同的 Web 项目 war 包,还是只需要丢在webapps目录下,执行启动 Tomcat 的脚本,访问不同项目加上不同的虚拟目录。这种方式要慎用在生产环境,因为重启或挂掉 Tomcat 后会影响另外一个应用的访问。

多实例单应用:多个 Tomcat 部署同一个项目,端口号不同,可以利用 Nginx 这么做负载均衡,当然意义不大。

多实例多应用:多个 Tomcat 部署多个不同的项目。这种模式在服务器资源有限,或者对服务器要求并不是很高的情况下,可以实现多个不同项目部署在同一台服务器上的需求,来实现资源使用的最大化。

碰到的问题

因为测试服务器资源有限,同时要规避启动的影响,同一台服务器部署了多个不同基于 Tomcat 的 Web 服务。

这时,会迎来下面几个极其现实的问题。

当你需要对数十台 Tomcat 版本进行升级的时候,你需要怎么做?

当你需要针对每一个不同的 Web 服务分配不用的内存时,你需要怎么做?

当你需要启动多台服务器时,你需要怎么做?

多实例应该怎么部署?

官方的文档是怎么说的?

Low一点的可以直接复制多的,但是官方可不建议你复制一个又一份的全部 Tomcat 目录进行多实例的部署,说安照下图可以实现更优雅的 Tomcat 单机多实例部署:

上图中的 CATALINA_HOME 指Tomcat安装路径,CATALINA_BASE 指实例所在位置。

CATALINA_HOME 路径下只需要包含 bin 和 lib 目录,而 CATALINA_BASE 只存放 conf、webapps、logs 等这些文件,这样部署的好处在于升级方便,配置及安装文件间互不影响,在不影响 Tomcat 实例的前提下,替换掉 CATALINA_HOME 中的安装文件。

开始实操

笔者环境释放

1.复制出两个 Tomcat 实例

2.新建 Tomcat 启动、停止脚本

tomcat-start.sh 信息释放:

tomcat-stop.sh 释放:

这两个就是简单的脚本,其中传入了要启动的 Tomcat 实例所在的路径,当然,你也可以写一个重启的脚本,其实就是先停止再启动,还可以加入不同的 JVM 参数配置等等操作。

到这里,其实全部基础工作已经做好了。

3.配置 server.xml 端口

同一个服务器部署不同 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 实例路径即可来启动对应的 Tomcat。

停止或者重启参考启动,你可以在本机上进行尝试,同时也可以根据需要来在单个服务器上创建更多的 Tomcat 实例,一切都看你喜欢。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180928G0YHKA00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券