以下是在CentOS上配置Tomcat集群的核心步骤,基于搜索结果整理:
一、环境准备
-
安装JDK
确保所有节点安装相同版本的JDK(如OpenJDK 11):sudo yum install java-11-openjdk-devel -
下载并解压Tomcat
在每个节点解压Tomcat到指定目录(如/opt/tomcat):wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.85/bin/apache-tomcat-9.0.85.tar.gz tar -xzf apache-tomcat-9.0.85.tar.gz -C /opt
二、配置Tomcat集群
-
修改
server.xml
在conf/server.xml中启用集群,关键配置如下:<Engine name="Catalina" defaultHost="localhost"> <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"> <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" maxThreads="6"/> <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"/> <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> </Channel> <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/> </Cluster> </Engine> -
修改
context.xml
在conf/context.xml中添加标签,启用会话复制:<Context> <distributable/> </Context> -
配置集群节点唯一标识
在conf/server.xml的标签中添加jvmRoute属性(需与负载均衡器配置一致):<Engine name="Catalina" defaultHost="localhost" jvmRoute="node1">每个节点的
jvmRoute需唯一(如node1、node2)
三、配置负载均衡器(以Nginx为例)
-
安装Nginx
sudo yum install nginx -
配置Nginx集群转发
编辑/etc/nginx/nginx.conf,添加upstream模块:http { upstream tomcat_cluster { server 192.168.1.101:8080; # Tomcat节点1 server 192.168.1.102:8080; # Tomcat节点2 server 192.168.1.103:8080; # Tomcat节点3 } server { listen 80; location / { proxy_pass http://tomcat_cluster; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } } -
启动Nginx
sudo systemctl start nginx sudo systemctl enable nginx
四、验证集群
-
启动Tomcat实例
在每个节点执行:/opt/tomcat/bin/startup.sh -
测试集群功能
- 访问Nginx地址,验证请求是否被分发到不同Tomcat节点。
- 部署应用并检查会话是否在节点间同步(可通过登录状态测试)
五、可选优化
- 会话存储:使用Redis或Memcached替代默认内存复制,提升会话共享效率。
- 健康检查:在Nginx中配置
max_fails和fail_timeout,自动剔除故障节点。 - 防火墙配置:开放Tomcat端口(8080)和集群通信端口(如4000、45564):
sudo firewall-cmd --add-port=8080/tcp --permanent sudo firewall-cmd --add-port=4000/tcp --permanent sudo firewall-cmd --reload