Nginx+Memcached+Tomcat集群配置
1. Nginx
Nginx是通过将多个Web Server绑定到同一个IP地址下,以实现多个WebServer间的负载均衡,降低单个Web Server的负荷,以提高整体的性能与稳定性。
安装和配置Nginx的简单方式如下:
1) 下载并解压Nginx到本地目录:http://nginx.org/en/download.html
2) 对Nginx的配置主要是对它的配置文件/conf/nginx.conf的修改。如下链接是nginx.conf配置文件各个属性的详细说明:
http://www.cnblogs.com/xiaogangqq123/archive/2011/03/02/1969006.html
要利用nginx配置Web Server的负载均衡,需要修改的地方有:
a) 在http标签下,配置upstream属性,如:
- upstream mysvr {
- #weigth参数表示权值,权值越高被分配到的几率越大
- server 192.168.8.1x:3128 weight=5;
- server 192.168.8.2x:80 weight=1;
- server 192.168.8.3x:80 weight=6;
- }
其中,weight是可选项;若不配置weight,则默认所有的Web Server具有相同的权重。
b) 在http标签下的server标签中,做适当的修改,如:
- server {
- listen 83;
- server_name localhost;
- location / {
- root /root;
- index index.jsp;
- proxy_pass http:// mysvr;
- proxy_set_header Host $host:83;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- }
- ……
- }
其中需要说明的是,server_name和listen分别设置的是用户访问的地址和端口;proxy_pass指定转向的服务器列表(在upstream中定义);proxy_set_header Host设置跳转的http报文中的地址为proxy_pass中指定的地址,同时可以在此处指定端口号,若不指定,则默认会跳到80端口。
其它一些需要设置的属性请参见上述链接中的详细介绍。
3) 配置完成后,在控制台中进入Nginx的根目录,运行nginx或nginx –s start则可启动Nginx服务器,运行nginx –s stop或nginx –s quit可关闭Nginx(不可使用Ctrl+C强制结束)。
2. Memcached
Memcached是一个key-value映射的缓存系统。在WebApplication中可以利用Memcached完成一些频繁访问对象的缓存。而在分布式的Web Server集群中,由于需要保证各个单独的Web Server中的Session相一致,因此需要利用Memcached来支持。
这里需要使用一个开源项目,即Memcached Session Manager(MSM),如下链接是该开源项目的官网:
http://code.google.com/p/memcached-session-manager/
如下链接是官方的安装和配置向导:
http://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration
利用MSM对已经通过Nginx实现集群的Tomcat服务器组进行统一Session存储管理的简单方法如下:
1) 下载、安装、运行Memcached:
Linux版:http://memcached.org/
Windows版:http://code.jellycan.com/memcached/
2) 下载所需的jar包并放置到Tomcat的lib路径下:
a) memcached-session-manager-${version}.jar,基础包
b) memcached-session-manager-tc6-${version}.jar(针对Tomcat 6)或者memcached-session-manager-tc7-${version}.jar(针对Tomcat 7),服务器支持包
c) spymemcached-2.8.12.jar和couchbase-client-1.1.4.jar,缓存支持包
d) msm-javolution-serializer.jar和javolution-5.4.3.1.jar,序列化支持包
3) 在Tomcat的/conf/context.xml文件中,在根标签<context>下添加如下代码:
- <ManagerclassNameManagerclassName="de.javakaffee.web.msm.MemcachedBackupSessionManager"
- memcachedNodes="${tag}:localhost:11211"
- requestUriIgnorePattern=".*/.(png|gif|jpg|css|js)$"
- sessionBackupAsync="false"
- sessionBackupTimeout="100"
- transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
- copyCollectionsForSerialization="false"/>
其中${tag}可以替换成任意字符串,作为该WebServer的标记
4) 完成上述配置后,启动Tomcat,若无错误则表示配置成功。通过HttpSession的getId方法获取到session id时,可以看到在id的最后有上述的标记
转载:http://blog.csdn.net/sadfishsc/article/details/9151083
Nginx+Memcached+Tomcat集群配置的更多相关文章
- Nginx+Memcached+Tomcat集群配置(MSM--win7 64bit)
本次主要是在win7 64 上演示操作. web应用构建 Memcached安装配置启动 Tomcat配置 所需jar包 memcached-session-manager 序列化 contextxm ...
- Nginx+Memcached+Tomcat集群配置实践(Sticky Session)
准备工作 创建一个简单的web应用,名为session.其中有两个页面,分别如下所示: 页面login.jsp <%@ page language="java" conten ...
- 配置集群Nginx+Memcached+Tomcat集群配置
上班之余抽点时间出来写写博文,希望对新接触的朋友有帮助.今天在这里和大家一起学习一下配置集群 1. Nginx Nginx是通过将多个Web Server绑定到同一个IP地址下,以实现多个WebS ...
- 使用nginx搭建tomcat集群配置
软件准备: (1)jdk-8u73-linux-x64.tar.gz (2)apache-tomcat-7.0.57.tar.gz (3)nginx-1.7.7.tar.gz 准备3台Linux机器, ...
- nginx 、tomcat 集群配置、shiro Session 共享
一.nginx.config 配置 #user nobody; worker_processes ; #error_log logs/error.log; #error_log logs/error. ...
- nginx+tomcat集群配置(4)--rewrite规则和多应用根目录设定思路
前言: nginx中有一块很重要的概念, 就是rewrite规则. 它会对URL进行修改, 然后进行内部的重定向. rewrite授予了nginx更多的自由, 使得后级服务的接入更加地方便. 本文将简 ...
- nginx+tomcat集群配置(1)---根目录设定和多后端分发配置
前言: 对于javaer而言, nginx+tomcat集群配置, 已然成了web应用部署的主流. 大公司如此, 小公司亦然. 对于个人开发者而言, 资源有限, 往往多个web应用混部于一台服务器(云 ...
- Nginx+Tomcat集群配置
Nginx+Tomcat集群配置 一台虚拟机作为Nginx服务 两太虚拟机配置Tomcat+jdk环境 Nginx测试 启动: cd usr/local/nginx/sbin ./nginx ---& ...
- nginx整合tomcat集群并做session共享----测试案例
最近出于好奇心,研究了一下tomcat集群配置,并整合nginx,实现负载均衡,session共享,写篇记录,防止遗忘.---------菜鸡的自我修炼. 说明:博主采用一个web项目同时部署到两台t ...
随机推荐
- 基于tinyproxy搭建代理服务器
在我们实际的工作当中,经常会遇到这种情况,我们对线上服务器进行操作时是通过跳板机来进行的,出于安全性及投入资金来考虑非必要情况下除跳板机以外的服务器是没有内网ip的,所以当我们位于内网的服务器需要使用 ...
- visual studio code 中隐藏从 ts 文件生成的 js 文件和 map 文件
typescript 文件编译产生的 js 和 map 文件不需要手工编辑,打开[文件][首选项][工作区设置],放入以下代码: // 将设置放入此文件中以覆盖默认值和用户设置. { "fi ...
- 摘抄-----java codeReview要做的事
整洁的代码 清单项目 分类 使用可以表达实际意图(Intention-Revealing)的名称 有意义的名称 每一个概念只用一个词 有意义的名称 使用方案/问题领域名称 有意义的名称 类应该是比较小 ...
- 测试一下你的T-SQL基础知识-subquery
一直以为自己SQL挺好的,没有想到今天在重构存储过程遇到了一个子查询的问题,修改为自连接之后发现居然结果不对,于是有了下面的测试.假设表中有如下数数据,请问Query1,Query2,Query3的查 ...
- .NET 调试入门(三)常用的命令
windbg ANSI Command Tree 1.0 title {"Crash Dump Analysis Checklist"} body {"Crash Dum ...
- On extracting ops from LLVM backend
Symbols and ops generation: llvm::Function* BackendLLVM::build_llvm_instance (bool groupentry) Work ...
- 【slenium专题】Webdriver同步设置
Webdriver同步设置常用等待类主要如下图所示 注:support.ui包内类主要实现显性等待功能,timeouts()内方法主要实现隐性等待功能 一.线程休眠 Thread.sleep(long ...
- jQuery ajax的jsonp跨域请求
一直在听“跨域跨域”,但是什么是跨域呢?今天做了一些了解.(利用jQuery的jsonp) jQuery使用JSONP跨域 JSONP跨域是利用script脚本允许引用不同域下的js实现的,将回调方法 ...
- JQuery Mobile - 需要注意问题!
一,JQuery Mobile 和 JQuery 版本对接,一定要选用和当前JQuery Mobile 对应版本的JQuery . 二,在台式机的模拟器和真机中的显示结果可能不一样.我在台式机中使用的 ...
- python学习笔记6-集合
# 集合是无序且不可重复的元素的集合 a = set([1,3,1,3,3,2,2,5]) a # {1, 2, 3, 5} b = set(range(2,5)) b # {2, 3, 4} # 1 ...