`

nginx + msm 负载均衡及session共享fro windows

 
阅读更多
一 准备工作   
  A 下载nginx for windows  
  http://nginx.org/en/download.html 
  B 下载memcache-session-manager
  http://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration 
  C 下载memcached for windows
   http://splinedancer.com/memcached-win32/ 
  其它:jdk1.6 ,tomcat7

二 安装及配置: 
  nginx 安装非常简单,解压直接动行就行了,注意使用英文目录
 修改配置文件nginx\conf\nginx.conf
1. 找到内容http{
在它的上面加入如下内容:
upstream  192.168.0.92 {
	 ip_hash; #ip_hash策略将同一IP的所有请求都转发到同一应用服务器
	 server   192.168.0.92:8092;
	 server   192.168.0.93:8092;
	}

2. 找到
server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            root   html;
            index  index.html index.htm;
        }

把内容更改如下:
server {
        listen       80;
        server_name  192.168.0.92;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            #root   html;
            #index  index.html index.htm;
            proxy_pass http://192.168.0.92;
            proxy_redirect default;   
            proxy_connect_timeout 10; 
        }

注意分号与注释
3. 接下来可以布置个web工程测试一下
三 memcached 安装
1.下载以后复制到通常安装程序的地方,我这里是d:\Program Files\memcache,复制好以后执行以下命令:
memcached.exe-d install
2. 运行 memcached.exe -d start
  停止 ...................... -d stop/shutdown
3. java 环境的测试
  新建一个java工程 引入java_memcached-release_1.6.jar包
  新建TestMemcached.java
package com.rabbit.memcached;

import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;

/**
 * 
 * @author hackpro
 * @date 2013-2-21 下午4:02:07
 * @email renntrabbit@foxmail.com
 */
public class TestMemcached {

	public static void main(String[] args) {
		/* 初始化SockIOPool,管理memcached的连接池 */
		String[] servers = { "192.168.0.92:11211" };
		SockIOPool pool = SockIOPool.getInstance();
		pool.setServers(servers);
		pool.setFailover(true);
		pool.setInitConn(10);
		pool.setMinConn(5);
		pool.setMaxConn(250);
		pool.setMaintSleep(30);
		pool.setNagle(false);
		pool.setSocketTO(3000);
		pool.setAliveCheck(true);
		pool.initialize();
		/* 建立MemcachedClient实例 */
		MemCachedClient memCachedClient = new MemCachedClient();
		for (int i = 0; i < 10; i++) {
			/* 将对象加入到memcached缓存 */
			boolean success = memCachedClient.set("" + i, "Hello!");
			/* 从memcached缓存中按key值取对象 */
			String result = (String) memCachedClient.get("" + i);
			System.out.println(String.format("set( %d ): %s", i, success));
			System.out.println(String.format("get( %d ): %s", i, result));
		}
	}
}
   
   
控制台输入正常

]四 memchched-session-manger 与tomcat7 的配置
 官网有很详细的配置,这里我就得意的写一下我的配置和中间遇到的问题
1. 添加相关的java包 tomcat../lib/
2013-02-19  16:34            43,398 asm-3.2.jar
2013-02-19  16:30            94,830 kryo-1.04.jar
2013-02-20  10:34            60,575 kryo-serializers-0.10.jar
2013-02-19  20:01           127,689 memcached-session-manager-1.6.1.jar
2013-02-19  20:00            10,531 memcached-session-manager-tc7-1.6.1.jar
2013-02-19  16:33             4,879 minlog-1.2.jar
2013-02-19  20:02            23,491 msm-kryo-serializer-1.6.1.jar
2013-02-19  16:30            11,615 reflectasm-1.01.jar
2013-02-19  16:11           407,912 spymemcached-2.7.3.jar
 
我在测试的时候少加了kryo-1.04.jar包,折腾了一天
还有要注意tomcat6/7是使用不同的包,可能早期的版没有做区分
2. 添加修改tomcat7../conf/context.xml,网上说修改service.xml 也可以
context.xml
<Context>
...
<Manager
    className= "de.javakaffee.web.msm.MemcachedBackupSessionManager"   
    memcachedNodes= "n1:192.168.0.92:11211"   
    sticky="false"   
    lockingMode="auto"   
    requestUriIgnorePattern= ".*\.(png|gif|jpg|css|js)$"    
    sessionBackupAsync= "false"   
    copyCollectionsForSerialization="true"   
    transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"    
/>  
</Context>

如果在上面的文中加入
sessionBackupTimeout="0"
memcachedProtocol="binary"
可能会出不能登录的情况,如果出现了,请记得删除..

五 参数 
memcachedNodes (required)

memcached节点:此属性应该包含所有运行的memcached节点或者membase bucket的uri地址,每一个memcached节点的属性定义格式为<id>:<host>:<port>,多个节点定义直接使用空格或者逗号分隔,形如:memcachedNodes="n1:app01:11211,n2:app02:11211",如果只有单个的memcached节点,则<id>是可选项,只需配置<host>:<port>即可,形如:memcachedNodes="localhost:11211"。

如果我们配置的是membase,那么从1.6.0版本开始,我们可以配置指定一个或者多个membase bucket uris,形如:http://host1:8091/pools,http://host2:8091/pools。Bucket 名称和密码通过属性username,password来定义。membase buckets连接需要遵循memcached协议,传输数据通过二进制流方式。



failoverNodes (optional, must not be used for non-sticky sessions)

故障转移节点:可选项,对非黏性session不可用,属性必须包含memcached节点集群的所有ids。节点id之间用空格或者逗号分隔。



username (since 1.6.0, optional)

从1.6.0版开始使用,并且是可选的。用来进行membase bucket或者SASL验证。



password (since 1.6.0, optional)

从1.6.0版开始使用,并且是可选的。用来进行membase bucket或者SASL验证,密码可以为空。



memcachedProtocol (since 1.3, optional, default text)

定义memcached协议,默认使用text文本



sticky (since 1.4.0, optional, default true)

定义session方式为黏性或非黏性,默认为true



lockingMode (since 1.4.0, optional, for non-sticky sessions only, default none)

只有非黏性session才使用,默认值为none

•none: 从不对session进行锁定
•all: session将一直被锁定,知道请求结束
•auto: 对于只读请求,session将不会被锁定,如果是非只读请求,则session会被锁定
•uriPattern:<regexp>: 通过正则表达式的方式来对请求uri以及查询字符串进行匹配,只有匹配上的才会被锁定。
requestUriIgnorePattern (optional)



sessionBackupAsync (optional, default true)



backupThreadCount (since 1.3, optional, default number-of-cpu-cores)



sessionBackupTimeout (optional, default 100)



operationTimeout (since 1.6.0, optional, default 1000)



sessionAttributeFilter (since 1.5.0, optional)



transcoderFactoryClass (since 1.1, optional, default de.javakaffee.web.msm.JavaSerializationTranscoderFactory)

序列化接口实现:

•Java serialization: de.javakaffee.web.msm.JavaSerializationTranscoderFactory
•Kryo based serialization: de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory
•Javolution based serialization: de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory
•XStream based serialization: de.javakaffee.web.msm.serializer.xstream.XStreamTranscoderFactory


copyCollectionsForSerialization (since 1.1, optional, default false)



customConverter (since 1.2, optional)



enableStatistics (since 1.2, optional, default true)



enabled (since 1.4.0, optional, default true)
分享到:
评论

相关推荐

    nginx+redis负载均衡、session共享

    在构建高性能、高可用的Web服务时,"nginx+redis负载均衡、session共享"是一个常见的解决方案。这个方案结合了Nginx的反向代理和负载均衡能力,以及Redis的内存数据存储和分布式特性,用于处理高并发场景下的HTTP...

    nginx+tomcat+redis完成session共享

    这个小例子"nginx+tomcat+redis完成session共享"旨在演示如何通过这三种技术实现跨服务器的用户会话共享,以提升用户体验并简化系统管理。以下是这些技术及其在会话共享中的作用: 1. **Nginx**:Nginx是一款高性能...

    Nginx+tomcat 实现负载均衡session共享demo

    本教程将详细讲解如何通过`Nginx`实现`Tomcat`集群的负载均衡,并实现`session`共享。 首先,我们要理解负载均衡的基本概念。负载均衡是通过将工作负载分散到多个计算资源,以优化资源使用、最大化吞吐量、最小化...

    nginx+tomcat+redis负载均衡及session共享

    在IT行业中,构建高效、可扩展的Web服务是至关重要的,而"nginx+tomcat+redis负载均衡及session共享"的架构就是一个常见的解决方案。这个架构结合了三个强大的工具:Nginx作为反向代理和负载均衡器,Tomcat作为Java...

    Nginx+Memcache负载均衡session共享应用

    Nginx,Mamcache负载均衡,session共享应用 Nginx,Mamcache负载均衡,session共享应用 Nginx,Mamcache负载均衡,session共享应用 Nginx,Mamcache负载均衡,session共享应用

    nginx+tomcat实现负载均衡,共享session的两种方式

    nginx+tomcat实现负载均衡,共享session的两种方式: 1.使用Redis共享session 2.使用tomcat的组播功能。

    nginx+memcached+tomcat 负载均衡+session共享实现所有代码

    nginx+memcached+tomcat 负载均衡+session共享实现所有代码 教程请看:https://blog.csdn.net/dayuang2009/article/details/80312249

    nginx+Redis+tomcat实现session共享jar

    包含的jar包如下: commons-pool2-2.0.jar jedis-2.5.2.jar tomcat-juli-adapters.jar tomcat-juli.jar tomcat-redis-session-manager1.2.jar

    Nginx+Tomcat负载均衡

    首先大家注意: 本文章中没有session共享,关于session共享我会在下一篇中讲解,先实现Nginx+tomcat负载均衡再实现session共享。 从网上查了好多资料,多走了很多弯路,现在把自己成功的方法拿出来与大家分享。 ...

    nginx+redis负载均衡和session粘滞

    本教程将探讨如何在Windows环境中,利用Nginx作为反向代理服务器,Redis作为session存储,与Tomcat应用服务器配合,实现负载均衡和session粘滞。 **负载均衡** 负载均衡是一种技术,用于分散网络流量到多个服务器...

    Windows+Nginx+Tomcat做负载均衡同时实现session共享Demo

    在IT行业中,构建高效、可扩展的Web服务是至关重要的,而Windows+Nginx+Tomcat的组合在处理高并发请求时,常被用来搭建负载均衡系统,同时通过session共享来保证用户会话的一致性。这个“Windows+Nginx+Tomcat做负载...

    Nginx+tomcat负载均衡集群session复制 windos

    在配置Nginx+Tomcat的负载均衡集群时,主要步骤包括以下几个方面: 1. **安装Nginx和Tomcat**:在Windows上,你可以从官方网站下载Nginx和Tomcat的安装包,按照指南进行安装。确保Nginx和所有Tomcat实例在同一网络...

    linux下的nginx+tomcat负载均衡简单原理

    "Linux 下的 Nginx+Tomcat 负载均衡简单原理" Linux 下的 Nginx+Tomcat 负载均衡简单原理是指通过 Nginx 服务器来实现 Tomcat 服务器集群的负载均衡,以提高网站的可用性和性能。本文将对 Linux 下的 Nginx+Tomcat ...

    Nginx+Tomcat负载均衡企业实战.docx

    Nginx+Tomcat负载均衡企业实战.docx 本文档主要介绍了 Nginx+Tomcat 负载均衡的企业实战,涵盖了从0开始构建 Nginx WEB 平台、Tomcat WEB 集群、代码发布、Nginx 负载均衡 Tomcat 集群、动静分离、Rewrite 实战等...

    Nginx + Tomcat 负载均衡配置详解

    **Nginx + Tomcat 负载均衡配置详解** 在现代互联网应用中,服务器的高可用性和性能优化是至关重要的。Nginx 和 Tomcat 的组合常常被用来实现这样的目标,其中Nginx作为反向代理和负载均衡器,而Tomcat作为Java应用...

    Nginx+Squid负载均衡相关的PPT

    通过Nginx+Squid的组合,企业可以构建出一套强大的负载均衡和缓存解决方案,满足高并发、高可用和高效率的业务需求。同时,这两款开源软件拥有丰富的配置选项和社区支持,可以根据实际情况灵活调整,以适应不断变化...

    Nginx++Keepalived+Tomcat负载均衡&动静分离

    Nginx++Keepalived+Tomcat负载均衡&动静分离配置 本文主要介绍了Nginx、Keepalived和Tomcat的负载均衡和动静分离配置,旨在帮助读者了解如何搭建高可用、高性能的Web应用系统。 一、环境准备 在开始配置之前,...

    CentOS7下Nginx+Tomcat负载均衡及Redis共享Session解决方案

    通过上述步骤,我们成功地在`CentOS7`上配置了`Nginx+Tomcat`的负载均衡,并使用`Redis`实现了跨服务器的Session共享。这样的架构可以有效地分发用户请求,提高系统整体的可用性和响应速度,同时保证了用户会话的...

    Nginx+Tomcat 负载均衡 3分钟搞定

    "Nginx+Tomcat 负载均衡 3分钟搞定" 本文将从以下几个方面详细介绍 Nginx+Tomcat 实现负载均衡的知识点: 一、负载均衡的概念和优势 负载均衡(Load Balancing)是指在多台服务器之间分配工作负载,以提高响应...

    nginx+tomcat的负载均衡session共享和ant构建全流程

    综合以上,我们可以构建一个完整的流程:使用ANT自动化构建Java项目,同时通过SVN管理代码版本,然后将构建好的应用部署到Nginx+Tomcat的架构中,实现负载均衡和Session共享。这样的架构不仅提高了系统的可用性和...

Global site tag (gtag.js) - Google Analytics