43、Tomcat集群部署项目

一、web01部署

1.安装java环境

# 找项目对应版本的jdk
rpm -ivh jdk-8u181-linux-x64.rpm 

2.下载部署tomcat

[root@web01 soft]# wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.98/bin/apache-tomcat-9.0.98.tar.gz

[root@web01 soft]# tar xf apache-tomcat-9.0.98.tar.gz  -C /soft/

#使用软连接,方便以后升级操作,直接切换链接即可
[root@web01 soft]# ln -s apache-tomcat-9.0.98 tomcat

3.配置tomcat

1)配置文件增加一个server项目Host区块:

vim /soft/tomcat/conf/server.xml

.....
      </Host>
      <!--zrlog的server配置-->
      <Host name="www.zr.com"  appBase="/code/zrlog"
            unpackWARs="true" autoDeploy="true">

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="zrlog_access" suffix=".log"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
    </Engine>
.....

5.下载部署项目zrlog

1) 下载部署war包:

#部署war包到配置文件指定路径,必须名称为ROOT,这里直接mv

[root@web01 zrlog]# mv zrlog-2.2.1-efbe9f9-release  /code/zrlogROOT

2) 配置tomcat以system启动控制

  • 注意如果使用system控制,则无法使用绝对路径控制
  • 同理,如果使用绝对路径启动,那么system无法stop和其他操作,需要先kill掉
# systemctl cat nginx 复制过来修改一下
# 配置system启动脚本

cat >/usr/lib/systemd/system/tomcat.service<<'EOF'
[Unit]
Description=Apache Tomcat Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/soft/tomcat/bin/startup.sh
ExecStop=/soft/tomcat/bin/shutdown.sh
ExecRetart=/soft/tomcat/bin/shutdown.sh && sleep2 && /soft/tomcat/bin/startup.sh
[Install]
WantedBy=multi-user.target
EOF

##### systemctl daemon-reload 使配置文件生效
##### systemctl启动测试

3) 启动tomcat:**

systemctl start tomcat
systemctl enable tomcat
netstat -tupln | grep :8080

6.win系统访问测试测试

1) 解析访问

本机hosts文件劫持解析
10.0.0.7  www.zr.com
访问www.rz.com:8080

2) 需要创建库

由于没有zrlog库,所以需要去数据库服务器创建库
如果没有授权远程登录用户,还需要创建授权

[root@db01 ~]# mysql -uroot -plzy123.com
MariaDB [(none)]> create database zrlog;
MariaDB [(none)]> show databases;

二、web02部署

  • 如果增加web服务器,部署于下面类似

1.安装java环境

# 找项目对应版本的jdk
rpm -ivh jdk-8u181-linux-x64.rpm 

2.下载部署tomcat

# 由于web01已经部署,这里直接拷贝过来即可,增加web服务器也是这么操作

scp -rp 10.0.0.7:/soft  /

3 配置tomcat以system启动控制

  • 注意如果使用system控制,则无法使用绝对路径控制
  • 同理,如果使用绝对路径启动,那么system无法stop和其他操作,需要先kill掉
# systemctl cat nginx 复制过来修改一下
# 配置system启动脚本

cat >/usr/lib/systemd/system/tomcat.service<<'EOF'
[Unit]
Description=Apache Tomcat Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/soft/tomcat/bin/startup.sh
ExecStop=/soft/tomcat/bin/shutdown.sh
ExecRetart=/soft/tomcat/bin/shutdown.sh && sleep2 && /soft/tomcat/bin/startup.sh
[Install]
WantedBy=multi-user.target
EOF

##### systemctl daemon-reload 使配置文件生效
##### systemctl启动测试

4.下载部署项目zrlog

1) 说明:

# 由于之前挂载nfs为code目录

# 如果不是,需要配置共享nfs

# 所以部署web01的和web02共享code目录

# 只要配置文件配置的目录和挂载的目录一致即可

# 包括数据库,是远程连接的,也在web01部署好了

# 拷贝过来的配置远程链接数据库配置文件一样,所以数据库也是共享,无需再次部署

2) 启动tomcat:****

systemctl start tomcat
systemctl enable tomcat
netstat -tupln | grep :8080

5.win系统访问测试测试

本机hosts文件劫持解析
10.0.0.8  www.zr.com
访问www.rz.com:8080

三、配置负载均衡和https

LB01配置nginx:

[root@lb01 conf.d]# cat zr.conf
upstream zr {
     server 172.16.1.7:8080;
     server 172.16.1.8:8080;
     keepalive 16;
}
server {
    listen 443 ssl;
    server_name www.zr.com;
    ssl_certificate   ssl_key/server.crt;
        ssl_certificate_key  ssl_key/server.key;

     # 证书共享,证书缓存5分钟
     ssl_session_cache shared:SSL:1m;
     ssl_session_timeout 5m;

     #自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
     #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
     ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

    location / {
    proxy_pass http://zr;
    include proxy_params;
    proxy_next_upstream error timeout http_500 http_502 http_503 http_504;
    }
}
server {
        listen 80;
        server_name www.zr.com;
        return 302 https://$server_name$request_uri;
}

2.---------------------------------------------------------
# 重启服务,解析访问测试
10.0.0.5 www.zr.com

[root@lb01 conf.d]# systemctl restart nginx


3.---------------------------------------------------------
# 查看日志,是否负载均衡
[root@web01 conf.d]# tail -f /var/log/nginx/access.log
[root@web02 conf.d]# tail -f /var/log/nginx/access.log

四、静态资源共享nfs

1.web01上传图片
#图片的位置
[root@web01 zrlog]# ll ROOT/attached/image/20241223/20241223094001_428.jpeg
-rw-r----- 1 root root 52606 Dec 23 09:40 ROOT/attached/image/20241223/20241223094001_428.jpeg

2.web02访问测试
裂图

3.NFS配置共享zrlog的静态文件目录
[root@nfs ~]# cat /etc/exports
/data/wp 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/zrlog 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

[root@nfs ~]# mkdir /data/zrlog
[root@nfs ~]# grep 666 /etc/passwd
www:x:666:666::/home/www:/sbin/nologin
[root@nfs ~]# chown www.www /data/zrlog/
[root@nfs ~]# ll -d /data/zrlog/
drwxr-xr-x 2 www www 6 Dec 23 09:48 /data/zrlog/

#重启生效
[root@nfs ~]# systemctl restart nfs


4.将图片推送至NFS共享目录 推送image目录到31
[root@web01 zrlog]# scp -r ROOT/attached/image 10.0.0.31:/data/zrlog/

#在NFS服务端递归授权目录权限
[root@nfs ~]# chown -R www.www /data/zrlog/


5.挂载31的/data/zrlog 到 attached
[root@web01 ~]# mount -t nfs 172.16.1.31:/data/zrlog /code/zrlog/ROOT/attached
[root@web01 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 459M     0  459M   0% /dev
tmpfs                    475M     0  475M   0% /dev/shm
tmpfs                    475M   49M  426M  11% /run
tmpfs                    475M     0  475M   0% /sys/fs/cgroup
/dev/sda3                 48G  5.0G   43G  11% /
/dev/sda1                195M  122M   74M  63% /boot
tmpfs                     95M     0   95M   0% /run/user/0
172.16.1.31:/data/zrlog   48G  3.9G   44G   9% /code/zrlog/ROOT/attached




web02挂载NFS
[root@web02 ROOT]# mkdir /code/zrlog/ROOT/attached

[root@web02 ~]# mount -t nfs 172.16.1.31:/data/zrlog /code/zrlog/ROOT/attached
[root@web02 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 459M     0  459M   0% /dev
tmpfs                    475M     0  475M   0% /dev/shm
tmpfs                    475M   49M  426M  11% /run
tmpfs                    475M     0  475M   0% /sys/fs/cgroup
/dev/sda3                 48G  4.7G   44G  10% /
tmpfs                    475M   32K  475M   1% /tmp
/dev/sda1                195M  122M   74M  63% /boot
tmpfs                     95M     0   95M   0% /run/user/0
172.16.1.31:/data/zrlog   48G  3.9G   44G   9% /code/zrlog/ROOT/attached

五、tomcat实现会话保持

1.tomcat自带会话保持

多种会话保持方式:

1.ip_hash会导致会话不均衡

2.mysql速度慢

3.redis推荐

1.官网的推荐的不使用,如果使用则不能超过4个节点
    # 官网是把session推动给其他web,web服务器多了就慢

2.使用第三方插件实现tomcat将会话写入到redis

2. 配置web,取出session

1) 增加server

[root@web01 conf]# vim server.xml
..
      </Host>

      <Host name="session.oldboy.com"  appBase="/code/session"
            unpackWARs="true" autoDeploy="true">

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="session_tomcat" suffix=".log"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
...

2)创建站点取出session

[root@web01 conf]# mkdir /code/session/ROOT
[root@web01 conf]# vim /code/session/ROOT/index.jsp
<body>
        <%
        //HttpSession session = request.getSession(true);
        System.out.println(session.getCreationTime());
        out.println("<br> web01 SESSION ID:" + session.getId() + "<br>");
        out.println("Session created time is :" + session.getCreationTime()
        + "<br>");
        %>
</body>

3)重启服务,访问

[root@web01 conf]# systemctl restart tomcat

win解析访问session.oldboy.com
10.0.0.7 session.oldboy.com

4 )web02

# 同步WEB01的配置
[root@web02 ROOT]# scp 10.0.0.7:/soft/tomcat/conf/server.xml /soft/tomcat/conf/

# 同步/code/session/ROOT/index.jsp
    #这里整个code都共享nfs所以不需要同步

win解析访问session.oldboy.com
10.0.0.8 session.oldboy.com

3.接入负载均衡

[root@lb01 conf.d]# cat session.conf 
upstream se {
     server 172.16.1.7:8080;
     server 172.16.1.8:8080;
     keepalive 16;
}
server {
    listen 443 ssl;
    server_name session.oldboy.com;
    ssl_certificate   ssl_key/server.crt;
        ssl_certificate_key  ssl_key/server.key;

     ssl_session_cache shared:SSL:1m;
     ssl_session_timeout 5m;

     #自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
     #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
     ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

    location / {
    proxy_pass http://se;
    include proxy_params;
    proxy_next_upstream error timeout http_500 http_502 http_503 http_504;
    }
}
server {
        listen 80;
        server_name session.oldboy.com;
        return 302 https://$server_name$request_uri;
}


--------------------------------
hosts解析
10.0.0.5 session.oldboy.com

访问结果session一直是变化的。

4.下载第三方插件配置接入redis

1.下载
[root@web01 ~]# wget https://github.com/ran-jit/tomcat-cluster-redis-session-manager/releases/download/4.0/tomcat-cluster-redis-session-manager.zip
# 具体如何配置查看说明文档https://github.com/ran-jit/tomcat-cluster-redis-session-manager

2.解压
[root@web01 ~]# unzip tomcat-cluster-redis-session-manager.zip

3.拷贝jars到tomcat的/lib目录中
[root@web01 ~]# cp tomcat-cluster-redis-session-manager/lib/* /soft/tomcat/lib/


4.拷贝conf下的redis.properties文件,到tomcat的conf文件
# 默认没有redis的配置,所以cp过去一个
[root@web01 ~]# cp tomcat-cluster-redis-session-manager/conf/redis-data-cache.properties /soft/tomcat/conf/

5.将配置文件中连接redis地址修改为如下地址即可
[root@web01 ~]# vim /soft/tomcat/conf/redis-data-cache.properties
redis.hosts=172.16.1.51:6379

6.添加如下两行至tomcat/conf/context.xml  (添加在</Context> 上一行 )
# 管理session的配置
[root@web01 ~]# vim /soft/tomcat/conf/context.xml
<Valve className="tomcat.request.session.redis.SessionHandlerValve" />
<Manager className="tomcat.request.session.redis.SessionManager" />

7.覆盖同步web02配置rsync --delete

8.重启tomcat检查进程

9.hosts解析访问

访问结果session一直是不变的 10.0.0.5 session.oldboy.com

六、面试题总结

1.讲一讲你的项目背景,你负责做什么,遇到过哪些问题,你是如何解决的?
4.你们公司总访问量多少?日志系统上架了多长时间?大概用了多少服务器?日志存储在什么地方 ?
16.K8S提供了哪些默认的业务负载类型,和deploy平行的负载类型?
17.ds控制器是干什么的?
18.如何自定义K8S资源?
19.如果两个pod网络不通如何排查?
对哪些方面比较拿手
网络了解吗
oss干嘛的(对象存储  http https)
redis了解过吗
keepalived原理(vrrp 发送心跳报文来确定)
写过什么shell脚本
1. 如何查看一个目录下的文件
2. ls -l 命令执行后第一列第一位(-、d、)分别有那些什么意思
3. 怎么添加软连接
4. 如何查看启动的端口
5. 如何查看路由信息
6. 用过抓包工具吗 ?
7. 如何测试一个端口服务不通
8. 查看磁盘的挂载情况
9. 磁盘分区用什么
10. 怎么查看有那些进程
11. 当你查看一个不知道的进程,只知道他的名字,如果被干掉了、你要怎么查他
12. 系统日志在哪里查看
13. 负载很高怎么查看
14. 怎么查看磁盘 io
15. shell 脚本写过那些
16. 一个目录下的日志、你需要定时去清理、删除一个月前的大致会怎么写 shell 脚本,根据类型
17. 说一下 TCP 三次握手 、TCP 四次挥手
18. 常见的一些错误状态码,说一下
19. awk怎么指定分隔符
20. group怎么过滤空行
27. 数据库怎么备份
44. nginx负载均衡有几种模式
现在是离职吗,几月份
找工作倾向于那些城市
找工作除了岗位还看中什么
职业规划
对加班怎么看
上家公司加班多不多
高考多少分
家庭情况
日常运维工作
巡检多久
服务器多少台,分在哪里
巡检完了干什么
平时没工作干什么
走之前会巡检吗
服务器放在哪里
怎么连接到服务器工作的,什么协议
了解过那些存储
容量有多大
数据库数据量多大
200g的数据备份10分钟导出来,传输速度有多少
nginx负载原理
负载用的什么轮巡
运维部门多少人
shell脚本用的多不多
服务进程怎么查看
linux用的什么系统
服务器版还是桌面版
ubt和contos有什么区别
架构是多少 x86
了解过什么国产化的东西
硬件服务器有了解过吗
ipv6了解过没有
网络安全了解过吗
数据报文,抓包有了解过吗
抓包干过什么
客户要求写工作之外日报总结怎么办
22.取Nginx的access.log中访问最多的10个ip,用什么命令
25.日常的运维工作
26.日常遇到的故障,如何解决的
29.现在在职吗,为什么离职
30.平时加班情况怎么样
31.你的职业规划是什么
32.你平时写代码吗
33.了解过哪些阿里云的云产品
34.你学习新技术通过哪些渠道?
35.近期在学习哪些新技术
36.提问面试官环节
是统招本吗,双证又有吗
1.您的职业规划是什么
2.用过python写过脚本吗,有考虑过用python吗
3.用shell写过哪些脚本?
4.之前在公司遇到过哪些印象深刻的故障?怎么处理的?为什么花了1个小时才处理完?
5.上家公司的加班情况?你对加班是怎么看的?
6.上家公司是7×24小时吗?半夜出过错误吗?你是怎么做的?
7.和开发那边有起过冲突吗?你是怎么解决的?
10.取日志文件某一时间段内的内容如何处理?
11.有了解过阿里云上的组件吗?上家公司有用过阿里云吗?
13.上家公司为什么离职?薪资是多少?你的期望薪资是多少?
14.您对公司有什么期望?您希望实现什么目标?
15.请评价一下自己?
nginx健康状态怎么检查,后端服务器怎么检查
nginx的高可用怎么实现
keepalived怎么高可用的
之前挂掉的节点恢复了vip会怎么样
keepalived有什么参数可以配置的

Tomcat集群部署项目

一、web01部署

1.安装java环境

# 找项目对应版本的jdk
rpm -ivh jdk-8u181-linux-x64.rpm 

2.下载部署tomcat

[root@web01 soft]# wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.98/bin/apache-tomcat-9.0.98.tar.gz

[root@web01 soft]# tar xf apache-tomcat-9.0.98.tar.gz  -C /soft/

#使用软连接,方便以后升级操作,直接切换链接即可
[root@web01 soft]# ln -s apache-tomcat-9.0.98 tomcat

3.配置tomcat

1)配置文件增加一个server项目Host区块:

vim /soft/tomcat/conf/server.xml

.....
      </Host>
      <!--zrlog的server配置-->
      <Host name="www.zr.com"  appBase="/code/zrlog"
            unpackWARs="true" autoDeploy="true">

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="zrlog_access" suffix=".log"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
    </Engine>
.....

5.下载部署项目zrlog

1) 下载部署war包:

#部署war包到配置文件指定路径,必须名称为ROOT,这里直接mv

[root@web01 zrlog]# mv zrlog-2.2.1-efbe9f9-release  /code/zrlogROOT

2) 配置tomcat以system启动控制

  • 注意如果使用system控制,则无法使用绝对路径控制
  • 同理,如果使用绝对路径启动,那么system无法stop和其他操作,需要先kill掉
# systemctl cat nginx 复制过来修改一下
# 配置system启动脚本

cat >/usr/lib/systemd/system/tomcat.service<<'EOF'
[Unit]
Description=Apache Tomcat Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/soft/tomcat/bin/startup.sh
ExecStop=/soft/tomcat/bin/shutdown.sh
ExecRetart=/soft/tomcat/bin/shutdown.sh && sleep2 && /soft/tomcat/bin/startup.sh
[Install]
WantedBy=multi-user.target
EOF

##### systemctl daemon-reload 使配置文件生效
##### systemctl启动测试

3) 启动tomcat:**

systemctl start tomcat
systemctl enable tomcat
netstat -tupln | grep :8080

6.win系统访问测试测试

1) 解析访问

本机hosts文件劫持解析
10.0.0.7  www.zr.com
访问www.rz.com:8080
image-20241223084919207

2) 需要创建库

由于没有zrlog库,所以需要去数据库服务器创建库
如果没有授权远程登录用户,还需要创建授权

[root@db01 ~]# mysql -uroot -plzy123.com
MariaDB [(none)]> create database zrlog;
MariaDB [(none)]> show databases;
image-20241223085109949

二、web02部署

  • 如果增加web服务器,部署于下面类似

1.安装java环境

# 找项目对应版本的jdk
rpm -ivh jdk-8u181-linux-x64.rpm 

2.下载部署tomcat

# 由于web01已经部署,这里直接拷贝过来即可,增加web服务器也是这么操作

scp -rp 10.0.0.7:/soft  /

3 配置tomcat以system启动控制

  • 注意如果使用system控制,则无法使用绝对路径控制
  • 同理,如果使用绝对路径启动,那么system无法stop和其他操作,需要先kill掉
# systemctl cat nginx 复制过来修改一下
# 配置system启动脚本

cat >/usr/lib/systemd/system/tomcat.service<<'EOF'
[Unit]
Description=Apache Tomcat Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/soft/tomcat/bin/startup.sh
ExecStop=/soft/tomcat/bin/shutdown.sh
ExecRetart=/soft/tomcat/bin/shutdown.sh && sleep2 && /soft/tomcat/bin/startup.sh
[Install]
WantedBy=multi-user.target
EOF

##### systemctl daemon-reload 使配置文件生效
##### systemctl启动测试

4.下载部署项目zrlog

1) 说明:

# 由于之前挂载nfs为code目录

# 如果不是,需要配置共享nfs

# 所以部署web01的和web02共享code目录

# 只要配置文件配置的目录和挂载的目录一致即可

# 包括数据库,是远程连接的,也在web01部署好了

# 拷贝过来的配置远程链接数据库配置文件一样,所以数据库也是共享,无需再次部署

2) 启动tomcat:****

systemctl start tomcat
systemctl enable tomcat
netstat -tupln | grep :8080

5.win系统访问测试测试

本机hosts文件劫持解析
10.0.0.8  www.zr.com
访问www.rz.com:8080

三、配置负载均衡和https

LB01配置nginx:

[root@lb01 conf.d]# cat zr.conf
upstream zr {
     server 172.16.1.7:8080;
     server 172.16.1.8:8080;
     keepalive 16;
}
server {
    listen 443 ssl;
    server_name www.zr.com;
    ssl_certificate   ssl_key/server.crt;
        ssl_certificate_key  ssl_key/server.key;

     # 证书共享,证书缓存5分钟
     ssl_session_cache shared:SSL:1m;
     ssl_session_timeout 5m;

     #自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
     #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
     ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

    location / {
    proxy_pass http://zr;
    include proxy_params;
    proxy_next_upstream error timeout http_500 http_502 http_503 http_504;
    }
}
server {
        listen 80;
        server_name www.zr.com;
        return 302 https://$server_name$request_uri;
}

2.---------------------------------------------------------
# 重启服务,解析访问测试
10.0.0.5 www.zr.com

[root@lb01 conf.d]# systemctl restart nginx


3.---------------------------------------------------------
# 查看日志,是否负载均衡
[root@web01 conf.d]# tail -f /var/log/nginx/access.log
[root@web02 conf.d]# tail -f /var/log/nginx/access.log

四、静态资源共享nfs

1.web01上传图片
#图片的位置
[root@web01 zrlog]# ll ROOT/attached/image/20241223/20241223094001_428.jpeg
-rw-r----- 1 root root 52606 Dec 23 09:40 ROOT/attached/image/20241223/20241223094001_428.jpeg

2.web02访问测试
裂图

3.NFS配置共享zrlog的静态文件目录
[root@nfs ~]# cat /etc/exports
/data/wp 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/zrlog 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

[root@nfs ~]# mkdir /data/zrlog
[root@nfs ~]# grep 666 /etc/passwd
www:x:666:666::/home/www:/sbin/nologin
[root@nfs ~]# chown www.www /data/zrlog/
[root@nfs ~]# ll -d /data/zrlog/
drwxr-xr-x 2 www www 6 Dec 23 09:48 /data/zrlog/

#重启生效
[root@nfs ~]# systemctl restart nfs


4.将图片推送至NFS共享目录 推送image目录到31
[root@web01 zrlog]# scp -r ROOT/attached/image 10.0.0.31:/data/zrlog/

#在NFS服务端递归授权目录权限
[root@nfs ~]# chown -R www.www /data/zrlog/


5.挂载31的/data/zrlog 到 attached
[root@web01 ~]# mount -t nfs 172.16.1.31:/data/zrlog /code/zrlog/ROOT/attached
[root@web01 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 459M     0  459M   0% /dev
tmpfs                    475M     0  475M   0% /dev/shm
tmpfs                    475M   49M  426M  11% /run
tmpfs                    475M     0  475M   0% /sys/fs/cgroup
/dev/sda3                 48G  5.0G   43G  11% /
/dev/sda1                195M  122M   74M  63% /boot
tmpfs                     95M     0   95M   0% /run/user/0
172.16.1.31:/data/zrlog   48G  3.9G   44G   9% /code/zrlog/ROOT/attached




web02挂载NFS
[root@web02 ROOT]# mkdir /code/zrlog/ROOT/attached

[root@web02 ~]# mount -t nfs 172.16.1.31:/data/zrlog /code/zrlog/ROOT/attached
[root@web02 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 459M     0  459M   0% /dev
tmpfs                    475M     0  475M   0% /dev/shm
tmpfs                    475M   49M  426M  11% /run
tmpfs                    475M     0  475M   0% /sys/fs/cgroup
/dev/sda3                 48G  4.7G   44G  10% /
tmpfs                    475M   32K  475M   1% /tmp
/dev/sda1                195M  122M   74M  63% /boot
tmpfs                     95M     0   95M   0% /run/user/0
172.16.1.31:/data/zrlog   48G  3.9G   44G   9% /code/zrlog/ROOT/attached

五、tomcat实现会话保持

1.tomcat自带会话保持

多种会话保持方式:

1.ip_hash会导致会话不均衡

2.mysql速度慢

3.redis推荐

1.官网的推荐的不使用,如果使用则不能超过4个节点
    # 官网是把session推动给其他web,web服务器多了就慢

2.使用第三方插件实现tomcat将会话写入到redis

2. 配置web,取出session

1) 增加server

[root@web01 conf]# vim server.xml
..
      </Host>

      <Host name="session.oldboy.com"  appBase="/code/session"
            unpackWARs="true" autoDeploy="true">

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="session_tomcat" suffix=".log"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
...

2)创建站点取出session

[root@web01 conf]# mkdir /code/session/ROOT
[root@web01 conf]# vim /code/session/ROOT/index.jsp
<body>
        <%
        //HttpSession session = request.getSession(true);
        System.out.println(session.getCreationTime());
        out.println("<br> web01 SESSION ID:" + session.getId() + "<br>");
        out.println("Session created time is :" + session.getCreationTime()
        + "<br>");
        %>
</body>

3)重启服务,访问

[root@web01 conf]# systemctl restart tomcat

win解析访问session.oldboy.com
10.0.0.7 session.oldboy.com

4 )web02

# 同步WEB01的配置
[root@web02 ROOT]# scp 10.0.0.7:/soft/tomcat/conf/server.xml /soft/tomcat/conf/

# 同步/code/session/ROOT/index.jsp
    #这里整个code都共享nfs所以不需要同步

win解析访问session.oldboy.com
10.0.0.8 session.oldboy.com

3.接入负载均衡

[root@lb01 conf.d]# cat session.conf 
upstream se {
     server 172.16.1.7:8080;
     server 172.16.1.8:8080;
     keepalive 16;
}
server {
    listen 443 ssl;
    server_name session.oldboy.com;
    ssl_certificate   ssl_key/server.crt;
        ssl_certificate_key  ssl_key/server.key;

     ssl_session_cache shared:SSL:1m;
     ssl_session_timeout 5m;

     #自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
     #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
     ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

    location / {
    proxy_pass http://se;
    include proxy_params;
    proxy_next_upstream error timeout http_500 http_502 http_503 http_504;
    }
}
server {
        listen 80;
        server_name session.oldboy.com;
        return 302 https://$server_name$request_uri;
}


--------------------------------
hosts解析
10.0.0.5 session.oldboy.com

访问结果session一直是变化的。

4.下载第三方插件配置接入redis

1.下载
[root@web01 ~]# wget https://github.com/ran-jit/tomcat-cluster-redis-session-manager/releases/download/4.0/tomcat-cluster-redis-session-manager.zip
# 具体如何配置查看说明文档https://github.com/ran-jit/tomcat-cluster-redis-session-manager

2.解压
[root@web01 ~]# unzip tomcat-cluster-redis-session-manager.zip

3.拷贝jars到tomcat的/lib目录中
[root@web01 ~]# cp tomcat-cluster-redis-session-manager/lib/* /soft/tomcat/lib/


4.拷贝conf下的redis.properties文件,到tomcat的conf文件
# 默认没有redis的配置,所以cp过去一个
[root@web01 ~]# cp tomcat-cluster-redis-session-manager/conf/redis-data-cache.properties /soft/tomcat/conf/

5.将配置文件中连接redis地址修改为如下地址即可
[root@web01 ~]# vim /soft/tomcat/conf/redis-data-cache.properties
redis.hosts=172.16.1.51:6379

6.添加如下两行至tomcat/conf/context.xml  (添加在</Context> 上一行 )
# 管理session的配置
[root@web01 ~]# vim /soft/tomcat/conf/context.xml
<Valve className="tomcat.request.session.redis.SessionHandlerValve" />
<Manager className="tomcat.request.session.redis.SessionManager" />

7.覆盖同步web02配置rsync --delete

8.重启tomcat检查进程

9.hosts解析访问

访问结果session一直是不变的 10.0.0.5 session.oldboy.com

六、面试题总结

1.讲一讲你的项目背景,你负责做什么,遇到过哪些问题,你是如何解决的?
4.你们公司总访问量多少?日志系统上架了多长时间?大概用了多少服务器?日志存储在什么地方 ?
16.K8S提供了哪些默认的业务负载类型,和deploy平行的负载类型?
17.ds控制器是干什么的?
18.如何自定义K8S资源?
19.如果两个pod网络不通如何排查?
对哪些方面比较拿手
网络了解吗
oss干嘛的(对象存储  http https)
redis了解过吗
keepalived原理(vrrp 发送心跳报文来确定)
写过什么shell脚本
1. 如何查看一个目录下的文件
2. ls -l 命令执行后第一列第一位(-、d、)分别有那些什么意思
3. 怎么添加软连接
4. 如何查看启动的端口
5. 如何查看路由信息
6. 用过抓包工具吗 ?
7. 如何测试一个端口服务不通
8. 查看磁盘的挂载情况
9. 磁盘分区用什么
10. 怎么查看有那些进程
11. 当你查看一个不知道的进程,只知道他的名字,如果被干掉了、你要怎么查他
12. 系统日志在哪里查看
13. 负载很高怎么查看
14. 怎么查看磁盘 io
15. shell 脚本写过那些
16. 一个目录下的日志、你需要定时去清理、删除一个月前的大致会怎么写 shell 脚本,根据类型
17. 说一下 TCP 三次握手 、TCP 四次挥手
18. 常见的一些错误状态码,说一下
19. awk怎么指定分隔符
20. group怎么过滤空行
27. 数据库怎么备份
44. nginx负载均衡有几种模式
现在是离职吗,几月份
找工作倾向于那些城市
找工作除了岗位还看中什么
职业规划
对加班怎么看
上家公司加班多不多
高考多少分
家庭情况
日常运维工作
巡检多久
服务器多少台,分在哪里
巡检完了干什么
平时没工作干什么
走之前会巡检吗
服务器放在哪里
怎么连接到服务器工作的,什么协议
了解过那些存储
容量有多大
数据库数据量多大
200g的数据备份10分钟导出来,传输速度有多少
nginx负载原理
负载用的什么轮巡
运维部门多少人
shell脚本用的多不多
服务进程怎么查看
linux用的什么系统
服务器版还是桌面版
ubt和contos有什么区别
架构是多少 x86
了解过什么国产化的东西
硬件服务器有了解过吗
ipv6了解过没有
网络安全了解过吗
数据报文,抓包有了解过吗
抓包干过什么
客户要求写工作之外日报总结怎么办
22.取Nginx的access.log中访问最多的10个ip,用什么命令
25.日常的运维工作
26.日常遇到的故障,如何解决的
29.现在在职吗,为什么离职
30.平时加班情况怎么样
31.你的职业规划是什么
32.你平时写代码吗
33.了解过哪些阿里云的云产品
34.你学习新技术通过哪些渠道?
35.近期在学习哪些新技术
36.提问面试官环节
是统招本吗,双证又有吗
1.您的职业规划是什么
2.用过python写过脚本吗,有考虑过用python吗
3.用shell写过哪些脚本?
4.之前在公司遇到过哪些印象深刻的故障?怎么处理的?为什么花了1个小时才处理完?
5.上家公司的加班情况?你对加班是怎么看的?
6.上家公司是7×24小时吗?半夜出过错误吗?你是怎么做的?
7.和开发那边有起过冲突吗?你是怎么解决的?
10.取日志文件某一时间段内的内容如何处理?
11.有了解过阿里云上的组件吗?上家公司有用过阿里云吗?
13.上家公司为什么离职?薪资是多少?你的期望薪资是多少?
14.您对公司有什么期望?您希望实现什么目标?
15.请评价一下自己?
nginx健康状态怎么检查,后端服务器怎么检查
nginx的高可用怎么实现
keepalived怎么高可用的
之前挂掉的节点恢复了vip会怎么样
keepalived有什么参数可以配置的
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇