首页主机资讯如何在centos上使用tomcat集群

如何在centos上使用tomcat集群

时间2026-01-16 07:29:03发布访客分类主机资讯浏览1102
导读:在 CentOS 上搭建 Tomcat 集群的完整步骤 一 架构与准备 架构建议:使用Nginx/HAProxy做反向代理与负载均衡,后端部署2–N 个 Tomcat 实例;如需消除单点,可在 Nginx 前再加一层 Keepalived...

在 CentOS 上搭建 Tomcat 集群的完整步骤

一 架构与准备

  • 架构建议:使用Nginx/HAProxy做反向代理与负载均衡,后端部署2–N 个 Tomcat 实例;如需消除单点,可在 Nginx 前再加一层 Keepalived VIP。会话保持可用 Nginx 的 ip_hash 或 Tomcat 的 jvmRoute + 会话复制。
  • 节点规划示例:
    • 负载均衡:192.168.1.10(Nginx,备机 192.168.1.11)
    • Tomcat:192.168.1.21:8080/8009192.168.1.22:8080/8010
  • 基础环境:安装同版本的 JDK 8/11、相同版本的 Tomcat 9,并准备要部署的 WAR 应用。
  • 防火墙放行:对 Tomcat 开放 8080/8009/8010,对 Nginx 开放 80/443,集群节点间开放 45564/4000(UDP/TCP,用于组播与会话复制)。
  • 时间同步:建议所有节点启用 NTP,避免会话复制与日志排查受影响。

二 安装与端口规划

  • 安装 JDK(示例为 OpenJDK 8):
    • sudo yum install -y java-1.8.0-openjdk-devel
  • 安装 Tomcat(示例为 Tomcat 9):
    • wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.56/bin/apache-tomcat-9.0.56.tar.gz
    • tar xvf apache-tomcat-9.0.56.tar.gz & & sudo mv apache-tomcat-9.0.56 /opt/tomcat
  • 多实例端口规划(两个节点示例):
节点 Server 关闭端口 HTTP 端口 AJP 端口 Receiver 端口
node1 8005 8080 8009 4000
node2 8105 8180 8109 4001
  • 说明:同一台机器部署多实例时,上述端口需唯一;跨机部署时,仅需保证 AJP/Receiver 端口在对应主机可达即可。

三 配置 Tomcat 集群与会话复制

  • 为 Engine 设置唯一 jvmRoute(用于粘性会话与路由标识):
    • node1:
    • node2:
  • 在 server.xml 的 Engine 内启用集群(示例为 DeltaManager,适合中小规模):
    • 将 取消注释或插入;
    • 典型关键参数:
      • Manager:org.apache.catalina.ha.session.DeltaManager(集群内广播复制,节点多时考虑 BackupManager)
      • Membership(组播发现):address=“228.0.0.4” port=“45564
      • Receiver:port=“4000/4001”(各节点唯一),address=“auto
      • Valve:ReplicationValve、JvmRouteBinderValve
      • Interceptor:TcpFailureDetector、MessageDispatchInterceptor
  • 在应用的 WEB-INF/web.xml 中加入 ,使应用支持分布式会话。
  • 可选:在 conf/context.xml 的 中加入 < Cluster …/> 以对全局应用生效。

四 配置负载均衡

  • 方案 A:Nginx(推荐,简单稳定)
    • 安装:sudo yum install -y nginx
    • 配置示例(/etc/nginx/nginx.conf 或 /etc/nginx/conf.d/tomcat.conf):
      • upstream tomcat_cluster {
        server 192.168.1.21:8080;
        server 192.168.1.22:8080;
        }
        server {
        listen 80;
        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;
        }
        }
    • 如需会话粘性,可改为 ip_hash; 或保留 jvmRoute + DeltaManager 实现故障切换不丢会话。
  • 方案 B:Apache HTTP Server + mod_jk(AJP)
    • 安装:sudo yum install -y httpd mod_jk
    • 配置 workers.properties:
      • worker.list=controller
      • worker.tomcat1.type=ajp13; worker.tomcat1.host=192.168.1.21; worker.tomcat1.port=8009; worker.tomcat1.lbfactor=1
      • worker.tomcat2.type=ajp13; worker.tomcat2.host=192.168.1.22; worker.tomcat2.port=8010; worker.tomcat2.lbfactor=1
      • worker.controller.type=lb; worker.controller.balanced_workers=tomcat1,tomcat2; worker.controller.sticky_session=1
    • 在 httpd.conf 中加载模块与 Include workers.properties,并 JkMount 指定应用路径。

五 启动与验证及高可用扩展

  • 启动与验证
    • 启动 Tomcat:/opt/tomcat/bin/startup.sh(或 systemctl start tomcat,若已配置服务)
    • 启动 Nginx:sudo systemctl start nginx
    • 验证:
      • 访问 Nginx(如 http://192.168.1.10/),刷新多次,观察是否分发到不同 node1/node2
      • 查看 Tomcat 日志(catalina.out、localhost_access_log)与 Nginx 日志(access.log、error.log);
      • 登录应用,写入会话(如设置 session 属性),重启某节点后仍能保持登录,验证会话复制/粘性生效。
  • 高可用扩展(可选)
    • 在 Nginx 前部署 Keepalived VIP,实现负载均衡器自身的高可用:主备两台 Nginx 通过 VRRP 协议漂移 VIP,客户端始终访问 VIP,后端 Tomcat 集群不变。
  • 常见问题排查
    • 端口冲突:确认 server.xml 中 8005/8080/80098105/8180/8109 唯一;
    • 组播不通:确认防火墙放行 45564/4000,云主机需开启组播/安全组规则;
    • AJP 访问失败:核对 workers.properties 的 host/port,以及 Tomcat 的 AJP Connector 是否启用;
    • 会话不共享:确认应用 WEB-INF/web.xml 含 ,且集群配置已生效。

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


若转载请注明出处: 如何在centos上使用tomcat集群
本文地址: https://pptw.com/jishu/781079.html
centos中如何排查tomcat性能瓶颈 如何配置Nginx负载均衡

游客 回复需填写必要信息