nginx+tomcat的集群和session复制

前端服务器采用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复制】

时间: 2024-11-06 07:20:19

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

Nginx+Tomcat搭建集群环境

集群概述与架构介绍 Tomcat集群能带来什么: 提高服务的性能,例如计算处理能力.并发能力等,以及实现服务的高可用性 提供项目架构的横向扩展能力,增加集群中的机器就能提高集群的性能 Tomcat集群实现方式: Tomcat集群的实现方式有多种,最简单的就是通过Nginx负载进行请求转发来实现 Tomcat单机架构图: 可能看了上面的Tomcat单机的架构图后,会 "想当然" 的觉得Tomcat集群架构是这样子的: 这种 "想当然" 的Tomcat集群会带来什么问题

Nginx+Tomcat+MemCached 集群配置手册

系统实施文档 Nginx+Tomcat+MemCached 集群配置手册 目    录 第1章   概述 1.1   目标 互联网的快速发展带来了互联网系统的高负载和高可用性, 这要求我们在设计系统架构时会应用很多高性能的产品, 本文主要描述互联网架构中门户应用的集群的配置工作,最终用以指导系统实施. 1.2   预期读者 本文档用于指导系统工程师进行系统实施工作,架构师和系统工程师应该通读本文档,选择适当版本用于自己的系统架构. 第2章   产品介绍 2.1   Nginx介绍 Nginx是一

企业网站架构之Nginx+tomcat+memcached集群

nginx+tomcat+memcached应用 系统环境:RHEL6.4  x64   iptables -F   and selinux is disabled 主机角色:node1 :192.168.0.24 :lnmp环境 tomcat memcached node2 :192.168.0.99 : tomcat memcached 软件下载:在lnmp环境上测试tomcat,使用nginx简单发布jsp jdk-6u32-linux-x64.bin apache-tomcat-7.0.

Nginx + Tomcat搭建集群

一.Tomcat集群带来的好处 1.提高服务的性能,并发能力,以及高可用性 2.提供项目架构的横向扩展能力 二.Tomcat集群实现原理 通过Nginx负载均衡进行请求转发 三.Nginx + Tomcat搭建集群 (一).修改hosts文件 1. windows修改hosts 文件 c:\Windows\System32\drivers\etc\hosts 127.0.0.1 www.water.com 2. linux修改hosts文件 vi /etc/hosts (二).启动Nginx w

Nginx+Tomcat+Memcached集群Session共享

提供给大家整合实例: http://download.csdn.net/detail/zld1987/9577962 cookie是怎样工作的? 例如,我们创建了一个名字为login的Cookie来包含访问者的信息,创建Cookie时,服务器端的Header如下面所示,这里假设访问者的注册名是"Michael Jordan",同时还对所创建的Cookie的属性如path.domain.expires等进行了指定. Set-Cookie:login=Michael Jordan;path

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

cookie是怎样工作的? 例 如,我们创建了一个名字为login的Cookie来包含访问者的信息,创建Cookie时,服务器端的Header如下面所示,这里假设访问者的注册名 是“Michael Jordan”,同时还对所创建的Cookie的属性如path.domain.expires等进行了指定. Set-Cookie:login=Michael Jordan;path=/;domain=msn.com; expires=Monday,01-Mar-99 00:00:01 GMT 上面这个H

Tomcat集群的session复制配置

此处我们采用的是在一台服务器上配置3台Tomcat,为了达到访问任何一台Tomcat都共享session的目的,我们这里采用Tomcat在集群中的session复制,以下是具体的配置 1.我们将Tomcat复制3份,更改名字为Tomcat1.Tomcat2.Tomcat3,修改每个Tomcat中的Server节点端口分别为8005.8006.8007 1 #Tomcat1 2 <Server port="8005" shutdown="SHUTDOWN">

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

cookie是怎样工作的? 例如,我们创立了一个名字为login的Cookie来包含访问者的信息,创立Cookie时,服务器端的Header如下面所示,这里假设访问者的注册名是“Michael Jordan”,同时还对所创立的Cookie的属性如path.domain.expires等进行了指定. Set-Cookie:login=Michael Jordan;path=/;domain=msn.com; expires=Monday,01-Mar-99 00:00:01 GMT 下面这个Hea

Nginx+Tomcat+Memcached集群

Tomcat集群session同步方案有以下几种方式: 使用tomcat自带的cluster方式,多个tomcat间自动实时复制session信息,配置起来很简单.但这个方案的效率比较低,在大并发下表现并不好.原理:http://zyycaesar.iteye.com/blog/296606 利用nginx的基于访问ip的hash路由策略,保证访问的ip始终被路由到同一个tomcat上,这个配置更简单.但如果应用是某一个局域网大量用户同时登录,这样负载均衡就没什么作用了. 利用nginx插件实现