LAMP架构:tomcat结合nginx

一、tomcat简介及安装

1.tomcat介绍

tomcat详细介绍
Tomcat介绍

   Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。(Tomcat 不太适合高并发,解决方法,增加后端数量)

   tomcat 启动前需要配置JDK环境变量,如果没有配置JDK的环境变量,那么tomcat启动的时候就会报错,也就是无法启动。

   JDK 是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

2.nginx结合tomcat

Tomcat和Nginx的区别:

   tomcat一般做动态解析才会用得到,支持jsp的解析,需要配置JDK支持。

   nginx,则一般是做静态,本身不具备动态解析功能,需要配置其他插件或通过其他软件协同才具备动态功能,比如php,tomcat,或者proxypass到win2008的iis服务器做ASP的动态链接等,但nginx在静态上的功能非常强大,也可做访问控制,而且可以做成各种协议负载服务器。

动态静态资源分离:

   之前开发web方面的程序时候我们习惯将html、css等资源文件也放置于Tomcat中,用户访问后tomcat需要将请求的这些静态资源文件一并返回给用户。再者如果有多台同业务逻辑的tomcat服务器的话,同样的资源还需要在每个服务器上放一份,同时也增加了tomcat服务器的网络IO

   如果我们只将JSP之类的请求交给tomcat,在代理服务器上存放静态资源,当用户的请求非动态资源的时候,我们完全可以将代理服务器的静态资源直接返回给用户,而不去增大Tomcat的压力,tomcat只需要负责逻辑处理和动态资源的加载就可以了

   同时,Tomcat的高并发性能很弱,所以在处理静态请求的时候,我们就抛给Nginx处理,而Tomcat专门处理动态请求。

Nginx和Tomcat结合方式

   1. 将所有静态页面交给nginx动态请求交给后端tomcat处理

   2. 将所有请求交给后端tomcat服务器处理,只利用Nginx自身的负载均衡功能进行多台tomcat服务器调度流。

3.tomcat 结合Nginx

为了实现tomcat集群之间的session同步:利用memcached实现(MSM工具)。memcached存储session,并把多个tomcat的session集中管理,前端在利用nginx负载均衡和动静态资源分离,在兼顾系统水平扩展的同时又能保证较高的性能。即通过MSM工具把Tomcat的Session序列化后保存到Memcached里面,从而实现Session共享。

MSM介绍:
  MSM是一个高可用的Tomcat Session共享解决方案,除了可以从本机内存快速读取Session信息(仅针对黏性Session)外,还可使用Memcached存取Session,以实现高可用。
传统tomcat集群,会话复制随着结点数增多,扩展性成为瓶颈。MSM使用memcached完成统一管理tomcat会话,避免tomcat结点间过多会话复制。

  MSM利用Value(Tomcat 阀)对Request进行跟踪。Request请求到来时,从memcached加载session,Request请求结束时,将tomcat session更新至memcached,以达到session共享之目的, 支持sticky和non-sticky模式:

  sticky : 会话粘连模式(黏性session)。客户端在一台tomcat实例上完成登录后,以后的请求均会根据IP直接绑定到该tomcat实例。

  no-sticky:会话非粘连模式(非粘性session)。客户端的请求是随机分发,多台tomcat实例均会收到请求

下面给出一个黏性session模式的设置示例,此实例中安装了2个tomcat以及2个memcached。

  交叉存储:Tomcat-1(t1)的首要选择是把session存储在memcached-2 (m2)上(m2是t1的一个普通节点),而m2是运行在另外的一台机器上。只有当m2不可用(宕机或无法访问)时,t1才会把session存储到memcached-1(m1,m1是t1的故障转移节点)上。使用这种配置,即使机器1宕机了session也不会丢失。具体如下图所示:
在这里插入图片描述

4.tomcat和jdk软件下载

server5开启原生nginx
在这里插入图片描述关闭server6和server7的apache
在这里插入图片描述在这里插入图片描述server6上安装jdk和tomcat并启动

在这里插入图片描述
用负载均衡的方式用nginx结合tomcat
在这里插入图片描述
启动tomcat
在这里插入图片描述
server7上安装jdk和tomcat并启动
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、修改server5的nginx配置文件

在这里插入图片描述
在这里插入图片描述

三、客户端访问测试

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述复制jsp文件到server6和server7下的tomcat的默认发布目录下
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

四、nginx+tomcat+memcached建立cession共享

交叉式存储框图
在做项目时存储都是另外算,因为存储很重要,而且加上存储后会变得很复杂。除了交叉存储方案,还可以用商用的共享存储,也就是raid存储阵列,自带高可用,冗余机制,但是成本太高。

  MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字符串、对象等)所使用的key-value存储,数据可以来自数据库调用、API调用,或者页面渲染的结果。MemCache设计理念就是小而强大,它简单的设计促进了快速部署、易于开发并解决面对大规模的的许多难题,而所开放的API使得MemCache能用于Java、C/C++/C#、Perl、Python、PHP、Ruby等大部分流行的程序语言。
Memcache官方网站:Memcache官网


核心优化概述

  什么是优化:以更小的资源支持更大负载网站的运行,以小博大。

  思路:尽量减少用户等待时间,节省系统资源开销,节省带宽使用。

  优化的三方面:Memcache内存缓存技术、静态化技术、mysql优化

在这里插入图片描述>tomcat的cession信息除了在memcache会存储,本机的内存中也有一份存储信息。memcaceh只是临时存储,没有持久化,只是将tomcat的cession信息临时存一份到memcache,以便于tomcat出现故障时,另一台tomcat从中获取信息。使用tomcat的session管理器,默认将sesion信息交叉存储,当出现故障时可以存储在本地的memcache,这两个memcache的地址都需要告知tomcat。交叉存储的好处,是任何一个业务单点出现故障,都可以自动高可用自动冗余,及时整个节点down掉也不影响,除非两个tomcat都坏掉。memcache本身就是临时存储,没有持久化,把tomcat的session信息临时存一份进来,以便于其中一个tomcat故障时,另一个tomcat可以从中获取信息。

关闭server6的tomcat,并修改配置文件信息
在这里插入图片描述server6主机上设置

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.254.16:11211,n2:172.25.254.17:11211"
failoverNodes="n1"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
#这里调用的是java的类
/>

在这里插入图片描述在这里插入图片描述因为上面的配置文件调用了java的类,所以复制jar包(java的压缩包)到tomcat的lib库目录下

在这里插入图片描述tc6是针对tomcat的6版本,memecache-session-manager(session管理器)是tomcat的java类可以直接调用,简称MSM,可以把session数据存储到memcahe
在这里插入图片描述安装memcached,并启动
在这里插入图片描述

在这里插入图片描述server7主机上进行相设置

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
启动server6的tomcat,查看日志信息

在这里插入图片描述在这里插入图片描述启动server7的tomcat,查看日志信息

在这里插入图片描述
在这里插入图片描述测试:

server2和server3通过tomcat+memcache+MSM自己解决了高可用和sesion共享,但并没有用共享存储,是策略解决的,共享存储会提高成本,所有的session信息都是存储在tomcat内存上,memcache只是临时存储,没有持久化,down掉就没了
在这里插入图片描述安装telnet,查看memcache
telnet命令使用详解
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
模拟故障:关闭server7的tomcat

在这里插入图片描述在这里插入图片描述在这里插入图片描述
启动server7的tomcat,关闭server6的memcache进行测试
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述在这里插入图片描述关闭server6的tomcat进行测试

在这里插入图片描述在这里插入图片描述现在tomcat的memcahe都在一个节点上,该节点如果down了,会出问题,因为现在不是交叉存储的,交叉存储时,整个节点down掉没有问题
恢复交叉存储

启动server6的memcache
在这里插入图片描述

停止server7的memcached
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
注意:memcache会对重复信息进行剔除,所以tomcat内存从memcache恢复信息时,不会恢复重复信息

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多于少的区别

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值