【运维知识进阶篇】Tomcat集群实战之部署zrlog博客(Tomcat服务安装+静态资源挂载NFS+Nginx负载均衡+HTTPS证书+Redis会话保持)

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
传统型负载均衡 CLB,每月750个小时 15LCU
简介: 【运维知识进阶篇】Tomcat集群实战之部署zrlog博客(Tomcat服务安装+静态资源挂载NFS+Nginx负载均衡+HTTPS证书+Redis会话保持)

本篇文章给大家介绍Tomcat集群实战——部署zrlog博客项目,包含Nginx负载均衡,HTTPS证书,Redis会话保持,在实战中学习,事半功倍!


准备工作

主机名称 公网IP 私网IP
LB01 10.0.0.6 172.16.1.6
Web01   172.16.1.7
Web02   172.16.1.8
NFS   172.16.1.
DB01   172.16.1.51

Web02服务及项目部署

一、安装tomcat

1. #导入jdk的rpm包进行安装
2. [root@Web02 ~]# rpm -ivh jdk-8u181-linux-x64.rpm 
3. 
4. [root@Web01 ~]# scp -rp /soft 10.0.0.8:/
5. [root@Web01 ~]# scp -rp /code/tomcat 10.0.0.8:/code
6. [root@Web01 ~]# scp /usr/lib/systemd/system/tomcat.service 10.0.0.8://usr/lib/systemd/system/tomcat.service
7. 
8. #scp无法传输软连接,需要重新做
9. [root@Web02 soft]# rm -rf tomcat/
10. [root@Web02 soft]# ln -s /soft/apache-tomcat-9.0.73/ /soft/tomcat
11. [root@Web02 soft]# systemctl daemon-reload
12. [root@Web02 soft]# systemctl start tomcat

windows修改hosts文件查看是否可以正常访问

二、将静态资源挂载到NFS

f12审查元素,或者右键复制图片链接地址可以查看图片目录,也就是web存放静态资源的目录

1. [root@NFS ~]# mkdir /data/zrlog
2. [root@NFS ~]# chown -R www.www /data/zrlog/
3. [root@NFS ~]# cat /etc/exports
4. /data/zrlog 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
5. [root@NFS ~]# systemctl restart nfs
6. 
7. [root@Web01 ~]# yum -y install nfs-utils
8. [root@Web01 ~]# showmount -e 172.16.1.31
9. Export list for 172.16.1.31:
10. /data/zrlog     172.16.1.0/24
11. [root@Web01 ~]# mount -t nfs 172.16.1.31:/data/zrlog /code/tomcat/zrlog/ROOT/attached/
12. [root@Web01 ~]# systemctl restart tomcat.service
13. 
14. Web02同样方式挂载

正常上传图片,并且NFS中有显示

三、Nginx负载均衡+HTTPS证书

在Nginx做代理时,Nginx代理后端Nginx头部信息默认丢弃,Nginx代理后端Tomcat 头部信息自动携带 不管前面任何域名解析到负载 始终携带代理文件的头部信息。

1. Tomcat和Nginx都是Web服务器,它们在携带头部信息方面的区别主要有以下几点:
2. 1. Tomcat:Tomcat默认情况下会将所有传入HTTP请求的头部信息都原封不动地转发给后端的应用程序处理。这意味着在使用Tomcat作为Web服务器时,应用程序可以完整地获取到HTTP请求中的所有头部信息。
3. 2. Nginx:与Tomcat不同,Nginx通过配置文件可以控制哪些头部信息被转发给后端的应用程序。在默认情况下,Nginx只会转发一些常见的头部信息,例如Host、User-Agent等。这些头部信息对于大多数应用程序来说已经足够使用。
4. 3. 处理速度:由于Nginx的设计目标是高性能、高并发,因此相比之下,Nginx在处理大量请求时具有更高的效率和更快的速度。而Tomcat则更加注重Java应用程序的功能实现和可靠性。
5. 总的来说,在处理高并发请求和负载均衡方面,Nginx可能更适合;而在业务逻辑处理上,Tomcat可能更具优势。
1. [root@LB01 ~]# cat /etc/nginx/conf.d/proxy_zrlog.conf
2. upstream zrlog {
3.         server 172.16.1.7:8080;
4.         server 172.16.1.8:8080;
5. }
6. 
7. server {
8.         listen 80;
9.         server_name zrlog.koten.org;
10. return 302 https://$server_name$request_uri;
11. }
12. 
13. server {
14.         listen 443 ssl;
15.         server_name zrlog.koten.org;
16.         ssl_certificate   ssl_key/server.crt;
17.         ssl_certificate_key  ssl_key/server.key;
18. location / {
19.                 proxy_pass http://zrlog;
20.                 include proxy_params;
21.         }
22. }
23. [root@LB01 ~]# cat /etc/nginx/proxy_params 
24. proxy_set_header Host $http_host;
25. proxy_http_version 1.1;
26. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
27. 
28. proxy_connect_timeout 30;
29. proxy_send_timeout 60;
30. proxy_read_timeout 60;
31. 
32. proxy_buffering on;
33. proxy_buffer_size 32k;
34. proxy_buffers 4 128k;
35. [root@LB01 ~]# systemctl restart nginx

修改tomcat日志格式,获取http的Header信息

1. [root@Web01 tomcat]# cat /soft/tomcat/conf/server.xml
2. ......
3. <Host name="zrlog.koten.org"  appBase="/code/tomcat/zrlog"
4.             unpackWARs="true" autoDeploy="true">
5. 
6.   <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
7.                prefix="zrlog" suffix=".txt"
8.                pattern="%h %l %u %t &quot;%r&quot; %s %b  %{User-Agent}i %{X-Forwarded-For}i" />    #修改日志格式
9. 
10. </Host>
11. ......
12. [root@Web01 tomcat]# systemctl restart tomcat
13. 
14. Web02操作一致

带证书正常访问

Redis会话保持

会话保持有很多种方式,例如ip_hash,mysql,redis,tomcat自带的cluster session复制(官方建议不超过4个tomcat节点),本知识点不再结合zrlog博客

一、配置虚拟主机,所有节点都需要配置,以web01为例

1. [root@Web01 ~]# cat /soft/tomcat/conf/server.xml
2. ......
3. <!--session.koten.org-->
4. <Host name="session.koten.org"  appBase="/code/to
5. mcat/session"
6.             unpackWARs="true" autoDeploy="true">
7. </Host>
8. ......
9. [root@Web01 ~]# systemctl restart tomcat

二、创建目录及代码文件,所有节点都需要配置,以web01为例

1. [root@Web01 ~]# mkdir -p /code/tomcat/session/ROOT
2. [root@Web01 ~]# cat /code/tomcat/session/ROOT/index.jsp<body>
3.  <%
4.  //HttpSession session = request.getSession(true);
5.  System.out.println(session.getCreationTime());
6.  out.println("<br> Web01 SESSION ID:" + session.getId() + "<br>");    #此处需要修改
7.  out.println("Session created time is :" + session.getCreationTime()
8.  + "<br>");
9.  %>
10. </body>

三、接入负载均衡

1. cat >/etc/nginx/conf.d/proxy_session.conf<<'EOF'
2. upstream session {
3.  server 172.16.1.7:8080;
4.  server 172.16.1.8:8080;
5. }
6. 
7. server {
8.  listen 80;
9.  server_name session.koten.org;
10. 
11.   location / {
12.     proxy_pass http://session;
13.     include proxy_params;
14.   }
15. }
16. EOF
17. 
18. [root@LB01 ~]# systemctl restart nginx

刷新发现session id每次都有变化,无会话保持

四、接入TomcatClusterRedisSessionManager,所有节点都需要配置,以Web01为例

1. #redis服务器端需要安装并开启
2. [root@DB01 ~]# yum -y install redis
3. [root@DB01 ~]# cat /etc/redis.conf |grep ^bind
4. bind 127.0.0.1 172.16.1.51
5. [root@DB01 ~]# systemctl start redis
6. 
7. 
8. #下载session工具包
9. [root@Web01 ~]# wget https://github.com/ran-jit/tomcat-cluster-redis-session-manager/releases/download/4.0/tomcat-cluster-redis-session-manager.zip
10. [root@Web01 ~]# unzip tomcat-cluster-redis-session-manager.zip 
11. [root@Web01 ~]# cp tomcat-cluster-redis-session-manager/lib/* /soft/tomcat/lib/
12. [root@Web01 ~]# cp tomcat-cluster-redis-session-manager/conf/redis-data-cache.properties  /soft/tomcat/conf/
13. 
14. #修改redis服务器IP
15. [root@Web01 ~]# cat /soft/tomcat/conf/redis-data-cache.properties|grep redis.hosts=
16. redis.hosts=172.16.1.51:6379
17. 
18. #添加如下两行至tomcat/conf/context.xml,添加在</Context>上一行,注意位置
19. [root@Web01 ~]# cat /soft/tomcat/conf/context.xml
20. <Valve className="tomcat.request.session.redis.SessionHandlerValve" />
21. <Manager className="tomcat.request.session.redis.SessionManager" />
22. [root@Web01 ~]# systemctl restart tomcat

无论怎么刷新,session id都不会变


我是koten,10年运维经验,持续分享运维干货,感谢大家的阅读和关注!

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
打赏
0
1
1
0
40
分享
相关文章
SpringMVC入门到实战------2、SpringMVC创建实例Hello SpringMVC(maven+tomcat)
这篇文章是SpringMVC框架的入门教程,详细指导了如何在IDEA中使用Maven和Tomcat创建SpringMVC工程,包括添加依赖、配置web.xml、编写控制器、创建配置文件、配置Tomcat服务器以及进行基本的测试,展示了一个简单的Hello SpringMVC示例。
SpringMVC入门到实战------2、SpringMVC创建实例Hello SpringMVC(maven+tomcat)
HTTPS 证书自动化运维:基础知识与重要性
随着互联网发展,HTTPS 成为保护网站和用户数据安全的标准协议。HTTPS 证书(SSL/TLS)验证网站身份并加密通信,分为 DV、OV 和 EV 三种类型,确保数据传输安全。它不仅提高安全性、增强用户信任,还能提升搜索引擎排名。手动管理证书繁琐易错,自动化运维工具如 Let`s Encrypt 和 Certbot 可简化流程,减少错误,提高效率。文章介绍了 HTTPS 证书的基础知识、重要性及自动化运维的概念。
Nginx常用基本配置总结:从入门到实战的全方位指南
Nginx常用基本配置总结:从入门到实战的全方位指南
674 0
HTTPS 证书自动化运维:https证书管理系统- 自动化监控
本文介绍如何设置和查看域名或证书监控。步骤1:根据证书状态选择新增域名或证书监控,线上部署推荐域名监控,未部署选择证书监控。步骤2:查询监控记录详情。步骤3:在详情页查看每日定时检测结果或手动测试。
HTTPS 证书自动化运维:https证书管理系统- 自动化监控
HTTPS 证书自动化运维:https证书管理系统-自动化部署
本指南介绍如何部署Linux服务器节点。首先复制生成的Linux脚本命令,然后将其粘贴到目标服务器上运行。接着刷新页面查看节点记录,并点击“配置证书”选择证书以自动部署。最后,节点部署完成,后续将自动调度,无需人工干预。
HTTPS 证书自动化运维:https证书管理系统-自动化部署
HTTPS 证书自动化运维:https证书管理系统之自动化签发
通过访问【https://www.lingyanspace.com】注册账户,进入证书服务菜单并新增证书。填写域名(单域名、多域名或泛域名),创建订单后添加云解析DNS记录进行质检。确认完成后可下载证书,并支持后续查看、更新和定时更新功能。证书过期前15天自动更新,需配置邮箱接收通知。
HTTPS 证书自动化运维:https证书管理系统之自动化签发
HTTPS 证书自动化运维:展望未来发展趋势
HTTPS证书自动化运维正朝着更智能、高效和安全的方向发展。未来系统将提升自动化程度,减少人工干预,实现自动签发、续订与部署;深度集成多云平台,提供无缝管理体验;增强高级安全功能如加密算法和威胁检测;优化用户界面,降低使用门槛;支持更多操作系统,确保跨平台一致性;引入AI/ML技术,预测需求并自动解决问题;加强标准化与互操作性,促进生态系统协作。同时,系统将持续扩展功能、优化性能、支持国际化,并注重用户反馈,为全球用户提供优质的证书管理服务。
HTTPS 证书自动化运维:HTTPS 证书管理系统之使用指南
本文详细介绍【灵燕空间HTTPS证书管理系统】(https://www.lingyanspace.com)的配置与使用,涵盖注册账户、邮箱配置及证书自动签发、监控和部署的一体化指南。通过页面顶部菜单的【视频教程】和【图文教程】,帮助用户从注册到实际应用全面掌握系统操作。最新迭代后,泛域名证书已包含根域名,无需额外申请多域名证书。
部署tomcat部署实战案例
本文是关于Tomcat部署实战案例的教程,包括通过yum和二进制方式部署Tomcat的详细步骤,以及如何监控Tomcat服务。
264 84
部署tomcat部署实战案例
HTTPS 证书自动化运维:HTTPS 证书管理系统之优势对比
本文详细介绍了一款功能强大的HTTPS证书管理系统,涵盖自动签发、更新、实时监控、部署一体化、自定义加密算法、集中管理和邮箱通知等功能。系统通过简化配置、智能引导、快速响应和多重防护等优势,确保企业和个人用户能高效、安全地管理证书,提升网站和应用的安全性。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等