Tomcat单机多实例配置
来源:互联网 发布:犀牛门户源码 编辑:程序博客网 时间:2024/05/27 16:43
原文链接:http://blog.csdn.net/xyang81/article/details/51997053
当一个进程的线程超过500个的话,那么这个进程的运行效率会变得很低。因为一个进程产生过多的线程,CPU资源会浪费在线程间切换过程当中。但当服务器配置很高的情况下,如:32G内存,16核的CPU。这样一台高配的机器上只装一个Tomcat实例,会有点浪费。其实我们可以根据服务器的硬件配置,配置多个Tomcat实例,充分利用硬件的资源。你第一时间可能会想到,直接下载多份Tomcat安装包,直接解压,改下端口跑起来不就可以了? 这样也是可以的,但不好维护。假设你在一台机器上安装了5个Tomcat实例,日后要升级Tomcat时,你需要将新版本的tomcat复制并覆盖掉旧的5个tomcat安装程序和配置,所以还是挺麻烦的。下面介绍多个Tomcat实例共享同一个安装包的配置方法。
安装环境
操作系统:CentOS7 64位 Mini版
JDK:1.8,安装目录:/opt/jdk1.8
Tomcat:Tomcat8.0.35,安装目录:/opt/apache-tomcat-8.0.35
配置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 bindrwxr-xr-x. 3 root root 4096 6月 28 16:14 confdrwxr-xr-x. 2 root root 4096 5月 25 22:12 libdrwxr-xr-x. 2 root root 4096 6月 28 15:48 logsdrwxr-xr-x. 2 root root 4096 5月 25 22:12 tempdrwxr-xr-x. 7 root root 4096 5月 25 22:14 webappsdrwxr-xr-x. 3 root root 4096 5月 12 05:57 work
2> 在/opt/tomcat_instance下分别创建3个实例的目录:
shell> mkdir -p /opt/tomcat_instance/tomcat1shell> mkdir -p /opt/tomcat_instance/tomcat2shell> mkdir -p /opt/tomcat_instance/tomcat3
3> 拷贝tomcat安装目录下的conf目录分别放入3个实例目录中
shell> copy -R /opt/apache-tomcat-8.0.35/conf /opt/tomcat_instance/tomcat1/shell> copy -R /opt/apache-tomcat-8.0.35/conf /opt/tomcat_instance/tomcat2/shell> copy -R /opt/apache-tomcat-8.0.35/conf /opt/tomcat_instance/tomcat3/
4> 在tomcat实例下创建实例启动和停止脚本
启动和停止脚本放到tomcat实例的bin目录下
a) 启动脚本
shell> mkdir -p /opt/tomcat_instance/tomcat[1-4]/binshell> touch startup.shshell> chown +x startup.sh
将以下脚本拷贝到startup.sh文件中,注意修改CATALINA_BASE
指向的tomcat实例路径:
#!/bin/bashexport JRE_HOME=/opt/jdk1.8/jreexport CATALINA_HOME=/opt/tomcat8export 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"#创建logs目录if [ ! -d "$CATALINA_BASE/logs" ]; then mkdir $CATALINA_BASE/logsfi#创建temp目录if [ ! -d "$CATALINA_BASE/temp" ]; then mkdir $CATALINA_BASE/tempfi# 调用tomcat启动脚本bash $CATALINA_HOME/bin/startup.sh "$@"
b) 停止脚本
shell> touch shutdown.shshell> chown +x shutdown.shshell> vim shutdown.sh
拷贝以下脚本到shutdown.sh文件中:
#!/bin/bashexport JRE_HOME=/opt/jdk1.8/jreexport CATALINA_HOME=/opt/tomcat8export 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 "$@"
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/webapps" unpackWARs="true" autoDeploy="true"> ... </Host> </Engine> </Service></Server>
上面是裁剪过后的server.xml,分别修改以上三个端口(Server、HTTP、AJP),不要和其它实例的端口或系统已经占用的端口发生冲突。
6、创建实例部署应用的目录
shell> mkdir -p /opt/deploy/webapps
所有实例的app默认都部署到/opt/deploy/webapps目录下,注意修改server.xml中Host节点的appBase属性的值。
7、启动服务
shell> /opt/tomcat_instance/tomcat1/bin/startup.shshell> /opt/tomcat_instance/tomcat2/bin/startup.shshell> /opt/tomcat_instance/tomcat2/bin/startup.sh
服务器启动之后,会分别在相应的实例目录下生成logs、temp、work和webapps目录。另外也可以在实例目录下创建lib目录,用于存放app的jar。现在来看实例的安装目录,就和tomcat的安装包解压后的目录结构一样了,但所有实例共享同一套tomcat安装程序的bin和lib。后面如果需要升级tomcat或修改tomcat脚本的相关配置,只需要更新这一套程序就行,也方便了日后的维护。tomcat1实例的目录结构如下:
- Tomcat单机多实例配置
- Tomcat单机多实例配置
- Tomcat单机多实例配置
- tomcat单机多实例配置实战
- tomcat单机多实例配置实战
- Tomcat单机多实例
- Tomcat单机多实例
- tomcat 单机多实例
- tomcat单机多实例
- Tomcat单机多实例
- tomcat之 Tomcat 7.0.78 单机多实例配置
- tomcat单机多实例部署
- tomcat单机多实例部署
- tomcat单机多实例部署
- MySQL单机多实例配置
- 单机配置MYSQL多实例
- nginx tomcat 单机多实例多网站
- tomcat 单机运行多个实例
- android:windowSoftInputMode属性详解
- 移动端根据设备大小设置字体大小(居于案例的理解扩展)
- Swagger+Spring MVC框架学习分享
- Linux系统中的at命令的用法
- 从startActivity开始深入
- Tomcat单机多实例配置
- PHP Reflection API是PHP5才有的新功能
- RecyclerView上拉加载,最后一条item被截掉。
- linux部署jar(jenkins包动态)
- Java中多线程原理详解
- scala map/list/array/的常用内置遍历操作总结
- ACM天梯赛 L3-02 堆栈(线段树)
- Android 'M' Doze
- Java中常用知识