以下是在Linux上搭建Tomcat集群的核心步骤,基于Nginx负载均衡和Tomcat原生集群配置:
安装Java环境
确保所有节点安装相同版本的JDK(如OpenJDK 11):
sudo yum install java-11-openjdk-devel # CentOS
sudo apt install openjdk-11-jdk # Ubuntu
下载并安装Tomcat
在每个节点解压Tomcat(建议版本≥9.0):
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
mv apache-tomcat-9.0.85 /opt/tomcat
修改server.xml(关键步骤)
在/opt/tomcat/conf/server.xml中启用集群配置:
<Engine name="Catalina" defaultHost="localhost">
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">
<!-- 会话管理器(DeltaManager支持全量复制) -->
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"/>
<!-- 通信通道(多播方式发现节点) -->
<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"/> # 节点失联判定时间(毫秒)
</Channel>
</Cluster>
</Engine>
说明:
address和port需与集群中所有节点保持一致。配置应用可集群化
在应用的WEB-INF/web.xml中添加<distributable/>标签,启用会话复制:
<web-app>
<distributable/>
</web-app>
安装Nginx
sudo yum install nginx # CentOS
sudo apt install nginx # Ubuntu
配置负载均衡规则
编辑/etc/nginx/nginx.conf,添加集群节点配置:
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
least_conn; # 动态选择最少连接节点
}
server {
listen 80;
location / {
proxy_pass http://tomcat_cluster;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
说明:
least_conn策略可根据节点负载动态分配请求,适合高并发场景。启动服务
/opt/tomcat/bin/startup.sh
sudo systemctl start nginx
测试集群功能
http://your-server-ip/),观察请求是否被分发到不同Tomcat节点。tomcat-redis-session-manager库),避免多播复制的网络开销。proxy_next_upstream,当节点故障时自动剔除。catalina.out和Nginx日志排查节点通信或负载均衡问题。以上步骤参考自,适用于CentOS/Ubuntu系统,可根据实际需求调整节点数量和配置细节。