首页主机资讯Tomcat在Linux上的集群部署怎么做

Tomcat在Linux上的集群部署怎么做

时间2026-01-18 21:40:04发布访客分类主机资讯浏览963
导读:Linux 上 Tomcat 集群部署实操指南 一 架构与准备 架构建议:前端使用 Nginx/HAProxy 做负载均衡,后端 2–N 个 Tomcat 节点启用内置集群会话复制(DeltaManager),实现高可用与横向扩展。 环境...

Linux 上 Tomcat 集群部署实操指南

一 架构与准备

  • 架构建议:前端使用 Nginx/HAProxy 做负载均衡,后端 2–N 个 Tomcat 节点启用内置集群会话复制(DeltaManager),实现高可用与横向扩展。
  • 环境与版本:Linux(如 CentOS 7/8)、JDK 1.8Tomcat 8.5/9.x(各节点版本保持一致)。
  • 基础检查:
    • 安装 JDK 并配置 JAVA_HOME;Tomcat 解压至如 /opt/tomcat;确保节点间网络互通(同网段/安全组放通)。
    • 若多实例在同一台机器,需规划并调整 Server/Connector/Receiver 等端口避免冲突。

二 安装与多实例端口规划

  • 安装步骤(各节点一致):
    • 安装 JDK:sudo yum install java-1.8.0-openjdk-devel
    • 下载并解压 Tomcat:wget …/apache-tomcat-9.0.x.tar.gz & & tar xvf … & & mv … /opt/tomcat。
  • 多实例端口规划(示例两台,同一台机器演示):
    • 实例A:Server 端口 8005,HTTP 8080,AJP 8009,Receiver 4000
    • 实例B:Server 端口 8006,HTTP 8081,AJP 8010,Receiver 4001
  • 快速修改点(server.xml):
    • < Server port=“8005/8006” …> ;
    • < Connector port=“8080/8081” protocol=“HTTP/1.1” … /> ;
    • < Connector port=“8009/8010” protocol=“AJP/1.3” … /> ;
    • 如在一台机器,确保各实例的 Receiver 端口(如 4000/4001)唯一。

三 配置 Tomcat 内置集群与会话复制

  • 在 server.xml 的 或 内加入(示例为默认组播配置,跨机请确保网络允许组播):
    <
        Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
             channelSendOptions="8">
        
      <
        Manager className="org.apache.catalina.ha.session.DeltaManager"
               expireSessionsOnShutdown="false"
               notifyListenersOnReplication="true"/>
        
      <
        Channel className="org.apache.catalina.tribes.group.GroupChannel">
        
        <
        Membership className="org.apache.catalina.tribes.membership.McastService"
                    address="228.0.0.4" port="45564" frequency="500" dropTime="3000"/>
        
        <
        Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                  address="auto" port="4000" autoBind="100"
                  selectorTimeout="5000" maxThreads="6"/>
        
        <
        Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
        
          <
        Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
        
        <
        /Sender>
        
        <
        Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
        
        <
        Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/>
        
      <
        /Channel>
        
      <
        Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>
        
      <
        Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
        
      <
        ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
        
    <
        /Cluster>
    
    
    • 参数要点:
      • DeltaManager:会话变更广播到所有节点,适合各节点应用一致;
      • BackupManager:会话备份到指定节点,节点应用可不一致;
      • Membership:同一集群需一致的组播地址/端口(示例 228.0.0.4:45564);
      • Receiver:节点接收消息端口(同机必须不同,示例 4000/4001);
      • channelSendOptions:常用 8(异步),如需确认可设为 10(异步+ACK)
  • 应用开启会话复制:在应用或全局 context.xml 的 上增加属性 distributable=“true”,或在 web.xml 的 根元素下加入 。

四 配置负载均衡

  • Nginx 示例(/etc/nginx/nginx.conf 或 /etc/nginx/conf.d/tomcat.conf):
    upstream tomcat_cluster {
        
      server 192.168.1.101:8080;
        
      server 192.168.1.102:8080;
    
      # 可按需配置权重、健康检查等
    }
    
    server {
        
      listen 80;
        
      server_name yourdomain.com;
    
      location / {
        
        proxy_pass http://tomcat_cluster;
        
        proxy_set_header Host $host;
        
        proxy_set_header X-Real-IP $remote_addr;
        
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        
        proxy_set_header X-Forwarded-Proto $scheme;
    
      }
    
    }
        
    
    • 修改后执行:sudo nginx -t & & sudo systemctl reload nginx。
  • 可选方案:使用 Apache HTTP Server + mod_jk/AJP 做负载均衡(适合既有 Apache 场景)。

五 启动验证与运维要点

  • 启动与验证:
    • 启动各节点:/opt/tomcat/bin/startup.sh;访问 Nginx 入口验证页面轮询;
    • 会话粘滞与路由:如开启 jvmRoute(Engine 上 jvmRoute=“jvm1”/“jvm2”),并使用 AJP/粘性会话,可在回话中保持同一节点处理;
    • 日志与告警:tail -f logs/catalina.out、catalina.[日期].log,观察 ClusterReplicationValve 日志是否正常。
  • 防火墙与端口(示例 firewalld):
    • 放通 HTTP/HTTPS、Tomcat HTTP/AJP、Receiver 端口(如 8080/8443/8009/8010/4000/4001):
      • firewall-cmd --zone=public --add-port=8080/tcp --permanent
      • firewall-cmd --zone=public --add-port=4000-4001/tcp --permanent
      • firewall-cmd --reload & & firewall-cmd --list-ports
    • 云主机需同步配置安全组规则。
  • 常见问题与优化:
    • 同机多实例端口冲突:逐一调整 Server/Connector/Receiver 端口;
    • 组播不通:确认 228.0.0.4:45564 未被拦截,或改用 静态成员/TCP 集群
    • 会话复制延迟/丢失:优先使用 异步+ACK(channelSendOptions=10),合理设置线程与超时;
    • 监控与调优:使用 JConsole/VisualVM 观察线程池、内存、GC;结合业务调整 maxThreads、acceptCount、JVM 堆

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Tomcat在Linux上的集群部署怎么做
本文地址: https://pptw.com/jishu/784810.html
Tomcat在Linux上的性能调优技巧有哪些 Tomcat在Linux上的权限设置如何操作

游客 回复需填写必要信息