系统实施文档

Nginx+Tomcat+MemCached 集群配置手册

目    录

第1章   概述

1.1   目标

互联网的快速发展带来了互联网系统的高负载和高可用性, 这要求我们在设计系统架构时会应用很多高性能的产品, 本文主要描述互联网架构中门户应用的集群的配置工作,最终用以指导系统实施。

1.2   预期读者

本文档用于指导系统工程师进行系统实施工作,架构师和系统工程师应该通读本文档,选择适当版本用于自己的系统架构。

第2章   产品介绍

2.1   Nginx介绍

Nginx是一个高性能的 HTTP 和 反向代理服务器;Nginx 支持简单的负载均衡和容错;Nginx支持作为基本 HTTP 服务器的功能。

2.2   Memcached介绍

Memcached 是一个高性能的分布式内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,Memcached能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。

第3章   配置Session共享

3.1   环境说明

一、准备两台虚拟机,虚拟机上安装CentOS5.4版本;

A服务器IP:192.168.134.135

B服务器IP:192.168.134.136

A机上安装nginx-1.2.0和apache-tomcat-6.0.33

B机上安装memcached-1.4.10和apache-tomcat-6.0.33

二、除此之外,我们还需要一些MSM相关的jar包:

javolution-5.4.3.1.jar

memcached-2.4.2.jar

memcached-session-manager-1.5.1.jar

memcached-session-manager-tc6-1.5.1.jar

msm-javolution-serializer-1.5.1.jar

msm-kryo-serializer-1.5.1.jar

msm-xstream-serializer-1.5.1.jar

以上jar包在http://code.google.com/p/memcached-session-manager/downloads/list中下载。

3.2   配置Session共享

一、将上面所述的MSM的jar包拷贝至Tomcat安装目录lib文件夹中;

二、编辑context.xml

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"

memcachedNodes="n1: 192.168.134.136:11211"

requestUriIgnorePattern=".*/.(png|gif|jpg|css|js)$"

sessionBackupAsync="false"

sessionBackupTimeout="100"

transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"

copyCollectionsForSerialization="false"/>

三、重启两个Tomcat。

3.3  
配置Nginx负载均衡

一、Nginx安装完毕后,修改配置文件conf/nginx.conf

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    upstream web_server {

       #ip_hash;

       server 192.168.134.135:8080 max_fails=3  fail_timeout=30s;

       server 192.168.134.136:8080 max_fails=3  fail_timeout=30s;

    }

server {

        listen       80;

        server_name  localhost;

        location ~ .*\.jsp$ {

             proxy_pass   http://web_server;

             proxy_redirect default ;

        }

        location / {

            root   html;

            index  index.html index.htm;

        }

   }

}

二、重启Nginx

3.4  
测试

3.4.1    测试页面

在两个Tomcat的webapps目录下创建test目录,在test目录下,创建test_session.jsp文件,文件内容如下:

<%@ page contentType="text/html; charset=GBK" %>

<%@ page import="java.util.*" %>

<html><head><title>Cluster App Test</title></head>

<body>

   Server Info:

   <%

out.println(request.getLocalAddr() + ":" + request.getLocalPort());

%>

<br><br>

    <% 

out.println("<br> ID " + session.getId()+"<br>"); 

String dataName = request.getParameter("dataName");

if (dataName != null && dataName.length() > 0) { 

String dataValue = request.getParameter("dataValue") ;

session.setAttribute(dataName, dataValue); 

} 

out.print("<b>Session list</b> <br>"); 

Enumeration e = session.getAttributeNames(); 

while (e.hasMoreElements()) { 

String name = (String)e.nextElement();

String value = session.getAttribute(name).toString(); 

out.println( name + " = " + value+"<br>");

System.out.println( name + " = " + value);

}

%>

<form action="test_session.jsp" method="POST">

          name:<input type=text size=20 name="dataName"> <br>

          key:<input type=text size=20 name="dataValue"> <br>

          <input type=submit>

    </form>

  </body>

</html>

3.4.2    测试步骤

先启动memcached

然后启动niginx和两个Tomcat。

打开浏览器,输入http:// 192.168.134.135/test/test_session.jsp

填写name和key,提交后看以看到

aaarticlea/png;base64,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" alt="" />

关闭192.168.134.135上的Tomcat,再刷新,如果ID的值相同且Session
List中值也存在,说明Session是被共享的。

Nginx+Tomcat+MemCached 集群配置手册的更多相关文章

  1. 【转】Nginx+Tomcat+Memcached集群Session共享

    cookie是怎样工作的? 例 如,我们创建了一个名字为login的Cookie来包含访问者的信息,创建Cookie时,服务器端的Header如下面所示,这里假设访问者的注册名 是“Michael J ...

  2. Nginx+Tomcat+Memcached 集群

    写过一篇 Apache Httpd+Tomcat 的集群, 现在来看看Nginx+Tomcat+Memcached是怎么集群的. 先看看用的版本和工具: Nginx: nginx-1.8.1 Tomc ...

  3. session服务器Nginx+Tomcat+Memcached集群Session共享

    cookie是怎样工作的? 例如,我们创立了一个名字为login的Cookie来包含访问者的信息,创立Cookie时,服务器端的Header如下面所示,这里假设访问者的注册名是“Michael Jor ...

  4. 【转】Nginx+Tomcat+Memcached集群

    Tomcat集群session同步方案有以下几种方式: 使用tomcat自带的cluster方式,多个tomcat间自动实时复制session信息,配置起来很简单.但这个方案的效率比较低,在大并发下表 ...

  5. Nginx+Tomcat+Memcached集群

    Tomcat集群session同步方案有以下几种方式: 使用tomcat自带的cluster方式,多个tomcat间自动实时复制session信息,配置起来很简单.但这个方案的效率比较低,在大并发下表 ...

  6. 云服务器 nginx + tomcat 部署集群 配置

    nginx.conf #user nobody; worker_processes ; #error_log logs/error.log; #error_log logs/error.log not ...

  7. nginx+tomcat实现集群,redis实现session共享,软连接实现文件共享:http://blog.csdn.net/hua1586981/article/details/78132710

    转载 2017年02月08日 16:52:41 730 相信很多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额.那究竟它有什么作用呢?可能很多人未必了解. 说到反向代理,可能 ...

  8. Ubuntu_10.04下Hadoop-0.20.2集群配置手册

    Ubuntu_10.04下Hadoop-0.20.2集群配置手册 一.软硬件环境的准备 下面的文章来自hadoopor.com,我先交待一下我自己的环境: 两台机器,每台机器上面两个虚机(vmware ...

  9. Nginx + Tomcat搭建集群

    一.Tomcat集群带来的好处 1.提高服务的性能,并发能力,以及高可用性 2.提供项目架构的横向扩展能力 二.Tomcat集群实现原理 通过Nginx负载均衡进行请求转发 三.Nginx + Tom ...

随机推荐

  1. 请不要把‘通知的观察者注册’放在-viewWillAppear:中

    接手项目二次开发的吐槽: 接手别人的代码的悲哀之一就是,我反复的把流程走了一遍又一遍,却始终无法发现原来是这个问题. 之前这个人把通知的观察者注册放在了-viewWillAppear:中,导致,我发送 ...

  2. Android中实现定时器的四种方式

    第一种方式利用Timer和TimerTask 1.继承关系 java.util.Timer 基本方法 schedule 例如: timer.schedule(task, delay,period); ...

  3. C#中使用SHA1和MD5加密字符串

    SHA1和MD5加密均为不可逆加密.代码如下: using System.Security.Cryptography; //添加Using static void Main(string[] args ...

  4. Ubuntu下安装Tomcat7

    第一部分:基本安装 1.打开http://tomcat.apache.org/download-70.cgi,下载apache-tomcat-7.0.68.zip. 2.拷贝至合适位置,如/usr/l ...

  5. 设备像素,设备独立像素,CSS像素

    之前学了移动端的开发对设备像素.设备独立像素.CSS像素弄得不太清楚,所以趁周末的时间查了一下,稍加整理 一些概念 在进行具体的分析之前,首先得知道下面这些关键性基本概念. CSS像素 CSS像素是W ...

  6. Nodejs进阶:express+session实现简易身份认证

    本文摘录自<Nodejs学习笔记>,更多章节及更新,请访问 github主页地址.欢迎加群交流,群号 197339705. 文档概览 本文基于express.express-session ...

  7. StringHelper--封转自己的字符串工具类

    我们每次开发项目,都会有很多的关于字符串的处理,字符串的处理太常见了,无法避免,那么这时如果可以把常用的字符串处理封装成类,在以后的开发中应该会减少一些工作量,下面代码对一些常用的字符串处理进行了封装 ...

  8. mySql 安装教程

    看了好久别人的文章,今天就开始自己写第一篇.希望给别人能提供帮助,也可以方便自己查阅. 前两天自己安装了mysql,感觉是比oracle好装多了. mysql安装有两种方式,一种是安装包安装方式,一种 ...

  9. [Day01] Python基础

    明天要完成的任务如下:  Python 四则运算 Python 数据结构 Python 元算符(in.not in.is.and.or) 用户输入 (input.raw_input) 流程控制 缩进 ...

  10. register_sysctl_table实现内核数据交互

    作者:Younger Liu, 本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可. Sysctl是一种用户应用来设置和获得运行时内核的配置参数的一种有效方式,通 ...