阅读量:4
Ubuntu环境下搭建Tomcat集群的详细步骤
1. 准备工作
- 服务器要求:至少2台Ubuntu服务器(物理机或虚拟机),确保网络互通(建议使用私有网络,避免防火墙拦截集群通信端口)。
- 软件准备:下载Tomcat(建议版本8.5+或9.x,需所有节点版本一致)、JDK(1.8+,需配置环境变量
JAVA_HOME)。 - 基础配置:每台服务器需安装并配置JDK(通过
java -version验证),并解压Tomcat到指定目录(如/opt/tomcat)。
2. 安装与基础配置Tomcat
- 解压Tomcat:在每台服务器上执行
tar -zxvf apache-tomcat-x.x.x.tar.gz -C /opt/,重命名为tomcat(便于管理)。 - 配置环境变量:编辑
/etc/profile,添加export CATALINA_HOME=/opt/tomcat,执行source /etc/profile生效。 - 修改端口:为避免节点间端口冲突,需修改每台服务器的
conf/server.xml中的以下端口(示例为两台节点的配置差异):- 节点1:
Server Port=8005、Connector Port=8080、AJP Port=8009; - 节点2:
Server Port=9005、Connector Port=9080、AJP Port=9009(确保端口不重复)。
- 节点1:
3. 配置Tomcat集群(核心步骤)
编辑每台服务器conf/server.xml文件,在标签内添加集群配置(关键参数说明见注释):
<Engine name="Catalina" defaultHost="localhost" jvmRoute="node1">
<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" -- 自动获取本机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.TcpPingInterceptor"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
Channel>
<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>
- 关键说明:
jvmRoute:每台节点需唯一(如node1、node2),对应负载均衡配置中的balance_workers名称;- 组播地址:确保所有节点在同一网段,且防火墙允许该地址的UDP通信(端口45564);
- 接收器端口:每台节点需唯一(如
4000、4001),避免端口冲突。
4. 启用应用会话复制
为了让应用支持集群会话同步,需在应用的WEB-INF/web.xml文件中添加标签(示例):
<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_3_1.xsd"
version="3.1">
<distributable/>
web-app>
- 注意事项:仅标注
的应用会话才会被复制,未标注的应用会话仅在当前节点有效。
5. 配置负载均衡(以Nginx为例)
Tomcat集群需要负载均衡器将请求分发到各节点,以下是Nginx的配置步骤:
- 安装Nginx:执行
sudo apt update && sudo apt install nginx。 - 配置负载均衡:编辑
/etc/nginx/sites-available/default,添加以下内容:
upstream tomcat_cluster {
server 192.168.1.101:8080; # 节点1的IP和Tomcat端口
server 192.168.1.102:9080; # 节点2的IP和Tomcat端口
# 可添加更多节点
}
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;
}
}
- 启用配置:执行
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/,然后重启Nginx:sudo systemctl restart nginx。
6. 启动集群并验证
- 启动Tomcat:在每台服务器上执行
/opt/tomcat/bin/startup.sh,通过ps -ef | grep tomcat验证进程是否启动。 - 查看集群状态:访问
http://节点IP:8080/manager/status(需输入管理员账号密码),查看“Cluster”栏目中的节点列表(显示所有节点已加入集群)。 - 测试会话同步:
- 访问
http://yourdomain.com(通过Nginx负载均衡),登录应用并记录Session ID; - 关闭当前节点的Tomcat(如
/opt/tomcat/bin/shutdown.sh); - 刷新页面,若仍能保持登录状态且Session ID变化,说明会话复制成功。
- 访问
7. 可选优化
- 静态资源分离:将CSS、JS、图片等静态资源放在Nginx或其他CDN服务器,减少Tomcat负载;
- 会话持久化:将会话存储到Redis(需添加Redisson依赖),避免节点宕机导致会话丢失;
- 监控报警:使用Prometheus+Granafa监控Tomcat集群的CPU、内存、会话数等指标,设置报警阈值。
通过以上步骤,即可在Ubuntu环境下搭建一个基本的Tomcat集群,实现负载均衡和高可用性。根据实际需求,可进一步调整集群配置(如优化组播参数、调整复制模式)以满足高并发场景。
以上就是关于“Ubuntu中Tomcat集群如何搭建”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm