当前位置:首页 > 互联网 > 正文

如何配置服务器两个Tomcat? | Tomcat集群优化指南

步骤1:准备Tomcat安装包

  1. 下载Tomcat二进制包(如 apache-tomcat-9.0.xx.tar.gz)。
  2. 解压两次到不同目录(/opt/tomcat1 和 /opt/tomcat2): tar -xzvf apache-tomcat-9.0.xx.tar.gz -C /opt/tomcat1 tar -xzvf apache-tomcat-9.0.xx.tar.gz -C /opt/tomcat2


步骤2:配置环境变量(可选)

为每个Tomcat设置独立的环境变量(推荐):

如何配置服务器两个Tomcat? | Tomcat集群优化指南 第1张

  • 编辑 tomcat1/bin/setenv.sh(新建): export CATALINA_HOME=/opt/tomcat1 export CATALINA_BASE=/opt/tomcat1
  • 编辑 tomcat2/bin/setenv.sh: export CATALINA_HOME=/opt/tomcat2 export CATALINA_BASE=/opt/tomcat2
  • 赋予执行权限: chmod +x /opt/tomcat*/bin/setenv.sh


步骤3:修改端口号(关键)

避免端口冲突,修改第二个Tomcat的端口(在 tomcat2/conf/server.xml 中):

如何配置服务器两个Tomcat? | Tomcat集群优化指南 第2张

主要端口修改:

端口类型 默认值 修改为(示例)
关闭端口 8005 8006
HTTP/1.1 连接器 8080 8081
AJP 连接器 8009 8010

修改 tomcat2/conf/server.xml:

<!-- 关闭端口修改 --> <Server port="8006" shutdown="SHUTDOWN"> <!-- 原8005改为8006 --> <!-- HTTP连接器修改 --> <Connector port="8081" protocol="HTTP/1.1" ... /> <!-- 原8080改为8081 --> <!-- AJP连接器修改 --> <Connector port="8010" protocol="AJP/1.3" ... /> <!-- 原8009改为8010 -->


步骤4:配置独立日志(可选)

确保日志目录分离,在 tomcat2/conf/server.xml 中修改:

如何配置服务器两个Tomcat? | Tomcat集群优化指南 第3张

<Engine name="Catalina" defaultHost="localhost"> <Host name="localhost" appBase="webapps" unpackWARs="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs/tomcat2" <!-- 日志目录改为tomcat2 --> prefix="tomcat2_access" suffix=".log" pattern="%h %l %u %t &quot;%r&quot; %s %b" /> </Host> </Engine>


步骤5:启动Tomcat实例

# 启动第一个Tomcat /opt/tomcat1/bin/startup.sh # 启动第二个Tomcat /opt/tomcat2/bin/startup.sh


步骤6:验证部署

  • 访问第一个Tomcat:http://服务器IP:8080
  • 访问第二个Tomcat:http://服务器IP:8081


防火墙配置(如果需要)

开放新端口:

# 开放8081端口(以CentOS为例) firewall-cmd --zone=public --add-port=8081/tcp --permanent firewall-cmd --reload


常见问题排查

  1. 端口冲突
    • 检查端口占用:netstat -tunlp | grep <端口号>
  2. 启动失败
    • 查看日志:tail -f /opt/tomcat2/logs/catalina.out
  3. 内存不足
    • 调整内存:在 bin/setenv.sh 中设置 JAVA_OPTS: export JAVA_OPTS="-Xms512M -Xmx1024M"


优化建议

  1. 使用Nginx反向代理:统一入口,转发请求到不同Tomcat。 server { listen 80; server_name app1.example.com; location / { proxy_pass http://localhost:8080; } } server { listen 80; server_name app2.example.com; location / { proxy_pass http://localhost:8081; } }
  2. 脚本化管理:编写启动/停止脚本统一管理两个实例。

通过以上步骤,即可在单台服务器上安全运行两个独立的Tomcat实例。

0