首页主机资讯centos下tomcat集群搭建教程

centos下tomcat集群搭建教程

时间2025-10-28 09:00:03发布访客分类主机资讯浏览878
导读:CentOS下Tomcat集群搭建详细教程 1. 环境准备 1.1 安装Java环境 Tomcat依赖Java运行环境,需先安装与Tomcat版本兼容的JDK(推荐OpenJDK 11+)。在所有集群节点上执行以下命令: sudo yum...

CentOS下Tomcat集群搭建详细教程

1. 环境准备

1.1 安装Java环境

Tomcat依赖Java运行环境,需先安装与Tomcat版本兼容的JDK(推荐OpenJDK 11+)。在所有集群节点上执行以下命令:

sudo yum install java-11-openjdk-devel -y
# 验证安装
java -version

确保输出显示Java版本信息,否则需调整安装命令。

1.2 下载并安装Tomcat

选择Tomcat 9或10(推荐稳定版本),在所有节点上执行:

# 下载Tomcat(以9.0.56为例)
wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.56/bin/apache-tomcat-9.0.56.tar.gz
# 解压到/opt目录
tar xzf apache-tomcat-9.0.56.tar.gz -C /opt
# 重命名目录(便于管理)
sudo mv /opt/apache-tomcat-9.0.56 /opt/tomcat

建议所有节点使用相同版本的Tomcat,避免兼容性问题。

2. 配置Tomcat集群

2.1 配置server.xml

编辑每个节点的/opt/tomcat/conf/server.xml,在< Engine> 元素内添加集群配置(关键参数说明见注释):

<
    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">
    
            <
    !-- 组播地址(所有节点需一致,228.0.0.0-239.255.255.255为私有地址) -->
    
            <
    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.TcpPingInterceptor"/>
    
            <
    Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
    
            <
    Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
    
        <
    /Channel>
    
        <
    !-- 会话复制阀:仅复制动态资源请求(如.jsp、.jspx) -->
    
        <
    Valve className="org.apache.catalina.ha.tcp.ReplicationValve" 
               filter=".*\.gif;
    .*\.js;
    .*\.jpg;
    .*\.png;
    .*\.css;
    .*\.txt;
    "/>
    
        <
    !-- 部署器:支持应用的集群部署(可选,生产环境建议手动同步) -->
    
        <
    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(组播地址)、port(组播端口)必须一致,否则无法通信。

2.2 配置context.xml

编辑每个节点的/opt/tomcat/conf/context.xml,在< Context> 元素内添加集群配置,启用会话复制:

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

这一步是会话复制的必要配置,确保应用状态能在节点间同步。

3. 配置负载均衡(Nginx)

3.1 安装Nginx

选择一台节点作为负载均衡服务器(或单独服务器),执行以下命令安装:

# 添加EPEL仓库
sudo yum install epel-release -y
# 安装Nginx
sudo yum install nginx -y
# 启动Nginx并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx

验证Nginx是否运行:curl http://localhost,应返回Nginx欢迎页面。

3.2 配置Nginx负载均衡

编辑Nginx配置文件(/etc/nginx/nginx.conf/etc/nginx/conf.d/default.conf),在http块内添加集群配置:

http {

    # 定义Tomcat集群节点(替换为实际IP和端口)
    upstream tomcat_cluster {
    
        server 192.168.1.101:8080;
      # 节点1
        server 192.168.1.102:8080;
  # 节点2
        # 可添加更多节点
    }

    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

4. 启动集群并验证

4.1 启动Tomcat实例

在每个Tomcat节点上执行:

cd /opt/tomcat/bin
./startup.sh

查看启动日志(tail -f /opt/tomcat/logs/catalina.out),确认无报错信息。

4.2 验证集群状态

4.2.1 访问负载均衡地址

在浏览器中输入http://yourdomain.com(或Nginx服务器IP),多次刷新页面,观察请求是否被分发到不同节点(可通过Tomcat默认页面的Server信息判断)。

4.2.2 测试会话复制

部署一个简单的Web应用(如包含HttpSessionindex.jsp),在节点1登录后,刷新页面查看是否在节点2保持登录状态(需确保应用已开启< distributable/> ,见后续步骤)。

4.2.3 查看集群成员

访问http://节点IP:8080/manager/status(需提前配置Tomcat Manager权限),查看“Cluster”部分,确认节点已加入集群。

5. 可选配置:会话复制优化

若需确保应用状态完全同步,需在应用的WEB-INF/web.xml中添加< distributable/> 标签:

<
    web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
         http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" 
         version="4.0">
    
    <
    distributable/>
      <
    !-- 开启分布式会话 -->
    
<
    /web-app>
    

这一步是会话复制的强制要求,否则应用状态无法在节点间同步。

6. 防火墙配置

确保防火墙允许Tomcat(8080端口)和Nginx(80端口)的流量通过:

# 开放Tomcat端口
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
# 开放Nginx端口
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
# 重新加载防火墙规则
sudo firewall-cmd --reload

若使用SELinux,需调整SELinux策略(如setsebool -P httpd_can_network_connect 1)。

通过以上步骤,即可在CentOS环境下搭建一个基本的Tomcat集群,实现负载均衡和高可用性。根据实际需求,可进一步优化配置(如调整组播参数、启用SSL、配置会话持久化等)。

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


若转载请注明出处: centos下tomcat集群搭建教程
本文地址: https://pptw.com/jishu/736446.html
centos里tomcat端口冲突解决 centos系统tomcat安全加固方法

游客 回复需填写必要信息