前端服务器采用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. Windows命令行(DOS命令)教程–2 (转载) http://arch.pconline.com.cn//pcedu/rookie/basic/10111/15325_1.html

    二.符号约定 为了便于说明格式,这里我们使用了一些符号约定,它们是通用的: C: 盘符 Path 路径 Filename 文件名 .ext 扩展名 Filespec 文件标识符 [ ] 方括号中的项目 ...

  2. Solr中schema.xml的解释

    接Solr-4.10.2与Tomcat整合.schema.xml位于D:\solr\data\solr\collection1\conf\中.1.fieldType节点    name: FieldT ...

  3. cocoa pods 安装 转载

    1.打开终端 终端输入  $ruby -v  查看ruby的版本 打印代码: ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64- ...

  4. js中的function

    Math方法详解 Math.sqrt(x)    计算X开平方 Math.sqrt(x,y)   计算xy Math.round(x)   计算x 四舍五入的值 getBoundingClientRe ...

  5. Oracle11g R2学习系列 之四Maven+Struts+Spring实验

    今天试一下Java调用Oracle来看一下.会不会也如昨天实验的一样坑呢?由于我对于Java也接触的不多,所以不打算直接使用该收提供的实验文档,而是自己利用Maven+Struts+Spring来自己 ...

  6. canvas元素大小与绘图表面大小

    原文链接:canvas总结:元素大小与绘图表面大小 前言 我们使用canvas的时候一般在canvas元素中直接设置它的width和height: 1 <canvas id="myCa ...

  7. php 简单分页

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. TypeScript开发Vue

    用TypeScript开发Vue——如何通过vue实例化对象访问实际ViewModel对象 目录 背景 解决方案 关于Vue中的计算属性类型 TypeScript的强制类型声明语法 强制类型声明的局限 ...

  9. 使用PULL方式解析XML资源文件下面的xml文件

    public class MainActivity extends Activity { private Button btn = null; private List<Map<Strin ...

  10. IC封装图片认识(一):BGA

    在上篇文章<常用IC封装技术介绍>第一个提到的IC封装形式就是BGA,全称是Ball Grid Array(球栅阵列结构的PCB),它是集成电路采用有机载板的一种封装法.其具有以下五个特点 ...