首页主机资讯CentOS中Tomcat集群搭建方法

CentOS中Tomcat集群搭建方法

时间2025-11-28 17:54:04发布访客分类主机资讯浏览519
导读:CentOS 上搭建 Tomcat 集群 一 架构与准备 架构建议:前端使用 Nginx/Apache HTTP Server 做反向代理或负载均衡,后端部署 2 个及以上 Tomcat 实例;会话保持可用 IP Hash/会话粘滞,或启...

CentOS 上搭建 Tomcat 集群

一 架构与准备

  • 架构建议:前端使用 Nginx/Apache HTTP Server 做反向代理或负载均衡,后端部署 2 个及以上 Tomcat 实例;会话保持可用 IP Hash/会话粘滞,或启用 Tomcat 内置集群会话复制,亦可使用 Redis/Memcached 集中式会话存储。
  • 基础环境:所有节点安装相同版本的 JDK 8+,并安装相同版本的 Tomcat 9(示例命令:sudo yum install java-1.8.0-openjdk-devel;Tomcat 9 可从官方归档下载解压至 /opt/tomcat)。如使用 mod_jk,需安装 mod_jk 模块。以上为后续配置的前置条件。

二 单节点 Tomcat 基础配置

  • 目录与端口:解压 Tomcat 至 /opt/tomcat;同一台机器部署多实例时,需确保各实例的 Server port(默认 8005)Connector 端口(默认 8080)、以及集群 Receiver 端口(默认 4000) 不冲突。
  • 环境变量(可选):在 /etc/profile 中设置 CATALINA_HOMEsource /etc/profile,便于多实例管理。
  • 启动与验证:执行 /opt/tomcat/bin/startup.sh,访问 http://服务器IP:8080 出现 Tomcat 欢迎页即正常。

三 集群会话复制配置

  • 启用内置集群:在每个实例的 $CATALINA_HOME/conf/server.xml 内加入 < Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> ;如需在 级别控制,也可在 $CATALINA_HOME/conf/context.xml 中加入相同配置。
  • 典型集群通道参数(放在 < Cluster> 内):
    • Manager:常用 DeltaManager(会话变更广播到所有节点,适合节点应用一致);也可选 BackupManager(会话备份到某节点)。
    • Channel:
      • Membership:组播发现,address="228.0.0.4" port="45564" frequency="500" dropTime="3000"
      • Receiver:接收消息,address="auto" port="4000" autoBind="100" selectorTimeout="5000" maxThreads="6"
      • Sender/Transport:推荐 nio.PooledParallelSender
      • Interceptor:建议加入 TcpFailureDetector、MessageDispatchInterceptor
    • Valve:加入 ReplicationValve、JvmRouteBinderValve
    • Listener:加入 ClusterSessionListener
  • 应用标识:在应用的 WEB-INF/web.xml 中加入 < distributable/> ,使会话可复制。
  • 同一主机多实例:除 8080 外,将各实例的 Receiver port 设为不同值(如 4000/4001),避免端口冲突。

四 负载均衡配置

  • Nginx 示例(HTTP 反向代理):
    • 安装:sudo yum install nginx
    • 配置片段:
      http {
      
        upstream tomcat_cluster {
          
          server 192.168.1.11:8080;
          
          server 192.168.1.12: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;
      
          }
      
        }
      
      }
          
      
  • Apache HTTP Server + mod_jk 示例:
    • 启用模块并配置 workers.properties:
      worker.list=loadbalancer
      worker.tomcat1.type=ajp13
      worker.tomcat1.host=192.168.1.11
      worker.tomcat1.port=8009
      worker.tomcat2.type=ajp13
      worker.tomcat2.host=192.168.1.12
      worker.tomcat2.port=8009
      worker.loadbalancer.type=lb
      worker.loadbalancer.balance_workers=tomcat1,tomcat2
      worker.loadbalancer.sticky_session=1
      
    • httpd 配置:
      LoadModule jk_module modules/mod_jk.so
      JkWorkersFile conf/workers.properties
      JkMount /* loadbalancer
      
  • 会话保持:若未启用会话复制,建议在负载均衡器开启 IP Hashsticky_session;若启用复制,可关闭粘滞以均衡更充分。

五 启动与验证及常见问题

  • 启动顺序:先启动所有 Tomcat 实例,再启动 Nginx/Apache;设置开机自启(如 systemctl enable tomcatsystemctl enable nginx)。
  • 验证要点:
    • 访问 http://负载均衡IP/ 多次刷新,观察是否分发到不同后端;
    • 登录应用后查看 JSESSIONID,在节点间切换是否保持登录(粘滞或复制生效);
    • 查看 catalina.out 与各实例 logs/localhost_access_log 是否有复制或连接异常;
    • 防火墙/安全组放行 8080/80 及集群通信端口(如 45564/4000)。
  • 常见问题与优化:
    • 端口冲突:同一主机多实例需确保 Server port/Connector/Receiver 唯一;
    • 组播不通:跨主机需保证网络支持 IGMP,或改用 静态成员/TCP 集群
    • 复制延迟/丢包:调整 channelSendOptions(如 8 异步10 异步+ACK)、增大 Receiver maxThreads
    • 大数据会话:避免将大对象放入 Session,必要时采用 外部会话存储(Redis/Memcached)
    • 监控与调优:结合 Prometheus + Grafana 监控线程池、连接数、GC 等,按指标优化 maxThreads、acceptCount、JVM 堆 等参数。

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


若转载请注明出处: CentOS中Tomcat集群搭建方法
本文地址: https://pptw.com/jishu/759239.html
如何在CentOS上使用SFTP客户端 如何在CentOS中更新Apache2版本

游客 回复需填写必要信息