Nginx+Tomcat+Memcached 集群
写过一篇 Apache Httpd+Tomcat 的集群,
现在来看看Nginx+Tomcat+Memcached是怎么集群的。
先看看用的版本和工具:
Nginx: nginx-1.8.1
Tomcat: apache-tomcat-8.0.32
Memcached: memcached-win32-1.4.4-14
(我都是用的Windows下的版本,Linux下是一样的,而且Memcached在Linux的版本更好)
关于Memcached可以参考我的这一篇: http://www.cnblogs.com/icenter/p/5331357.html
关于集群想多说两句就是关于网络和网络安全,大家一定也要多懂一些,虽然一般的自己搭建集群涉及不到,但实际公司企业用的话对安全和网络的要求很高的。
集群搭建并不难,难的是在这上边的业务和事务的处理。有很多相关的分布式的协议可以多查查。好了废话不多说,直接看搭建过程:
1,首先启动Memcached
关于Memcached的,安装,启动,配置及使用和常用命令,参考: http://www.cnblogs.com/icenter/p/5331357.html
这篇文章不在赘述,首先保证Memcached起来。
2,配置tomcat
这次要往tomcat的lib目录中多放进几个包去
javolution-5.4.3.1.jar
memcached-session-manager-1.9.2.jar
memcached-session-manager-tc8-1.9.2.jar
msm-javolution-serializer-1.9.2.jar
msm-kryo-serializer-1.9.2.jar
msm-serializer-benchmark-1.9.2.jar
spymemcached-2.12.0.jar
然后配置 tomcat中的 server.xml 和 上一篇 Apache Httpd + tomcat 类似,
要注意的几个点:
<Server port="8007" shutdown="SHUTDOWN">
shutdown server port
<Connector port="8082" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
connector HTTP/1.1 server port
<Connector port="8011" protocol="AJP/1.3" redirectPort="8443" />
connector AJP/1.3 server port
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
Engine 中 jvmRoute
这次使用 Memcached 内存数据的做Session的统一管理,和上次 httpd +tomcat 那个简单的 SimpleTcpCluster 不同。
这次需要把项目映射到tomcat中, 使用Context 让tomcat 加载项目, 然后在 Context中加入 <Manager.... /> 来管理Session
截图如下:
主要的Code部分
<Context docBase="D:\Nginx_Tomcat\apache-tomcat-8.0.32-1\webapps\view" path="/view" reloadable="false" >
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:localhost:11211"
requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"
sessionBackupAsync="false"
sessionBackupTimeout="100"
sticky="false"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
copyCollectionsForSerialization="false"/>
</Context>
memcachedNodes="n1:localhost:11211" 这里如果Memcached也是多个的话,使用逗号分隔,memcachedNodes="n1:localhost:11211,n2:192.168.0.100:11211"
参数的格式:名字:ip:port
到此Tomcat 配置完毕,这时可以启动Tomcat了。
多注意一下log情况,看看有没有报错,如果没有报错,恭喜你,Tomcat的集群已经初步显形,可以重新整理一下,重启Memcached,tomcat看看自己的初步成果了。如果失败了多看看log,看看是什么错误在具体分析。
这个时候其实已经能够完成 tomcat 的Session 复制功能了, 你往tomcat1 中添加一个session, tomcat2, tomcat3 中都会有。
并且,如果Memcached没死,没有重启的话, 即便是某一个tomcat重启了,session也不会丢失。强大吧。
但是这时候还没有统一的入口的,你必须一个ip:port,一个ip:port的输入才能访问每个tomcat,没有负载均衡,没有load balance。
那么我们的大哥Nginx该上场了:
3,配置Nginx
关于Nginx的理解和配置及学习了,这里我们就不学习源码了,有兴趣,有时间的同学,可以下来仔细研究。
我们这里讲集群和负载均衡,我们只讲一下Nginx来实现我们需求的最简单配置:
找到你的Nginx的安装目录,找到conf下的nginx.conf文件,
修改这个文件, 我们加入一组我们的 tomcatservers, 然后让 nginx 来代理这一组server就OK了。
下边来看截图:
看一下主要的Code改动:
upstream tomcat_servers {
server localhost:8081 weight=1;
server localhost:8082 weight=1;
server localhost:8083 weight=1;
}
#weight 权重,和上把 httpd+tomcat 那个 lbfactor一模一样, 分值越大,说明我们认为这个机器越好,我们给他跟大的责任,分的请求理论上越多。
location / {
root html;
index index.html index.htm;
proxy_pass http://tomcat_servers;
}
其他的的参数暂时没有涉及到的,这里也不提了, 有兴趣的同学自己查查吧,什么ip_hash之类。
时间篇幅有限,我们这里不详细讲Nginx了,有时间单篇在详讲Nginx。
那么配置如果没错的话,你现在就可以启动Nginx了,没有报错吧, OK,你现在就有了统一的访问入口了, 负载均衡,Session,复制都有了。
到这里文章应该结束了。
但是我们应该思考的更多,比如在集群中,自动发现node离线,上线,等等,等等。
学无止境。
Nginx+Tomcat+Memcached 集群的更多相关文章
- Nginx+Tomcat+MemCached 集群配置手册
系统实施文档 Nginx+Tomcat+MemCached 集群配置手册 目 录 第1章 概述 1.1 目标 互联网的快速发展带来了互联网系统的高负载和高可用性, 这要求我们在设计系统架 ...
- 【转】Nginx+Tomcat+Memcached集群Session共享
cookie是怎样工作的? 例 如,我们创建了一个名字为login的Cookie来包含访问者的信息,创建Cookie时,服务器端的Header如下面所示,这里假设访问者的注册名 是“Michael J ...
- session服务器Nginx+Tomcat+Memcached集群Session共享
cookie是怎样工作的? 例如,我们创立了一个名字为login的Cookie来包含访问者的信息,创立Cookie时,服务器端的Header如下面所示,这里假设访问者的注册名是“Michael Jor ...
- 【转】Nginx+Tomcat+Memcached集群
Tomcat集群session同步方案有以下几种方式: 使用tomcat自带的cluster方式,多个tomcat间自动实时复制session信息,配置起来很简单.但这个方案的效率比较低,在大并发下表 ...
- Nginx+Tomcat+Memcached集群
Tomcat集群session同步方案有以下几种方式: 使用tomcat自带的cluster方式,多个tomcat间自动实时复制session信息,配置起来很简单.但这个方案的效率比较低,在大并发下表 ...
- 图文解说:Nginx+tomcat配置集群负载均衡
图文解说:Nginx+tomcat配置集群负载均衡 博客分类: appserver nginxTomcatUbuntuLinux网络应用 作者:niumd Blog:http://ari.iteye ...
- nginx+tomcat实现集群,redis实现session共享,软连接实现文件共享:http://blog.csdn.net/hua1586981/article/details/78132710
转载 2017年02月08日 16:52:41 730 相信很多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额.那究竟它有什么作用呢?可能很多人未必了解. 说到反向代理,可能 ...
- Nginx + Tomcat搭建集群
一.Tomcat集群带来的好处 1.提高服务的性能,并发能力,以及高可用性 2.提供项目架构的横向扩展能力 二.Tomcat集群实现原理 通过Nginx负载均衡进行请求转发 三.Nginx + Tom ...
- 转】Nginx+tomcat配置集群负载均衡
原博文出自于:http://blog.csdn.net/bruce_6/article/details/38228299 感谢! 相信很多人都听过nginx,这个小巧的东西慢慢地在吞食 ...
随机推荐
- Cocos2D创建项目
创建项目 配置好开发环境后, 用CMD切换到~\cocos2d\cocos2d-x-2.2.2\tools\project-creator目录上执行以下脚本 python create_project ...
- C# 生成二维码并且在中间加Logo
今天做项目的时候有个在生成二维码并且在中间加入Logo的需求,动手试了几把,总感觉效果没有之前写的好,就翻出旧代码,果然还是熟悉的味道,生成一张效果图如下 左边是微信里面的,右边是我自己生成的 原理比 ...
- Sponsored Feature: Common Performance Issues in Game Programming
转自http://www.gamasutra.com/view/feature/132084/sponsored_feature_common_.php?print=1 By Becky Heinem ...
- Python Socket File Transfer
I have a RPi which I intented to use it to crawl data. The development environment in RPi is very ba ...
- CSS去除Chrome浏览器的控件默认样式
html的input输入框在Chrome浏览器里是有默认样式的,当它获得焦点时,即使你没有为它设置:focus时的样式,Chrome浏览器还是会给它加上蓝色的边框,今天百度找到有个方法可以去除该默认样 ...
- java 使用 comet4j 主动向客户端推送信息 简单例子
[背景] 今天,一个前端的师弟问我怎样做实时聊天窗口,我毫不犹豫地说:在前台定时访问服务端呀!师弟默默地百度了一番,最后告诉我,有一种技术是后服务端动推送信息给客户端的,这种技术的名字叫comet,我 ...
- 【BZOJ】【2190】【SDOI2008】仪仗队
欧拉函数/莫比乌斯函数 Orz iwtwiioi 这个嘛……很明显在同一条线上的两个点一定是满足 x1*k=x2,y1*k=y2,(好吧这个表示方式有点傻逼,懂得就好了)那么这条线上的点只有第一个会 ...
- NGUI Tutorial 3
一. Create a Button 一.(Menu)NGUI -> Create -> Sprite 二.attach box colider to the Sprite , then ...
- 关于去哪儿网的UI自动化测试脚本(Python实现)
UI自动化测试Qunar机票搜索场景访问Qunar机票首页http://flight.qunar.com,选择“单程”,输入出发.到达城市,选择today+7日后的日期,点“搜索”,跳转到机票单程搜索 ...
- POJ 2771 Guardian of Decency(求最大点独立集)
该题反过来想:将所有可能发生恋爱关系的男女配对,那么可以带出去的人数应该等于这个二分图的最大独立集 先要做一下预处理,把不符合要求的双方先求出来, company[i][j]表示i.j四个标准都不符合 ...