目录
安装tomcat并进行验证操作
在一台虚拟机上安装Java 1.8 和 Tomcat 9.0.111。下载tomcat包,下载地址:http://tomcat.apache.org/download-90.cgi
部署tomcat:
tar -zxvf apache-tomcat-9.0.111.tar.gz
安装Java:
yum -y install java-1.8.0-openjdk
第一步:配置和启动 Tomcat 服务器
1. 进入 Tomcat 目录并检查结构
cd /usr/local/tomcat/apache-tomcat-9.0.111
ls -la
您应该看到类似这样的目录结构:

2. 启动 Tomcat 服务
# 使用 startup.sh 启动 Tomcat
./bin/startup.sh
您应该看到类似输出:

3. 验证 Tomcat 是否正在运行
# 检查进程
ps -ef | grep tomcat
# 检查端口监听 (Tomcat 默认使用 8080 端口)
netstat -an | grep 8080
4. 在 Tomcat 服务器上本地测试
# 使用 curl 测试本地访问
curl http://localhost:8080
如果看到 HTML 输出,说明 Tomcat 运行正常。
第二步:从测试机访问 Tomcat
现在转到第二台虚拟机(测试机),执行以下测试:
1. 测试网络连通性
# 替换为您的 Tomcat 服务器的实际 IP,我的是4.55
ping 192.168.4.55
2. 测试 Tomcat 服务访问
方法 1:使用 curl
# 替换为Tomcat服务器的实际 IP
curl http://192.168.4.55:8080

方法 2:在浏览器输入 http://192.168.4.55:8080 (ip为Tomcat服务器的IP)

修改www.b.com网站的首页目录为base
1.进入Tomcat webapps目录:

2.创建base目录结构:
# 创建base目录和WEB-INF子目录
mkdir -p base/WEB-INF
# 创建web.xml配置文件
cat > base/WEB-INF/web.xml << EOF
<?xml version="1.0" encoding="UTF-8"?>
<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_4_0.xsd"
version="4.0">
<display-name>www.b.com Base Directory</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
EOF
3.创建测试页面
# 创建首页文件
cat > base/index.html << EOF
<!DOCTYPE html>
<html>
<head>
<title>www.b.com - Base Directory</title>
</head>
<body>
<h1>Welcome to www.b.com</h1>
<p>This is served from the <strong>base</strong> directory</p>
<p>Server IP: 192.168.4.55</p>
<p>Current time: <span id="time"></span></p>
<script>
document.getElementById('time').textContent = new Date().toLocaleString();
</script>
</body>
</html>
EOF
4. 配置Tomcat虚拟主机
# 备份原始配置文件
cp /usr/local/tomcat/apache-tomcat-9.0.111/conf/server.xml /usr/local/tomcat/apache-tomcat-9.0.111/conf/server.xml.backup
# 编辑server.xml
vim /usr/local/tomcat/apache-tomcat-9.0.111/conf/server.xml
在 </Realm> 标签之后、<Host name="localhost"> 之前,添加以下配置:
<!-- www.b.com Virtual Host Configuration -->
<Host name="www.b.com" appBase="webapps/base"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="." reloadable="true" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="www.b.com_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
现在测试配置是否工作:
1. 重启 Tomcat
/usr/local/tomcat/apache-tomcat-9.0.111/bin/shutdown.sh
/usr/local/tomcat/apache-tomcat-9.0.111/bin/startup.sh
2. 在服务器上测试本地访问
# 添加本地hosts解析
echo "127.0.0.1 www.b.com" >> /etc/hosts
# 测试访问
curl -H "Host: www.b.com" http://localhost:8080/
3. 从测试机测试
在另一台虚拟机(测试机)上:
# 添加hosts解析
echo "192.168.4.55 www.b.com" >> /etc/hosts
# 测试访问
curl http://www.b.com:8080/

错误页面跳转:
1. 创建错误页面目录
mkdir -p /usr/local/tomcat/apache-tomcat-9.0.111/webapps/base/error
2. 创建错误页面文件
# 创建404错误页面
cat > /usr/local/tomcat/apache-tomcat-9.0.111/webapps/base/error/404.html << EOF
<!DOCTYPE html>
<html>
<head>
<title>404 - Page Not Found</title>
</head>
<body>
<h1>404 Error - Page Not Found</h1>
<p>The page you are looking for does not exist on www.b.com.</p>
<p>Server: 192.168.4.55</p>
<p><a href="/">Return to Homepage</a></p>
</body>
</html>
EOF
# 创建500错误页面
cat > /usr/local/tomcat/apache-tomcat-9.0.111/webapps/base/error/500.html << EOF
<!DOCTYPE html>
<html>
<head>
<title>500 - Server Error</title>
</head>
<body>
<h1>500 Error - Internal Server Error</h1>
<p>Sorry, something went wrong on our server.</p>
<p>Server: 192.168.4.55</p>
<p><a href="/">Return to Homepage</a></p>
</body>
</html>
EOF
3. 修改 web.xml 添加错误页面配置
# 备份原始web.xml
cp /usr/local/tomcat/apache-tomcat-9.0.111/webapps/base/WEB-INF/web.xml /usr/local/tomcat/apache-tomcat-9.0.111/webapps/base/WEB-INF/web.xml.backup
# 编辑web.xml文件
vi /usr/local/tomcat/apache-tomcat-9.0.111/webapps/base/WEB-INF/web.xml
将文件内容修改为:
<?xml version="1.0" encoding="UTF-8"?>
<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_4_0.xsd"
version="4.0">
<display-name>www.b.com Base Directory</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- 错误页面跳转配置 - 第三步完成 -->
<error-page>
<error-code>404</error-code>
<location>/error/404.html</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error/500.html</location>
</error-page>
</web-app>
4. 验证配置
# 检查目录结构
ls -la /usr/local/tomcat/apache-tomcat-9.0.111/webapps/base/error/
# 检查web.xml配置
grep -A 3 "error-page" /usr/local/tomcat/apache-tomcat-9.0.111/webapps/base/WEB-INF/web.xml
5. 重启Tomcat
/usr/local/tomcat/apache-tomcat-9.0.111/bin/shutdown.sh
/usr/local/tomcat/apache-tomcat-9.0.111/bin/startup.sh
6. 测试跳转功能
从测试机进行测试:
# 测试正常页面(应该显示首页)
curl http://www.b.com:8080/
# 测试不存在的页面(应该显示404错误页面)
curl http://www.b.com:8080/this-page-does-not-exist
# 查看响应头信息
curl -I http://www.b.com:8080/this-page-does-not-exist

配置Tomcat支持SSL加密网站
SSL配置将为您的网站启用HTTPS协议,提供加密的安全访问。我们将使用自签名证书进行演示。
1. 创建证书存储目录
# 创建SSL证书目录
mkdir -p /usr/local/tomcat/apache-tomcat-9.0.111/conf/ssl
cd /usr/local/tomcat/apache-tomcat-9.0.111/conf/ssl
2. 生成自签名SSL证书
# 生成密钥库和自签名证书
keytool -genkey -alias tomcat -keyalg RSA -keystore tomcat.keystore -validity 3650 -keysize 2048
在执行过程中,您需要输入以下信息(请根据实际情况填写):
完整示例交互:
输入密钥库口令: changeit 再次输入新口令: changeit 您的名字与姓氏是什么? [Unknown]: www.b.com 您的组织单位名称是什么? [Unknown]: IT Department 您的组织名称是什么? [Unknown]: My Company 您所在的城市或区域名称是什么? [Unknown]: Beijing 您所在的省/市/自治区名称是什么? [Unknown]: Beijing 该单位的双字母国家/地区代码是什么? [Unknown]: CN CN=www.b.com, OU=IT Department, O=My Company, L=Beijing, ST=Beijing, C=CN是否正确? [否]: yes 输入 <tomcat> 的密钥口令 (直接回车则与密钥库口令相同): [直接回车]
3. 配置Tomcat的SSL连接器
编辑server.xml文件,启用HTTPS连接器:
vim /usr/local/tomcat/apache-tomcat-9.0.111/conf/server.xml
找到以下被注释的SSL连接器配置(大约在第90行左右):
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true"
maxParameterCount="1000"
>
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
certificateKeystorePassword="changeit" type="RSA" />
</SSLHostConfig>
</Connector>
-->
取消注释并修改为:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true"
maxParameterCount="1000"
scheme="https" secure="true" SSLVerifyClient="optional"
keystoreFile="conf/ssl/tomcat.keystore" keystorePass="changeit"
clientAuth="false" sslProtocol="TLS">
</Connector>
4. 配置虚拟主机支持SSL(可选但推荐)
在server.xml中找到www.b.com的Host配置,确保它支持SSL:
<Host name="www.b.com" appBase="webapps/base"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="." reloadable="true" />
<!-- 添加SSL支持 -->
<Valve className="org.apache.catalina.valves.SSLValve" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="www.b.com_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
5. 重启Tomcat服务
/usr/local/tomcat/apache-tomcat-9.0.111/bin/shutdown.sh
/usr/local/tomcat/apache-tomcat-9.0.111/bin/startup.sh
6. 测试HTTPS访问
在Tomcat服务器上本地测试:
# 测试HTTPS连接
curl -k https://localhost:8443/
从测试机测试:
# 测试HTTPS访问(使用-k参数忽略证书验证)
curl -k https://www.b.com:8443/
# 详细测试(查看证书信息)
curl -kv https://www.b.com:8443/

配置Tomcat日志
Tomcat日志配置主要包括访问日志、应用程序日志和日志轮转配置。我们将进行以下几个方面的配置:
1. 配置详细的访问日志
编辑 server.xml 文件,改进访问日志配置:
vim /usr/local/tomcat/apache-tomcat-9.0.111/conf/server.xml
找到www.b.com虚拟主机的AccessLogValve配置,修改为更详细的格式:
<Host name="www.b.com" appBase="webapps/base"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="." reloadable="true" />
<!-- 配置SSL支持 -->
<Valve className="org.apache.catalina.valves.SSLValve" />
<!-- 配置详细访问日志 -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="www.b.com_access" suffix=".log"
pattern="%{yyyy-MM-dd HH:mm:ss}t "%r" %s %b %D ms "%{User-Agent}i" "%{Referer}i""
fileDateFormat="yyyy-MM-dd"
rotatable="true"
maxDays="30" />
</Host>
2. 为默认主机也配置访问日志
找到localhost主机的AccessLogValve,同样进行改进:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- 配置详细访问日志 -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access" suffix=".log"
pattern="%{yyyy-MM-dd HH:mm:ss}t "%r" %s %b %D ms "%{User-Agent}i" "%{Referer}i""
fileDateFormat="yyyy-MM-dd"
rotatable="true"
maxDays="30" />
</Host>
3. 配置日志级别和输出
编辑Tomcat的日志配置文件:
vim /usr/local/tomcat/apache-tomcat-9.0.111/conf/logging.properties
在文件末尾添加或修改以下配置:
# 设置全局日志级别
.level = INFO
# 设置Tomcat核心日志级别
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler
org.apache.catalina.core.ContainerBase.[Catalina].[www.b.com].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[www.b.com].handlers = 3www.b.com.org.apache.juli.FileHandler
# 设置应用程序日志级别
com.myapp.level = INFO
# 配置www.b.com虚拟主机的专用日志
3www.b.com.org.apache.juli.FileHandler.level = INFO
3www.b.com.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
3www.b.com.org.apache.juli.FileHandler.prefix = www.b.com.
3www.b.com.org.apache.juli.FileHandler.maxDays = 30
3www.b.com.org.apache.juli.FileHandler.encoding = UTF-8
4. 创建日志轮转脚本
创建日志管理脚本,实现日志自动轮转和清理:
# 创建日志管理脚本
cat > /usr/local/tomcat/apache-tomcat-9.0.111/bin/log-manager.sh << 'EOF'
#!/bin/bash
#
# Tomcat日志管理脚本
#
TOMCAT_HOME="/usr/local/tomcat/apache-tomcat-9.0.111"
LOG_DIR="$TOMCAT_HOME/logs"
DAYS_TO_KEEP=30
echo "Tomcat日志管理 - $(date)"
# 检查日志目录
if [ ! -d "$LOG_DIR" ]; then
echo "错误: 日志目录不存在: $LOG_DIR"
exit 1
fi
# 1. 清理旧日志文件
echo "清理超过 ${DAYS_TO_KEEP} 天的日志文件..."
find "$LOG_DIR" -name "*.log" -type f -mtime +$DAYS_TO_KEEP -delete
find "$LOG_DIR" -name "*.txt" -type f -mtime +$DAYS_TO_KEEP -delete
find "$LOG_DIR" -name "catalina.*.log" -type f -mtime +$DAYS_TO_KEEP -delete
# 2. 压缩一周前的日志
echo "压缩一周前的日志文件..."
find "$LOG_DIR" -name "*.log" -type f -mtime +7 -exec gzip {} \;
find "$LOG_DIR" -name "*.txt" -type f -mtime +7 -exec gzip {} \;
# 3. 显示日志文件统计
echo ""
echo "日志文件统计:"
du -sh "$LOG_DIR"
echo ""
echo "日志文件列表:"
ls -la "$LOG_DIR" | grep -E "\.(log|txt|gz)$"
echo "日志管理完成"
EOF
# 给脚本执行权限
chmod +x /usr/local/tomcat/apache-tomcat-9.0.111/bin/log-manager.sh
5. 配置日志自动轮转(使用logrotate)
创建logrotate配置文件:
# 创建Tomcat日志轮转配置
cat > /etc/logrotate.d/tomcat << EOF
/usr/local/tomcat/apache-tomcat-9.0.111/logs/*.log {
daily
missingok
rotate 30
compress
delaycompress
copytruncate
notifempty
dateext
dateformat -%Y-%m-%d
create 644 tomcat tomcat
postrotate
/usr/local/tomcat/apache-tomcat-9.0.111/bin/log-manager.sh
endscript
}
EOF
6. 创建应用专用日志配置
为www.b.com应用创建专门的日志配置文件:
# 创建应用日志目录
mkdir -p /usr/local/tomcat/apache-tomcat-9.0.111/webapps/base/WEB-INF/classes
# 创建log4j2配置文件(如果使用log4j2)
cat > /usr/local/tomcat/apache-tomcat-9.0.111/webapps/base/WEB-INF/classes/log4j2.xml << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<!-- 控制台输出 -->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<!-- 文件输出 -->
<RollingFile name="FileAppender"
fileName="/usr/local/tomcat/apache-tomcat-9.0.111/logs/www.b.com.app.log"
filePattern="/usr/local/tomcat/apache-tomcat-9.0.111/logs/www.b.com.app-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout>
<Pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
<DefaultRolloverStrategy max="30"/>
</RollingFile>
</Appenders>
<Loggers>
<!-- 应用日志 -->
<Logger name="com.myapp" level="info" additivity="false">
<AppenderRef ref="Console"/>
<AppenderRef ref="FileAppender"/>
</Logger>
<!-- 根日志 -->
<Root level="info">
<AppenderRef ref="Console"/>
<AppenderRef ref="FileAppender"/>
</Root>
</Loggers>
</Configuration>
EOF
7. 重启Tomcat并测试日志配置
# 重启Tomcat
/usr/local/tomcat/apache-tomcat-9.0.111/bin/shutdown.sh
/usr/local/tomcat/apache-tomcat-9.0.111/bin/startup.sh
# 等待启动完成后生成一些访问日志
sleep 10
# 生成测试访问
curl http://www.b.com:8080/ > /dev/null
curl https://www.b.com:8443/ > /dev/null
curl http://www.b.com:8080/nonexistent-page > /dev/null 2>&1
8. 验证日志配置
检查日志文件是否生成:
# 查看日志目录
ls -la /usr/local/tomcat/apache-tomcat-9.0.111/logs/
# 查看访问日志内容
tail -f /usr/local/tomcat/apache-tomcat-9.0.111/logs/www.b.com_access*.log
# 查看Catalina日志
tail -f /usr/local/tomcat/apache-tomcat-9.0.111/logs/catalina.out
# 测试日志管理脚本
/usr/local/tomcat/apache-tomcat-9.0.111/bin/log-manager.sh

配置Tomcat集群
1. 启用集群配置
编辑 server.xml 文件,启用集群配置:
vim /usr/local/tomcat/apache-tomcat-9.0.111/conf/server.xml
找到被注释的集群配置(大约在第75行左右):
<!-- <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> -->
取消注释并修改为详细的集群配置:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="8">
<!-- 集群管理器配置 -->
<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.MessageDispatch15Interceptor"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
</Channel>
<!-- 集群阀门配置 -->
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=".*\.gif|.*\.js|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css"/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<!-- 集群监听器 -->
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
2. 配置Engine的jvmRoute属性
在Engine标签中添加jvmRoute属性,用于标识集群中的节点:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="node1">
3. 为应用启用分布式支持
修改应用的web.xml文件,添加<distributable/>标签:
vim /usr/local/tomcat/apache-tomcat-9.0.111/webapps/base/WEB-INF/web.xml
在<web-app>标签内添加:
<distributable/>
完整的web.xml应该类似:
xml
<?xml version="1.0" encoding="UTF-8"?>
<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_4_0.xsd"
version="4.0">
<display-name>www.b.com Base Directory</display-name>
<!-- 启用集群支持 -->
<distributable/>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- 错误页面跳转配置 -->
<error-page>
<error-code>404</error-code>
<location>/error/404.html</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error/500.html</location>
</error-page>
</web-app>
4. 创建集群测试页面
创建一个测试Session复制的JSP页面:
cat > /usr/local/tomcat/apache-tomcat-9.0.111/webapps/base/cluster-test.jsp << 'EOF'
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.*, java.text.*" %>
<!DOCTYPE html>
<html>
<head>
<title>Tomcat集群测试</title>
</head>
<body>
<h1>Tomcat集群测试页面</h1>
<%
// 获取或创建Session属性
String sessionData = (String) session.getAttribute("clusterTest");
if (sessionData == null) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sessionData = "会话创建时间: " + sdf.format(new Date()) + " | 服务器: " + System.getProperty("jboss.node.name", "node1");
session.setAttribute("clusterTest", sessionData);
}
%>
<h2>Session信息:</h2>
<p><strong>Session ID:</strong> <%= session.getId() %></p>
<p><strong>Session数据:</strong> <%= sessionData %></p>
<p><strong>创建时间:</strong> <%= new Date(session.getCreationTime()) %></p>
<p><strong>最后访问:</strong> <%= new Date(session.getLastAccessedTime()) %></p>
<p><strong>服务器信息:</strong> <%= request.getLocalAddr() %>:<%= request.getLocalPort() %></p>
<h2>集群信息:</h2>
<p><strong>JVM Route:</strong> <%= application.getAttribute("org.apache.catalina.JVM_ROUTE") %></p>
<hr>
<form method="post">
<label for="newData">更新Session数据:</label>
<input type="text" id="newData" name="newData" value="测试数据 <%= new java.util.Date() %>">
<input type="submit" value="更新Session">
</form>
<%
if ("POST".equalsIgnoreCase(request.getMethod())) {
String newData = request.getParameter("newData");
if (newData != null && !newData.trim().isEmpty()) {
session.setAttribute("clusterTest", newData + " | 服务器: " + System.getProperty("jboss.node.name", "node1"));
response.sendRedirect("cluster-test.jsp");
}
}
%>
<p><a href="cluster-test.jsp">刷新页面</a> | <a href="index.html">返回首页</a></p>
</body>
</html>
EOF
5. 配置集群相关的防火墙规则
如果将来扩展到多台服务器,需要开放集群通信端口:
# 开放集群通信端口 firewall-cmd --permanent --add-port=4000/tcp firewall-cmd --permanent --add-port=45564/udp firewall-cmd --permanent --add-port=8009/tcp # AJP端口,用于与Apache/Nginx集成 firewall-cmd --reload
6. 创建集群监控脚本
cat > /usr/local/tomcat/apache-tomcat-9.0.111/bin/cluster-monitor.sh << 'EOF'
#!/bin/bash
#
# Tomcat集群监控脚本
#
TOMCAT_HOME="/usr/local/tomcat/apache-tomcat-9.0.111"
LOG_FILE="$TOMCAT_HOME/logs/catalina.out"
echo "=== Tomcat集群监控 ==="
echo "检查时间: $(date)"
echo ""
# 检查Tomcat进程
echo "1. Tomcat进程状态:"
ps -ef | grep tomcat | grep -v grep && echo " - Tomcat正在运行" || echo " - Tomcat未运行"
echo ""
echo "2. 集群端口监听状态:"
netstat -tlnp | grep -E "(:4000|:45564|:8009)" | while read line; do
echo " - $line"
done
echo ""
echo "3. 集群相关日志:"
tail -20 $LOG_FILE | grep -i "cluster\|cluster"
echo ""
echo "4. 系统资源:"
free -h | awk 'NR==1{print " - "$0} NR==2{print " - 内存: "$3" / "$2}'
df -h / | awk 'NR==2{print " - 磁盘: "$3" / "$2" ("$5")"}'
echo ""
echo "集群监控完成"
EOF
chmod +x /usr/local/tomcat/apache-tomcat-9.0.111/bin/cluster-monitor.sh
7. 重启Tomcat并测试集群配置
# 重启Tomcat
/usr/local/tomcat/apache-tomcat-9.0.111/bin/shutdown.sh
/usr/local/tomcat/apache-tomcat-9.0.111/bin/startup.sh
# 等待启动完成
sleep 10
# 检查启动日志中的集群信息
tail -f /usr/local/tomcat/apache-tomcat-9.0.111/logs/catalina.out | grep -i cluster
8. 测试集群功能
从测试机访问集群测试页面:
# 测试集群Session功能
curl http://www.b.com:8080/cluster-test.jsp

或者在浏览器中访问:
http://www.b.com:8080/cluster-test.jsp
9. 验证集群配置
检查集群配置是否生效:
# 运行集群监控脚本
/usr/local/tomcat/apache-tomcat-9.0.111/bin/cluster-monitor.sh
# 检查集群端口是否监听
netstat -tlnp | grep -E "(:4000|:45564)"
# 查看集群相关日志
grep -i "cluster" /usr/local/tomcat/apache-tomcat-9.0.111/logs/catalina.out


1085

被折叠的 条评论
为什么被折叠?



