首页主机资讯CentOS上Tomcat集群部署方法

CentOS上Tomcat集群部署方法

时间2025-10-03 15:38:03发布访客分类主机资讯浏览287
导读:一、准备工作 安装Java环境:Tomcat依赖Java运行环境,需在所有集群节点安装兼容的JDK(如OpenJDK 1.8)。执行sudo yum install java-1.8.0-openjdk-devel安装,通过java -v...

一、准备工作

  1. 安装Java环境:Tomcat依赖Java运行环境,需在所有集群节点安装兼容的JDK(如OpenJDK 1.8)。执行sudo yum install java-1.8.0-openjdk-devel安装,通过java -version验证安装是否成功。
  2. 下载并解压Tomcat:从Apache Tomcat官网下载相同版本的Tomcat压缩包(如9.0.56),在每个节点解压到指定目录(如/opt/tomcat)。命令示例:wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.56/bin/apache-tomcat-9.0.56.tar.gztar xzf apache-tomcat-9.0.56.tar.gz -C /optsudo mv /opt/apache-tomcat-9.0.56 /opt/tomcat
  3. 配置环境变量:编辑/etc/profile文件,添加Tomcat环境变量:export CATALINA_HOME="/opt/tomcat"export PATH=$PATH:$CATALINA_HOME/bin。执行source /etc/profile使配置生效。

二、配置Tomcat集群

  1. 修改server.xml:在每个Tomcat节点的$TOMCAT_HOME/conf/server.xml文件中,找到< Engine> 元素,添加< Cluster> 配置,启用集群通信和会话复制。关键配置如下:
    <
        Engine name="Catalina" defaultHost="localhost">
        
      <
        Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">
        
        <
        !-- 会话管理器:DeltaManager支持主备复制 -->
        
        <
        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=".*\.gif;
        .*\.js;
        .*\.jpg;
        .*\.png;
        .*\.css;
        .*\.txt"/>
        
        <
        !-- 部署器:同步war包到集群节点 -->
        
        <
        Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" 
                  tempDir="/tmp/war-temp/" 
                  deployDir="/tmp/war-deploy/" 
                  watchDir="/tmp/war-listen/" 
                  watchEnabled="false"/>
        
        <
        !-- 集群监听器:监听会话变化 -->
        
        <
        ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
        
      <
        /Cluster>
        
    <
        /Engine>
        
    
    注意:address="228.0.0.4"是组播地址,需确保网络允许该地址的通信;port="45564"是组播端口,可根据实际情况调整。
  2. 配置context.xml(可选):若应用需要独立会话管理,在$TOMCAT_HOME/conf/context.xml中添加集群配置,确保应用参与集群:
    <
        Context>
        
      <
        Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
        
    <
        /Context>
    
    

三、部署应用 将需要集群化的应用WAR文件复制到每个Tomcat节点的webapps目录下(如/opt/tomcat/webapps)。Tomcat会自动解压并部署应用,集群节点会通过配置的通信通道同步应用和会话信息。

四、配置负载均衡器(以Nginx为例)

  1. 安装Nginx:在负载均衡节点执行sudo yum install epel-releasesudo yum install nginx安装Nginx。
  2. 配置负载均衡:编辑/etc/nginx/nginx.conf文件,在http块中添加upstream配置,列出所有Tomcat节点的IP和端口(如8080):
    http {
    
      upstream tomcat_cluster {
        
        server 192.168.1.1:8080;
        
        server 192.168.1.2:8080;
        
        server 192.168.1.3: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;
    
        }
    
      }
    
    }
        
    
    说明:proxy_set_header用于传递客户端真实IP和协议信息,确保后端Tomcat能正确记录访问日志。
  3. 启动Nginx:执行sudo systemctl start nginx启动Nginx服务;sudo systemctl enable nginx设置开机自启。

五、验证集群

  1. 检查Tomcat状态:在每个节点执行ps -ef | grep tomcat,确认Tomcat进程正在运行;访问http://节点IP:8080,看到Tomcat欢迎页面说明节点启动成功。
  2. 测试负载均衡:访问负载均衡节点的IP(如http://yourdomain.com),多次刷新页面,观察请求是否被分发到不同Tomcat节点(可通过Tomcat的/status页面查看当前活跃会话数)。
  3. 验证会话复制:在应用中创建会话(如登录功能),关闭其中一个Tomcat节点,再次访问应用,确认会话未丢失(说明会话已成功复制到其他节点)。

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


若转载请注明出处: CentOS上Tomcat集群部署方法
本文地址: https://pptw.com/jishu/718782.html
CentOS extract在数据备份中作用是什么 CentOS回收站跨平台使用

游客 回复需填写必要信息