day047-tomcat补充与动静分离集群

发布于:2025-07-09 ⋅ 阅读:(15) ⋅ 点赞:(0)

0. 老男孩思想

  • 男生追求女生是为了自己的幸福;而女生接受男生的追求也是为了自己的幸福。 —老男孩

在这里插入图片描述

  • 交往之间,要有需求的满足,利益的往来
  • 单方的付出最终只是感动自己,消耗自身精力

1. tomcat默认站点根目录

  • tomcat的默认站点根目录是:tomcat/webapps/ROOT
  • 通常存放默认页面

2. tomcat的配置文件

在这里插入图片描述

  • tomcat配置文件路径:tomcat/conf/server.xml
  • 标签:
    • Host:表示一个站点;appBase:表示站点目录;unpackWARs:自动解压war包
    • Valve:配置tomcat的日志格式
符号 说明
%h 客户端ip
%t 访问时间
%r 请求头的起始行(请求方法、URI、HTTP版本)
%s 状态码
%b 响应数据的字节数
%l 远程用户标识(几乎总是 -)
%{Referer}i 从哪里跳转来的(用户如何访问网站)
%{User-Agent}i 客户端类型,浏览器标识
%{X-Forwarded-For}i XFF头记录
  • 修改日志的记录格式:
  • ":表示双引号

在这里插入图片描述

# 引号要写成\"
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access" suffix=".log"
                pattern="%h %l %u %t "%r" %s %b "%{Referer}i""%{User-Agent}i""%{X-Forwarded-For}i"" />

3. tomcat集群模式(动静分离)

  • 静态数据与动态数据
特征 静态数据 动态数据
定义 内容固定不变的文件 根据请求实时生成的内容
常见类型 html/js/css 用户上传的图片、评论等
处理方式 直接由nginx返回数据 经过php/tomcat处理再返回
存储位置 本地磁盘/NFS共享存储 数据库
示例场景 网站logo、网站框架等 用户的信息、用户头像等

3.1 集群架构图

在这里插入图片描述

3.2 配置数据库

  • 服务器:db01
  • 服务:mariadb
  • zrlog博客需要使用数据库;
    • 创建新数据库:zrlog,创建用户:zrlog,并设置远程登录权限
create database zrlog;
grant all on zrlog.* to 'zrlog'@'172.16.1.%' identify by '1';

3.3 配置NFS服务

  • 服务器:nfs01
  • 服务:NFS
# 添加共享目录
[root@nfs01 ~]# cat /etc/exports
# nfs服务配置文件
# tomcat集群,存储动态数据
/nfs/backup/zrlog 172.16.1.0/24(rw,all_squash)
# 共享目录 所属用户 nobody:nobody rw
# 服务允许网段(本地局域网)

# 创建目录,修改权限
[root@nfs01 ~]# mkdir -p /nfs/backup/zrlog
[root@nfs01 ~]# ll -d /nfs/backup/zrlog
drwxr-xr-x 2 root root 6  74 08:26 /nfs/backup/zrlog
[root@nfs01 ~]# chown -R nobody:nobody /nfs/backup/zrlog
[root@nfs01 ~]# ll -d /nfs/backup/zrlog
drwxr-xr-x 2 nobody nobody 6  74 08:26 /nfs/backup/zrlog
[root@nfs01 ~]# rpcinfo -p |grep nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049  nfs_acl
[root@nfs01 ~]# systemctl reload nfs
[root@nfs01 ~]# showmount -e
Export list for nfs01:
/nfs/backup/zrlog 172.16.1.0/24

3.4 配置web服务器-动态数据

  • 服务器:web03
  • 服务:nginx、tomcat、zrlog

3.4.1 nginx配置文件

[root@web03 /etc/nginx/conf.d]# cat zrlog.oldboy.cn.conf 
server {
	listen 80;
	server_name zrlog.oldboy.cn;
	access_log /var/log/nginx/zrlog.oldboy.cn-access.log main;
	error_log /var/log/nginx/zrlog.oldboy.cn-error.log notice;

	location / {
		proxy_pass http://127.0.0.1:8080;
		proxy_set_header Host $http_host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Real-Ip $remote_addr;
	}
}

3.4.2 tomcat配置

  • 上传zrlog压缩包;zrlog-2.2.1-efbe9f9-release.war 链接: https://pan.baidu.com/s/1TtHWht1shLmTNinqF19CIg?pwd=v5p5 提取码: v5p5

在这里插入图片描述

  • 挂载nfs服务
[root@web03 /app/tools/tomcat/webapps/ROOT/attached]# mkdir -p /backup/assets
[root@web03 /app/tools/tomcat/webapps/ROOT/attached]# mv ./* /backup/assets/
[root@web03 /app/tools/tomcat/webapps/ROOT/attached]# ll
总用量 0
[root@web03 /app/tools/tomcat/webapps/ROOT/attached]# showmount -e nfs01 
Export list for nfs01:
/nfs/backup/zrlog 172.16.1.0/24
[root@web03 /app/tools/tomcat/webapps/ROOT/attached]# mount -t nfs nfs01:/nfs/backup/zrlog ./
[root@web03 /app/tools/tomcat/webapps/ROOT/attached]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 962M     0  962M    0% /dev
tmpfs                    979M     0  979M    0% /dev/shm
tmpfs                    979M  9.0M  970M    1% /run
tmpfs                    979M     0  979M    0% /sys/fs/cgroup
/dev/mapper/klas-root     77G  4.5G   73G    6% /
/dev/sda1                2.0G  178M  1.9G    9% /boot
tmpfs                    196M     0  196M    0% /run/user/0
nfs01:/nfs/backup/zrlog   77G  4.1G   73G    6% /app/tools/apache-tomcat-9.0.106/webapps/ROOT/attached
[root@web03 /app/tools/tomcat/webapps/ROOT/assets]# mv /backup/assets/* ./

3.4.3 测试

  • 配置hosts文件

在这里插入图片描述

  • 浏览器访问

在这里插入图片描述

3.5 配置web服务器-静态数据

  • 服务器:web02
  • 服务:nginx+zrlog

3.5.1 nginx配置文件

[root@web02 /etc/nginx/conf.d]# cat zrlog.oldboy.cn.conf
server {
	listen 80;
	server_name zrlog.oldboy.cn;
	access_log /var/log/nginx/zrlog.oldboy.cn-access.log main;
	error_log /var/log/nginx/zrlog.oldboy.cn-error.log notice;
	root /app/code/zrlog;

	location \ {
		index index.html;
	}
}

3.5.2 复制zrlog文件

[root@web02 /app/code/zrlog]# scp -rp web03:/app/tools/tomcat/webapps/ROOT/* ./

3.6 配置负载均衡服务

  • 服务器:lb01/lb02
  • 服务:nginx负载均衡、keepalived

3.6.1 负载均衡配置文件

[root@lb01 /etc/nginx/conf.d]# cat zrlog.oldboy.cn.conf 
upstream zrlog_static {
#	server web01:80;
	server 10.0.0.8:80;
}
upstream zrlog_dynamic {
	server 10.0.0.9:80;
#	server web04:80;
       	# 一致性hash
	hash $request_uri consistent; 
}
server {
	listen 80;
	server_name zrlog.oldboy.cn;
	access_log /var/log/nginx/zrlog.oldboy.cn-access.log main;
	error_log /var/log/nginx/zrlog.oldboy.cn-error.log notice;

	location ~* \.(html|js|css)$ {
		proxy_pass http://zrlog_static;
		proxy_set_header Host $http_host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Real-Ip $remote_addr;
	}
	location / {
		proxy_pass http://zrlog_dynamic;
		proxy_set_header Host $http_host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Real-Ip $remote_addr;
	}
}

3.6.2 单台负载均衡测试

  • 修改hosts解析

在这里插入图片描述

  • 浏览器访问

在这里插入图片描述

3.6.3 配置lb02

  • scp复制即可
[root@lb02 /etc/nginx/conf.d]# scp lb01:$PWD/zr* ./

3.7 启动keepalived监控

  • lb01:
[root@lb01 /app/code/blog]# systemctl start keepalived.service 
[root@lb01 /app/code/blog]# hostname -I
10.0.0.5 10.0.0.3 172.16.1.5 
  • lb02:
[root@lb02 /etc/nginx/conf.d]# systemctl start keepalived.service 
[root@lb02 /etc/nginx/conf.d]# hostname -I
10.0.0.6 172.16.1.6 

3.7.1 修改hosts解析

在这里插入图片描述

3.7.2 浏览器访问测试

在这里插入图片描述

在这里插入图片描述

3.7.3 抓包查看

在这里插入图片描述

在这里插入图片描述

4. 思维导图

https://kdocs.cn/join/gpuxq6r?f=101\r\n邀请你加入共享群「老男孩教育Linux运维99期-孙克旭」一起进行文档协作