在Debian下搭建Tomcat集群的步骤
1. 准备工作
确保所有Debian服务器已更新至最新版本,并安装Java环境(Tomcat依赖Java运行):
sudo apt update && sudo apt upgrade -y
sudo apt install openjdk-11-jdk -y # 推荐使用OpenJDK 11及以上版本
2. 安装Tomcat
在每台服务器上安装Tomcat(以Tomcat 9为例,版本需保持一致):
sudo apt install tomcat9 tomcat9-admin -y
安装完成后,Tomcat会自动启动,可通过systemctl status tomcat9验证状态。
3. 配置Tomcat集群(关键步骤)
3.1 修改server.xml(启用集群通信)
每台Tomcat的/etc/tomcat9/server.xml需添加集群配置,核心是元素及子组件:
<Engine name="Catalina" defaultHost="localhost">
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">
<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" # 心跳发送间隔(ms)
dropTime="30000"/> # 节点失联判定时间(ms)
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto" # 自动获取本机IP
port="4000" # 接收端口(每台服务器需唯一)
autoBind="100" # 端口范围(如4000-4099)
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"/>
Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.css"/> # 排除静态资源
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<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(启用分布式会话)
每台Tomcat的/etc/tomcat9/context.xml需添加元素,指定会话管理方式为DeltaManager(适用于小型集群,会话同步到所有节点):
<Context>
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
Context>
3.3 设置jvmRoute(唯一标识节点)
每台Tomcat的/etc/tomcat9/server.xml中,元素需添加jvmRoute属性(如node1、node2),用于标识节点:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="node1"> # node1需唯一
4. 配置负载均衡(Nginx为例)
选择一台服务器安装Nginx作为负载均衡器,将请求分发到各Tomcat节点:
sudo apt install nginx -y
编辑Nginx配置文件(/etc/nginx/sites-available/default),添加upstream模块:
upstream tomcat_cluster {
server 192.168.1.101:8080; # Tomcat节点1 IP
server 192.168.1.102:8080; # Tomcat节点2 IP
server 192.168.1.103:8080; # Tomcat节点3 IP
}
server {
listen 80;
server_name your_domain.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;
}
}
重启Nginx使配置生效:
sudo systemctl restart nginx
5. 启动Tomcat集群
在每台服务器上启动Tomcat服务,并设置开机自启:
sudo systemctl start tomcat9
sudo systemctl enable tomcat9
验证Tomcat是否运行:
curl http://localhost:8080
6. 验证集群功能
6.1 检查集群状态
访问任意Tomcat节点的管理页面(http://<节点IP>:8080/manager/html),登录后查看“集群”栏目,应显示所有节点已加入集群。
6.2 测试会话复制
部署一个简单的Web应用(如session-test.war),包含以下代码:
<%@ page session="true" %>
Session ID: <%= session.getId() %>
Session Value: <%= session.getAttribute("test") %>
通过Nginx访问应用,提交表单后刷新页面,检查Session ID是否一致(表示会话已复制)。
注意事项
- 端口唯一性:同一台服务器上的Tomcat实例需修改
Connector端口(如8080、8081)、AJP端口(如8009、8010)和Receiver端口(如4000、4001),避免冲突。 - 组播配置:若集群节点跨网络,需确保组播地址(
228.0.0.4)和端口(45564)未被防火墙拦截,或改用静态成员列表(修改Membership为StaticMember)。 - 会话存储:对于大型集群,建议使用Redis等外部存储替代
DeltaManager(需添加tomcat-redis-session-manager依赖)。 - 安全加固:禁用Tomcat管理界面的默认账号,配置HTTPS(通过Let’s Encrypt获取免费证书),限制管理页面访问IP。
以上就是关于“Debian下Tomcat集群怎么搭建”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm