一、准备工作
sudo yum install java-1.8.0-openjdk-devel
安装,通过java -version
验证安装是否成功。/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集群
$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"
是组播端口,可根据实际情况调整。$TOMCAT_HOME/conf/context.xml
中添加集群配置,确保应用参与集群:<Context>
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
</Context>
三、部署应用
将需要集群化的应用WAR文件复制到每个Tomcat节点的webapps
目录下(如/opt/tomcat/webapps
)。Tomcat会自动解压并部署应用,集群节点会通过配置的通信通道同步应用和会话信息。
四、配置负载均衡器(以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能正确记录访问日志。sudo systemctl start nginx
启动Nginx服务;sudo systemctl enable nginx
设置开机自启。五、验证集群
ps -ef | grep tomcat
,确认Tomcat进程正在运行;访问http://节点IP:8080
,看到Tomcat欢迎页面说明节点启动成功。http://yourdomain.com
),多次刷新页面,观察请求是否被分发到不同Tomcat节点(可通过Tomcat的/status
页面查看当前活跃会话数)。