前端服务器采用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. Jboss基础及简单的应用

    初学Jboss,对于Jboss的基础认识以及配置做一些记录 Jboss基础: JBoss是什么–基于J2EE的应用服务器–开放源代码–JBoss核心服务不包括支持servlet/JSP的WEB容器,一 ...

  2. poj 2479 dp求分段最大和

    Maximum sum Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 38079   Accepted: 11904 Des ...

  3. php+mssql 已经写好的万能函数

    <?php /****************************************************************************************** ...

  4. 翻译Oracle文档--SYSDBA和SYSOPER系统权限

    SYSDBA和SYSOPER是管理权限,被用户来执行高级管理操作例如:创建 开启/关闭 备份/恢复 数据库.SYSDBA系统权限是针对想给予完全授权的数据库管理员SYSOPER系统权限允许一个用户执行 ...

  5. hdu 1535 Invitation Cards

    http://acm.hdu.edu.cn/showproblem.php?pid=1535 这道题两遍spfa,第一遍sfpa之后,重新建图,所有的边逆向建边,再一次spfa就可以了. #inclu ...

  6. Longest Valid Parentheses 解答

    Question Given a string containing just the characters '(' and ')', find the length of the longest v ...

  7. 数据库--PHP环境搭建

    一: 1.PHP的架构 LAMP :Linux  阿帕奇  MySQL  PHP WAMP:Linux 阿帕奇  Mysql  PHP (集成的环境搭建软件),一键搭建PHP开发环境工具 2.修改数据 ...

  8. python高级编程(第12章:优化学习)2

    #优化策略 #3个原则 """ 1a:寻找其他原因:确定第三方服务器或资源不是问题所在 2a:度量硬件:确定资源足够用 3a:编写速度测试:创建带有速度要求的场景 &qu ...

  9. Handsontable 新增一行 默认值

    效果图:

  10. Test注解的两个属性:expected和timeout

    JUnit4:Test文档中的解释: The Test annotation supports two optional parameters. The first, expected, declar ...