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

CentOS Tomcat集群搭建方法

时间2025-10-13 10:15:03发布访客分类主机资讯浏览406
导读:CentOS环境下Tomcat集群搭建步骤 1. 准备工作 服务器要求:至少2台CentOS服务器(或同一服务器的不同端口模拟多节点),确保网络互通。 基础环境:所有节点安装Java 8+(Tomcat 9+推荐),通过java -ver...

CentOS环境下Tomcat集群搭建步骤

1. 准备工作

  • 服务器要求:至少2台CentOS服务器(或同一服务器的不同端口模拟多节点),确保网络互通。
  • 基础环境:所有节点安装Java 8+(Tomcat 9+推荐),通过java -version验证;关闭防火墙或放行Tomcat端口(8080、8009)及集群通信端口(如4000、45564):
    sudo firewall-cmd --permanent --add-port=8080/tcp
    sudo firewall-cmd --permanent --add-port=4000/tcp
    sudo firewall-cmd --permanent --add-port=45564/udp
    sudo firewall-cmd --reload
    

2. 安装Tomcat

在所有节点执行相同操作:

# 下载Tomcat(以9.0.56为例)
wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.56/bin/apache-tomcat-9.0.56.tar.gz
# 解压到/opt目录
sudo tar xzf apache-tomcat-9.0.56.tar.gz -C /opt
# 重命名目录(可选)
sudo mv /opt/apache-tomcat-9.0.56 /opt/tomcat
# 创建软链接(方便管理多版本)
sudo ln -s /opt/tomcat /opt/tomcat_cluster

配置环境变量(全局生效):

echo 'export CATALINA_HOME="/opt/tomcat_cluster"' >
    >
     /etc/profile
echo 'export PATH=$PATH:$CATALINA_HOME/bin' >
    >
     /etc/profile
source /etc/profile

3. 配置Tomcat集群

3.1 修改server.xml(核心配置)

编辑$CATALINA_HOME/conf/server.xml,在< Engine> 标签内添加集群配置(关键参数说明见注释):

<
    Engine name="Catalina" defaultHost="localhost" jvmRoute="node1">
     <
    !-- jvmRoute需唯一标识节点(如node1、node2) -->
    
  <
    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">
    
      <
    !-- 组播服务(节点发现):address为组播IP(228.0.0.0-239.255.255.255),port为组播端口 -->
    
      <
    Membership className="org.apache.catalina.tribes.membership.McastService"
                  address="228.0.0.4"
                  port="45564"
                  frequency="500"  <
    !-- 心跳频率(ms) -->
    
                  dropTime="3000"/>
     <
    !-- 节点失联判定时间(ms) -->
    
      <
    !-- 接收器(接收其他节点消息) -->
    
      <
    Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                address="auto"  <
    !-- 自动获取本机IP -->
    
                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>
    

3.2 修改context.xml(启用会话复制)

编辑$CATALINA_HOME/conf/context.xml,添加< Cluster> 标签:

<
    Context>
    
  <
    Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
    
<
    /Context>

4. 配置负载均衡器(Nginx为例)

在一台单独的服务器(或集群中的某节点)安装Nginx:

sudo yum install epel-release -y
sudo yum install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx

修改Nginx配置(/etc/nginx/nginx.conf),添加upstream模块:

http {

    upstream tomcat_cluster {
    
        server 192.168.1.101:8080;
      # Tomcat节点1 IP
        server 192.168.1.102:8080;
  # Tomcat节点2 IP
        # 可添加更多节点
    }

    server {
    
        listen 80;
    
        server_name yourdomain.com;
  # 替换为域名或IP
        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;

        }

    }

}
    

重启Nginx:

sudo systemctl restart nginx

5. 启动集群并验证

5.1 启动Tomcat

在所有Tomcat节点上执行:

cd $CATALINA_HOME/bin
./startup.sh

通过ps -ef | grep tomcat确认进程运行,tail -f $CATALINA_HOME/logs/catalina.out查看日志。

5.2 验证集群状态

  • 访问Nginx:浏览器输入http://yourdomain.com,多次刷新页面,观察Tomcat节点日志(如Node1Node2)是否交替打印请求信息。
  • 查看集群成员:访问http://yourdomain.com/manager/html(需提前配置Tomcat Manager权限),查看“Cluster”栏目中的节点列表。

6. 可选:配置会话持久化(数据库/Redis)

若需长期保存会话或跨集群共享,可将会话存储到数据库(MySQL)或Redis:

  • Redis配置:添加Redisson依赖到应用,配置redisson.yaml连接Redis,修改context.xml使用RedissonSessionManager
  • 数据库配置:创建会话表(如tomcat_sessions),配置PersistentManager指向数据库。

注意事项

  • 版本一致性:所有Tomcat节点需使用相同版本,避免兼容性问题。
  • 端口冲突:确保各节点的jvmRouteReceiver portMembership port唯一。
  • 性能调优:根据集群规模调整frequency(心跳频率)、maxThreads(发送线程数)等参数。
  • 安全配置:生产环境需启用Tomcat认证(如Manager界面的basicAuth),禁用不必要的组件(如AJP协议)。

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


若转载请注明出处: CentOS Tomcat集群搭建方法
本文地址: https://pptw.com/jishu/724468.html
CentOS Apache2如何实现防盗劫持 如何备份CentOS Tomcat数据

游客 回复需填写必要信息