LAMP架构:tomcat结合nginx
tomcat结合nginx
- 一、tomcat简介及安装
- 1.tomcat介绍
- 2.nginx结合tomcat
- 3.tomcat 结合Nginx
- 4.tomcat和jdk软件下载
- 二、修改server5的nginx配置文件
- 三、客户端访问测试
- 四、nginx+tomcat+memcached建立cession共享
一、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恢复信息时,不会恢复重复信息
LAMP架构:tomcat结合nginx相关推荐
- LAMP架构之nginx:nginx重定向+防盗链
LAMP架构之nginx:nginx重定向+防盗链 一.nginx重定向 1.防止域名恶意解析到服务器IP,rewrite(URL重定向) 2.重定向做全站加密 3.网站的整体迁移 二.nginx防盗 ...
- python搭建web服务器需要tomcat吗_如何快速学习网站基本搭建和服务器环境配置(LAMP/LNMP/Tomcat)?...
一.基本概念 实验1: 在阿里云上部署Tomcat服务器 业务背景 Tomcat为网站的服务器,每个网站在后面都有一个服务器来解析那个网页,Tomcat 对于 Java 来说它就是一个 Servlet ...
- LAMP架构 (资源)
2019独角兽企业重金招聘Python工程师标准>>> LAMP架构 LAMP(Linux+Apache+MYSQL|Mariadb+PHP|PERL|Python)WEB架构组合. ...
- (十)RHEL系统之基于LAMP架构部署商城系统
基于LAMP架构部署商城系统 接上篇:(九)RHEL系统之linux自有服务 任务背景 小王经过一段时间学习,慢慢的了解到公司的一些业务架构,发现好几个项目不是LAMP架构就是Nginx+Tomcat ...
- centos 安装tomcat_简单介绍Linux配置mysql,tomcat,Nginx 开机自启动的几个方式
概述 一般我们打算把一些服务,例如 mysql,tomcat,Nginx设置开机自启动的话一般是有三四种方式来实现,下面以mysql,tomcat,Nginx做例子来演示. 一.使用定时任务 cron ...
- 百度贴吧10亿量级LAMP架构分享
导读:天下武功,唯快不破.对日益激烈的互联网竞争你所拥有的利器就是快!本文来自百度贴吧的LAMP解决方案介绍,摘录至此旨在研究分享,看看其是如何全面支持快速迭代的. 文章内容如下: 贴吧是功能性产品, ...
- Lamp 架构 搭建 论坛网站
实验环境: firewalld : stoped selinux: disabled 一. 构建lamp架构搭建论坛网站 在server1和server2上都安装部署相同的论坛网站,且二者共用同一个数 ...
- 末学者笔记--apache编译安装及LAMP架构上线
apache介绍 一.Apache的三种工作模式 Apache一共有3种稳定的MPM模式(多进程处理模块),它们分别是prefork.worker.event.http-2.2版本的httpd默认的m ...
- Apache web服务器(LAMP架构)
apache介绍 1).世界上使用率最高的网站服务器,最高时可达70%:官方网站:apache.org 2).http 超文本协议 HTML 超文本标记语言 3).URL 统一资源定位符 http:/ ...
最新文章
- FCC有意支持Sprint与T-Mobile合并?
- C++编程风格(一)
- IDEA中新建SpringBoot项目时提示:Artifact contains illegal characters
- Android inline hook手记
- Oracle入门(十四.22)之创建DDL和数据库事件触发器
- 前端学习(1452):表格案例--效果演示
- java implements interface_java接口(interface)与现实(implements)
- 通过html直接显示txt内容_10分钟教你用Python爬取Baidu文库全格式内容
- python中什么是按位取反_js中怎么理解按位取反?
- 问题解决:./config.sh: line 103
- Flutter实战视频-移动电商-18.首页_火爆专区后台接口调试
- UG NX二次开发(C#)-UI Styler-批量选择点
- 中标麒麟 NeoKylin-SDK 里都有哪些库文件
- 案例19:Java私房菜定制上门服务系统设计与实现开题报告
- 安卓读取U盘容量信息,支持低版本API
- python文档生成_python文档生成工具:pydoc、sphinx;django如何使用sphinx?
- 我的自选股估值观察:家电+银行+地产+白酒
- UVA1149 装箱 Bin Packing 题解
- 回到过去--慢慢的偏离了自己的轨迹
- Android Toast控件
热门文章
- 【uniapp】实现对TXT文本文件的读取和保存下载
- zip的mysql_安装zip的mysql
- java支付模块之支付宝
- PMP试题 | 每日一练,快速提分 6.4
- 本地mysql数据库安装
- nginx填坑之路(1)Nginx 检测语法正常,启用报 [emerg] bind() to 0.0.0.0:XXXX failed (13: Permission denied)错误处理...
- 【数据挖掘】pandas使用手册
- vulnhub之VENOM:1
- 主力吸筹猛攻指标源码_通达信偷偷连续吸筹指标,主力吸筹猛攻指标源码
- L010-老男孩linux高端运维课程—第二关linux命令及基础手把手实战