CentOS上Tomcat集群部署方法
导读:一、准备工作 安装Java环境:Tomcat依赖Java运行环境,需在所有集群节点安装兼容的JDK(如OpenJDK 1.8)。执行sudo yum install java-1.8.0-openjdk-devel安装,通过java -v...
一、准备工作
- 安装Java环境:Tomcat依赖Java运行环境,需在所有集群节点安装兼容的JDK(如OpenJDK 1.8)。执行
sudo yum install java-1.8.0-openjdk-devel
安装,通过java -version
验证安装是否成功。 - 下载并解压Tomcat:从Apache Tomcat官网下载相同版本的Tomcat压缩包(如9.0.56),在每个节点解压到指定目录(如
/opt/tomcat
)。命令示例:wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.56/bin/apache-tomcat-9.0.56.tar.gz
;tar xzf apache-tomcat-9.0.56.tar.gz -C /opt
;sudo mv /opt/apache-tomcat-9.0.56 /opt/tomcat
。 - 配置环境变量:编辑
/etc/profile
文件,添加Tomcat环境变量:export CATALINA_HOME="/opt/tomcat"
;export PATH=$PATH:$CATALINA_HOME/bin
。执行source /etc/profile
使配置生效。
二、配置Tomcat集群
- 修改server.xml:在每个Tomcat节点的
$TOMCAT_HOME/conf/server.xml
文件中,找到< Engine>
元素,添加< Cluster>
配置,启用集群通信和会话复制。关键配置如下:
注意:< 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"> < 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.TcpFailureDetector"/> < Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/> < /Channel> < !-- 请求过滤:避免静态资源复制 --> < Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=".*\.gif; .*\.js; .*\.jpg; .*\.png; .*\.css; .*\.txt"/> < !-- 部署器:同步war包到集群节点 --> < 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="228.0.0.4"
是组播地址,需确保网络允许该地址的通信;port="45564"
是组播端口,可根据实际情况调整。 - 配置context.xml(可选):若应用需要独立会话管理,在
$TOMCAT_HOME/conf/context.xml
中添加集群配置,确保应用参与集群:< Context> < Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> < /Context>
三、部署应用
将需要集群化的应用WAR文件复制到每个Tomcat节点的webapps
目录下(如/opt/tomcat/webapps
)。Tomcat会自动解压并部署应用,集群节点会通过配置的通信通道同步应用和会话信息。
四、配置负载均衡器(以Nginx为例)
- 安装Nginx:在负载均衡节点执行
sudo yum install epel-release
;sudo yum install nginx
安装Nginx。 - 配置负载均衡:编辑
/etc/nginx/nginx.conf
文件,在http
块中添加upstream
配置,列出所有Tomcat节点的IP和端口(如8080):
说明:http { upstream tomcat_cluster { server 192.168.1.1:8080; server 192.168.1.2:8080; server 192.168.1.3:8080; } server { listen 80; server_name yourdomain.com; 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; } } }
proxy_set_header
用于传递客户端真实IP和协议信息,确保后端Tomcat能正确记录访问日志。 - 启动Nginx:执行
sudo systemctl start nginx
启动Nginx服务;sudo systemctl enable nginx
设置开机自启。
五、验证集群
- 检查Tomcat状态:在每个节点执行
ps -ef | grep tomcat
,确认Tomcat进程正在运行;访问http://节点IP:8080
,看到Tomcat欢迎页面说明节点启动成功。 - 测试负载均衡:访问负载均衡节点的IP(如
http://yourdomain.com
),多次刷新页面,观察请求是否被分发到不同Tomcat节点(可通过Tomcat的/status
页面查看当前活跃会话数)。 - 验证会话复制:在应用中创建会话(如登录功能),关闭其中一个Tomcat节点,再次访问应用,确认会话未丢失(说明会话已成功复制到其他节点)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS上Tomcat集群部署方法
本文地址: https://pptw.com/jishu/718782.html