centos7部署tomcat并进行实验

目录

安装tomcat并进行验证操作

第一步:配置和启动 Tomcat 服务器

1. 进入 Tomcat 目录并检查结构

2. 启动 Tomcat 服务

3. 验证 Tomcat 是否正在运行

4. 在 Tomcat 服务器上本地测试

第二步:从测试机访问 Tomcat

1. 测试网络连通性

2. 测试 Tomcat 服务访问

修改www.b.com网站的首页目录为base

1.进入Tomcat webapps目录:

2.创建base目录结构:

3.创建测试页面

4. 配置Tomcat虚拟主机

现在测试配置是否工作:

1. 重启 Tomcat

2. 在服务器上测试本地访问

​编辑

3. 从测试机测试

错误页面跳转:

1. 创建错误页面目录

2. 创建错误页面文件

3. 修改 web.xml 添加错误页面配置

4. 验证配置

5. 重启Tomcat

6. 测试跳转功能

配置Tomcat支持SSL加密网站

1. 创建证书存储目录

2. 生成自签名SSL证书

3. 配置Tomcat的SSL连接器

4. 配置虚拟主机支持SSL(可选但推荐)

5. 重启Tomcat服务

6. 测试HTTPS访问

在Tomcat服务器上本地测试:

从测试机测试:

配置Tomcat日志

1. 配置详细的访问日志

2. 为默认主机也配置访问日志

3. 配置日志级别和输出

4. 创建日志轮转脚本

5. 配置日志自动轮转(使用logrotate)

6. 创建应用专用日志配置

7. 重启Tomcat并测试日志配置

8. 验证日志配置

配置Tomcat集群

1. 启用集群配置

2. 配置Engine的jvmRoute属性

3. 为应用启用分布式支持

4. 创建集群测试页面

5. 配置集群相关的防火墙规则

6. 创建集群监控脚本

7. 重启Tomcat并测试集群配置

8. 测试集群功能

9. 验证集群配置

安装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 &quot;%r&quot; %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 &quot;%r&quot; %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 &quot;%r&quot; %s %b %D ms &quot;%{User-Agent}i&quot; &quot;%{Referer}i&quot;"
           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 &quot;%r&quot; %s %b %D ms &quot;%{User-Agent}i&quot; &quot;%{Referer}i&quot;"
           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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值