前端服务器采用nginx,后端应用服务器采用tomcat。nginx负责负载均衡,session复制在tomcat上处理。

1、nginx安装(略)

2、nginx配置负载均衡

http {

include       mime.types;

default_type  application/octet-stream;

sendfile        on;

keepalive_timeout  65;

#设置负载均衡列表

upstream backend

{

#ip_hash;

server localhost:8081;

server localhost:8082;

}

#设置虚拟主机

server {

   listen       8888;

   server_name  localhost;

#charset koi8-r;

#access_log  logs/host.access.log  main;

location / {

    root   "E:\test";

     index  index.html index.htm;

     proxy_redirect off;

    #保留用户真实信息

    proxy_set_header Host $host;

    proxy_set_header X-Real-IP $remote_addr;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

     proxy_pass http://backend;

}

}

}

2、tomcat安装(略)

3、tomcat负载均衡配置

分别修改两个tomcat中的server.xml文件,找到<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">类似这句话

1)两个tomcat分别设置为jvmRoute="jvm1",jvmRoute="jvm2";

2)在这句话加入以下内容(直接复制使用即可)

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"

  channelSendOptions="8">

<Manager className="org.apache.catalina.ha.session.DeltaManager"

    expireSessionsOnShutdown="false"

    notifyListenersOnReplication="true"/>

<Channel className="org.apache.catalina.tribes.group.GroupChannel">

   <Membership className="org.apache.catalina.tribes.membership.McastService"

    address="228.0.0.4"

    frequency="500"

     dropTime="3000"/>

   <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"

    address="auto"

    autoBind="100"

    selectorTimeout="5000"

    maxThreads="6"/>

<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">

  <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>

  </Sender>

  <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>

  <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>

  </Channel>

<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"

    filter=""/>

    <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>

    <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>

    </Cluster>

3、在你的项目WEB-INF下的web.xml中添加

<distributable/>

4、测试

建立文件夹testCluster,在文件夹下建立WEB-INF文件夹,在WEB-INF文件夹下放入web.xml(web.xml内容中记得加入<distributable/>),在testCluster文件夹中放入testCluster.jsp,testCluster.jsp内容如下:

<%@ page contentType="text/html; charset=GBK" %> 
    <%@ page import="java.util.*" %> 
    <html><head><title>Cluster Test</title></head> 
    <body> 
    <% 
      //HttpSession session = request.getSession(true); 
      System.out.println(session.getId()); 
      out.println("<br> SESSION ID:" + session.getId()+"<br>");   
      // 如果有新的请求,则添加session属性 
      String name = request.getParameter("name"); 
      if (name != null && name.length() > 0) { 
         String value = request.getParameter("value"); 
         session.setAttribute(name, value); 
      }   
        out.print("<b>Session List:</b>");   
        Enumeration<String> names = session.getAttributeNames(); 
        while (names.hasMoreElements()) { 
            String sname = names.nextElement();  
            String value = session.getAttribute(sname).toString(); 
            out.println( sname + " = " + value+"<br>"); 
            System.out.println( sname + " = " + value); 
       } 
    %> 
      <form action="testCluster.jsp" method="post"> 
        名称:<input type=text size=20 name="name"> 
         <br> 
        值:<input type=text size=20 name="value"> 
         <br> 
        <input type=submit value="提交"> 
       </form> 
    </body> 
    </html>

启动nginx、tomcat1、tomcat2,通过nginx端口访问testCluster.jsp。输入名称和值,不断刷新页面。

现象:

1、tomcat1、tomcat2后台轮询打印出信息。【达到负载均衡】

2、tomcat1端口访问tomcat1端口访问testCluster.jsp输入名称和值,提交。tomcat2端口访问testCluster.jsp能看到tomcat1提交的数据。【达到session复制】

nginx+tomcat的集群和session复制的更多相关文章

  1. Nginx+tomcat+redis集群共享session实现负载均衡

    1.nginx是一款轻量级兼备高性能的Http和反向代理服务器.所谓反向代理就是指用户发起访问请求,由代理服务器接受,然后将请求转发给正式服务器,并且将正式服务器处理完的数据返回给客户单,此时代理服务 ...

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

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

  3. 图文解说:Nginx+tomcat配置集群负载均衡

    图文解说:Nginx+tomcat配置集群负载均衡 博客分类: appserver nginxTomcatUbuntuLinux网络应用  作者:niumd Blog:http://ari.iteye ...

  4. Nginx+Tomcat+MemCached 集群配置手册

    系统实施文档 Nginx+Tomcat+MemCached 集群配置手册 目    录 第1章   概述 1.1   目标 互联网的快速发展带来了互联网系统的高负载和高可用性, 这要求我们在设计系统架 ...

  5. 如何实现 集群化/Session 复制-doc(cluster-howto.html)

    源文档链接: http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html 翻译日期: 2014年3月19日 翻译人员: 铁锚 感受: Tomc ...

  6. Nginx + Tomcat搭建集群

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

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

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

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

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

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

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

随机推荐

  1. 使用hibernate优化

    a. 在查询字符串中,应该总是使用jdbc的占位符?,或使用使用命名参数:,不要自查询中使用字符串值来代替非常量值.   b.  Flush会影响性能,频繁刷新影响性能,尽量减少不必要的刷新.   c ...

  2. WIN7中组件服务中的DCOM配置找不到Microsoft Excel应用程序的解决办法

    转自:http://blog.csdn.net/lploveme/article/details/8215265 在运行栏中输入命令:dcomcnfg,打开组件服务管理窗口,但是却发现找不到Micro ...

  3. 在html页头设置不缓存

    方法一:在<head>标签里增加如下meta标签. <meta http-equiv="Content-Type" content="text/html ...

  4. (二)原生JS实现 - 事件类方法

    事件处理 - 添加事件 var addEventHandler = function (oTarget, sEventType, fnHandler) { if (oTarget.addEventLi ...

  5. hdu 1009 贪心基础题

    B - 贪心 基础 Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:32768KB     64bi ...

  6. [每日一题] OCP1z0-047 :2013-07-30 表连接――内联视图当作表使用

    用sys用户登录,给oe用户授权dba,以便可以用oe用户查看执行计划: oe@OCM> conn / as sysdba Connected. sys@OCM> grant dba to ...

  7. CSS3 基础知识

    CSS3 基础知识1.边框    1.1 圆角  border-radius:5px 0 0 5px;    1.2 阴影  box-shadow:2px 3px 4px 5px rgba(0,0,0 ...

  8. 【干货】.NET开发通用组件发布(四) 日志记录组件

    组件介绍和合作开发 http://www.cnblogs.com/MrHuo/p/MrHuoControls.html 日志记录组件功能介绍 通过基类Logger,实现了文本记录日志和数据库记录日志两 ...

  9. NFine常见错误

    1.新增数据录入录入不进去提示:An error occurred while updating the entries.See the inner exception for details. 这样 ...

  10. C语言复习--实现栈

    C #include <stdio.h> #include <stdlib.h> #define STACK_SIZE 100 typedef char TYPE; typed ...