LAMP网站架构---(三)Tomcat、memcache交互存储

news/2024/5/17 6:41:22/文章来源:https://blog.csdn.net/s191946202/article/details/120096697

Tomcat

Tomcat是Apache下的一个核心子项目,是使用量较大的免费的JAVA服务器。主要处理的是JSP页面和Servlet文件。Tomcat常常与Apache整合起来使用,Apache处理静态页面,比如Html页面,而Tomcat负责编译处理JSP页面与Servlet。在静态页面处理能力上,Tomcat不如Apache。由于Tomcat是开源免费、功能强大易用的,很多JAVA的初学者都喜欢用它。当然,也有不少中小企业用其与Apache整合做Web服务器。熟练掌握Tomcat的使用是非常必要的。可以这么说,熟练安装配置Tomcat是软件测试工程师的必备技能。

1. Tomcat的部署安装

server2:

wget http://172.25.28.250/pub/docs/lamp/apache-tomcat-7.0.37.tar.gz
wget  http://172.25.28.250/pub/docs/lamp/jdk-8u121-linux-x64.rpm
wget http://172.25.28.250/pub/docs/lamp/test.jsp
tar zxf apache-tomcat-7.0.37.tar.gz
rpm -ivh jdk-8u121-linux-x64.rpm
mv apache-tomcat-7.0.37 /usr/local/
ln -s /usr/local/apache-tomcat-7.0.37/ /usr/local/tomcat
mv  test.jsp /usr/local/tomcat/webapps/ROOT/
ln -s /usr/local/tomcat/bin/startup.sh /usr/local/sbin/		开启全局命令
ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/sbin/	开启全局命令
startup.sh
netstat -anltp	查看8080端口是否开启
http://172.25.28.2:8080	宿主机浏览器测试是否开启成功

二、负载均衡与反向代理

在server1中设定反向代理,则可以通过server1访问到server2主机的tomcat。

vim /usr/local/nginx/conf/nginx.conflocation ~ \.jsp$ {proxy_pass   http://172.25.28.2:8080;}
nginx -s reload

测试:

当在真机浏览器进行访问时,只能访问到静态的tomcat页面。
静态数据由nginx支持,所以通过server1访问tomcat打不开图形在这里插入图片描述在浏览器中进行测试,添加用户和密码。可以在日志中查看到tomcat的记录。
在这里插入图片描述

如果将server2主机中的tomcat服务停掉,则不能通过server1访问。
server2:

shutdown.sh

在这里插入图片描述此时可以在server2主机日志中看到新建的用户和密码。

cat /usr/local/tomcat/logs/catalina.out 

在这里插入图片描述将tomcat复制到server3主机中,并解压,开启服务。
server2:

scp -r /usr/local/tomcat/ server3:/usr/local/
scp jdk-8u121-linux-x64.rpm server3:

server3:

rpm -ivh jdk-8u121-linux-x64.rpm
/usr/local/tomcat/bin/startup.sh 
http://172.25.28.3:8080	宿主机浏览器测试是否开启t成功

在这里插入图片描述
在server1主机nginx配置文件中设定负载均衡与反向代理,重启服务。

	http {upstream tom {#ip_hash;#sticky;server  172.25.28.2:80 weight=2;server  172.25.28.3:80;server  172.25.28.1 backup;}upstream tomcat {sticky;server  172.25.28.2:8080;server  172.25.28.3:8080;}location ~ \.jsp$ {proxy_pass   http://tomcat;}
nginx -s reload

测试:
在这里插入图片描述关闭server2的服务
server2:

shutdown.sh

此时用户并不知道server2关闭,nginx将自动调度server3主机进行信息存储。此时服务器为server3,因为server2与server3信息不共享,因此信息消失。
在这里插入图片描述

三、tomcat结合memcache交互存储

tomcat本身存储所有的信息,memcache只是为了session共享,是tomcat的额外存储。

nginx调用其中一台主机的tomcat,并将信息交叉存储在另一台主机的memcache中,即就是,tomcat1将信息存在memcache2中。

如果tomcat1不能使用,nginx则自动调度tomcat2,此时将信息存储在本机memcache2中,信息此时是完整的。如果tomcat1恢复,则重新调度tomcat1,将信息继续存储在memcache2中,信息依旧完整。

如果memcache2不能使用,tomcat1将把信息存放在memcache1中,此时信息仍然完整,因为,tomcat1本身将所有的信息存储在本机memory中,memcache只是为了额外存储。

这样,无论什么情况,都最大限度的保证了数据的完整性,且信息同步共享。

在这里插入图片描述分别在server2和server3中安装并启用memcache。
server2:

yum install -y memcached
systemctl start memcached

server3:

yum install -y memcached
systemctl start memcached

在server2主机中对tomcat的配置文件进行编辑,设定交叉存储,将自身memcache设为n1,server3主机的memcache设为n2,正常运行时将信息存放在n2,不能正常运行时,将信息存储在n1,即自身memcache。
server2:

vim /usr/local/tomcat/conf/context.xml <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"memcachedNodes="n1:172.25.28.2:11211,n2:172.25.28.3:11211"failoverNodes="n1"requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/>
cd /usr/local/tomcat/lib/
scp 172.25.28.250:/var/www/html/pub/docs/lamp/jar/* .
rm -rf memcached-session-manager-tc6-1.6.3.jar ##版本需对应,这个不对应
startup.sh 

此时先配置server3的tomcat服务,编辑配置文件,设定交叉存储,正常运行时将信息存放在n1,不能正常运行时,将信息存储在n2,即自身memcache。
在真机浏览器里进行测试,此时tomcat2将信息存放在memcache3,即n2。
server3:

vim /usr/local/tomcat/conf/context.xml <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"memcachedNodes="n1:172.25.28.2:11211,n2:172.25.28.3:11211"failoverNodes="n2"requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/>
cd /usr/local/tomcat/lib/
scp 172.25.28.250:/var/www/html/pub/docs/lamp/jar/* .
rm -rf memcached-session-manager-tc6-1.6.3.jar ##版本需对应,这个不对应
startup.sh 

此时在server3可以看到记录,但server2不能看到。
在这里插入图片描述

server3:

yum install -y telnet		
telnet  localhost 11211
get  885BFF511B3427287137D95229FAFECD-n2	可以看到用户建立记录
01{����{����#885BFF511B3427287137D95229FAFECD-n2user1123

server2

yum install -y telnet		
telnet  localhost 11211
get  885BFF511B3427287137D95229FAFECD-n2
为空

关闭server2服务,tomcat2挂掉,由tomcat3接管,新建用户后,将信息存放在memcache2,即n1,因此可以在server2中看到新建的用户。
server2:

shutdown.sh 

在这里插入图片描述server2:

telnet localhost 11211
get 87FC0FF0BCC78842DC9DA23957FC33CB-n1
W{��]�{�޽01{��FF0BC9DA23957FC33CB-n1ssss1111zzz333

开启server2服务,关闭server3服务,tomcat2重新接管服务,在浏览器新建新用户,信息存放在memcache2,在server2就可以看到用户记录。

server2:
telnet localhost 11211–>get xxx-n1 ##可以看到用户建立记录user5,user6

实验完成,重新开启所有服务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_903823.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LAMP网站架构---(四)LVS+Keepalived高可用负载均衡

基本信息 简介&#xff1a; LVS是Linux Virtual Server的简写&#xff0c;意即Linux虚拟服务器&#xff0c;是一个虚拟的服务器集群系统&#xff1b;本项目在1998年5月由章文嵩博士成立&#xff0c;是中国国内最早出现的自由软件项目之一 使用集群技术和Linux操作系统实现一…

LAMP网站架构---(五)HAProxy+Pacemaker高可用负载均衡

基本信息 HAProxy是一个使用C语言编写的自由及开放源代码软件&#xff0c;其提供高可用性、负载均衡&#xff0c;以及基于TCP和HTTP的应用程序代理 HAProxy特别适用于那些负载特大的web站点&#xff0c;这些站点通常又需要会话保持或七层处理 HAProxy运行在当前的硬件上&…

javaweb项目 基于jsp+servlet的 个人博客网站

源代码和获取更多信息 >源代码MyBlog MyBlog a personal blog site based on Jsp/Servlet - 基于jsp/servlet的个人博客网站 introduction - 简介 java web博客项目&#xff0c;实现mvc模式&#xff0c;没有使用到框架&#xff0c;实现了首页预览&#xff0c;文章发布&a…

网络另类生意闷声挣钱 一人经营几十万个网站

对于自己的“另类生意”&#xff0c;许扬有充分的自信&#xff0c;“我就是把整个业务模式都公开&#xff0c;别人也很难复制&#xff0c;太难了”。 本报记者 徐胤 摄 创业篇 视频网站、交友网站、行业网站&#xff0c;正当数以万计的网络掘金者们在这些热门业务中争得头破血流…

网站测试步骤

网站测试需分以下五个阶段进行才能提交客户&#xff0c;所有测试均提供测试报告&#xff1a; a.功能测试  b.性能测试  c.可用性测试  d.兼容性测试  e.安全测试 功能测试&#xff1a; 1、链接测试 链接是Web应用系统的一个主要特征&#xff0c;它是在页面之间切换和指…

给自己的网站添加HTTPS / 优化 / 续约

写在前面 这里面我主要是自己独立的服务器添加HTTPS支持&#xff0c;关于对GitHub个人站点添加的以后再写。我的笔记和操作使用的是免费的域名和免费的HTTPS证书&#xff0c;但是操作对于所有的来说都是一样的。证书基于 TrustAsia&#xff0c; 别的都差不多的。VPS 上用的LNM…

使用IntelliJ IDEA开发SpringMVC网站(三)数据库配置

注&#xff1a;在阅读本文前&#xff0c;请先阅读&#xff1a; 使用IntelliJ IDEA开发SpringMVC网站&#xff08;一&#xff09;开发环境 使用IntelliJ IDEA开发SpringMVC网站&#xff08;二&#xff09;框架配置 访问GitHub下载最新源码&#xff1a;https://github.com/gauss…

大型网站应用之海量数据和高并发解决方案总结一二

一、网站应用背景 开发一个网站的应用程序&#xff0c;当用户规模比较小的时候&#xff0c;使用简单的&#xff1a;一台应用服务器一台数据库服务器一台文件服务器&#xff0c;这样的话完全可以解决一部分问题&#xff0c;也可以通过堆硬件的方式来提高网站应用的访问性能&…

Yupoo! 的网站技术架构

作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.dbanotes.net/arch/yupoo_arch.html 又有机会爆料国内 Web 2.0 网站的架构了。这次是 Yupoo! 。非正式的采访了一下 Yupoo!(又拍网) 的创建人之一的 阿华&#xff08;沈志…

.NET 发布网站步骤

本文章分为三个部分: web网站发布、IIS6 安装方法、ASP.NET v4.0 安装方法 一、web网站发布 1.打开 Visual Studio 2013 编译环境 2.在其解决方案上右击弹出重新生成解决方案,以查看是否有错误 3.如果项目没有错误右击WebUI层发布

新概念绿色上网工具,向网站病毒say no

Dear All: 近來很多網站都含有病毒或木馬程式,而上網者多數都是用超級用戶或power user的權限上網,中招後惡意程序會更改windows系統,或設置一些木馬程序.用戶電腦的資料完全暴露,而且還要忍受廣告困擾,雖然裝有防毒軟件,但防毒軟件也不是萬能,特別是木馬程序,經常變化.所以用戶…

PHP——网站构成即LAMP基础知识

网站的构成&#xff1a; 客户端IE/FireFox/Safari等多种浏览器 超文本标记语言HTML 层叠样式表CSS 客户端脚本编程语言JavaScript/VBScript/Applet等中的一种 Web服务器Apache/ Nginx/TomCat/IIS等中的一种 服务器端编程语言PHP/JSP/ASP等中的一种 数据库管理系统MySQL…

网站架构的伸缩性设计

网站开发初期&#xff0c;我们习惯性把所有代码都写到一个项目中。 前台、后台、缓存、数据库、静态资源... 等等。 网站系统物理分离 慢慢的系统会原来越大&#xff0c;很显然需要面对大量用户的高并发访问和存储海量数据。 很多用户的请求&#xff0c;不可能在一台服务器上…

以电商网站为例,谈大型分布式架构设计与优化

本文大纲&#xff1a; 目录 一、使用电商案例的原因 二、电商网站需求 三、网站初级架构 四、系统容量预估 五、网站架构分析 六.网站架构优化 本文主题为电商网站架构案例&#xff0c;将介绍如何从电商网站的需求&#xff0c;到单机架构&#xff0c;逐步演变为常用的、…

使用cloudflare+wzfou为自己的网站配置CDN加速

本文同步于个人博客 &#xff1a; 蝴蝶飞不过沧海 | Blog 本文链接 泛播 Cloudflare 挖站否 Wzfou 为什么用到挖站否?单独泛播不就可以作cdn加速吗? 众所周知泛播&#xff08;cloudflare&#xff09;国外知名免费cdn服务商无需网站备案 但有个缺点就是单独使用泛播&…

企业网站建设需要做哪些前期准备工作?

随着互联网的发展&#xff0c;制作官方网站已经成了众多企业的需求。定制企业网站有助于提升企业形象&#xff0c;增加品牌曝光度&#xff0c;配合网络营销&#xff0c;可以给企业带来更多的业务。很多企业选择了外包给专业的开发公司来定制自己的网站&#xff0c;但并不是说所…

程序员应该熟知的网站TIOBE

TIOBE TIOBE 排行榜是根据互联网上有经验的程序员、课程和第三方厂商的数量&#xff0c;并使用搜索引擎&#xff08;如Google、Bing、Yahoo!&#xff09;以及Wikipedia、Amazon、YouTube统计出排名数据&#xff0c;只是反映某个编程语言的热门程度&#xff0c;并不能说明一门编…

使用Chrome浏览器查看淘宝的IPhone版网站

用IPhone手机访问http://m.taobao.com &#xff0c;淘宝的设计已经达到了和APP相媲美的地步。多次想查看其源码学习&#xff0c;单无奈用PC浏览器访问该网址&#xff0c;出现的是一个比较简化的wap2.0版本的。经过若干的夜晚的冥思苦想&#xff0c;终于想出了解决方案。 1.IPho…

Springboot+Vue开发旅游网站

项目简介 所需技术栈&#xff1a; 后端技术栈&#xff1a;springboot mybatis 前后端分离&#xff1a;axios、json 前端技术栈、技术架构&#xff1a;Vue、node.js 前置知识&#xff1a; 了解 Vue 组件之前的知识 对 springboot mybatis 较熟悉 开发流程&#xff1a; 需求…

spring boot酷炫小说网站 包括 PC网站端 和 移动端可做毕设

spring bootspring mvcspring整合开发微信小程序&#xff08;含简单服务端&#xff09; 项目描述: spring bootspring mvcspring酷炫小说网站&#xff0c;然后提供给微信小程序做显示 运行环境: jdk8IntelliJ IDEAmaven 项目技术: spring bootspring mvcspring 数据库文件:…