基于cookie的session sticky lnmt实现

 

架构图

环境说明

  • 所有主机基于centos 6.5
  • 后端主机:ha111  IP: 192.168.61.139 安装tomcat
  • 后端主机:ha222  IP: 192.168.61.140 安装tomcat
  • 负载均衡调度主机:rs1  IP: 192.168.61.131 安装nginx

ha111主机配置

 1. jdk安装,可以用sun或openjdk,这里用sun的

 

  • 安装
    rpm -ivh jdk-8u65-linux-x64.rpm
  • 环境变量设置
    vim /etc/profile.d/java.sh
    export JAVA_HOME=/usr/java/latest
    export PATH=$JAVA_HOME/bin:$PATH
  • 生效
    source /etc/profile.d/java.sh

 2.tomcat 安装

  • 安装
    tar xvzf apache-tomcat-8.0.28.tar.gz -C /usr/local/
    ln -sv /usr/local/apache-tomcat-8.0.28/ /usr/local/tomcat
  • 环境变量设置
    vim /etc/profile.d/tomcat.sh
    export CATALINA_HOME=/usr/local/tomcat
    export PATH=$CATALINA_HOME/bin:$PATH
  • 立即生效
    source /etc/profile.d/tomcat.sh
  • 添加系统服务
    vim /etc/init.d/tomcat
    #!/bin/sh
    # Tomcat init scriptfor Linux.
    #
    # chkconfig: 2345 96 14
    # description: TheApache Tomcat servlet/JSP container.
    # JAVA_OPTS=‘-Xms64m-Xmx128m‘
    JAVA_HOME=/usr/java/latest  #注意这些路径是否正确
    CATALINA_HOME=/usr/local/tomcat  #注意这些路径是否正确
    exportJAVA_HOME CATALINA_HOME  #这句不加也可以,前面环境都设置好了就行

    case $1 in
    start)
      exec $CATALINA_HOME/bin/catalina.sh start ;;
    stop)
     exec $CATALINA_HOME/bin/catalina.sh stop;;
    restart)
      $CATALINA_HOME/bin/catalina.sh stop
      sleep 2
      exec $CATALINA_HOME/bin/catalina.sh start ;;
      *)
      echo "Usage: `basename $0`{start|stop|restart}"
      exit 1
      ;;
     esac

  • 修改默认监听的8080端口为80
    vim /usr/local/tomcat/conf/server.xml
    <Connector port="8080" protocol="HTTP/1.1" 改为
    <Connector port="80" protocol="HTTP/1.1"

    chmod +x /etc/init.d/tomcat
    chkconfig --add tomcat
    service tomcat start 启动服务

  • 建立测试站点
    cd /usr/local/tomcat/webapp
    mkdir -pv testapp/{WEB-INF,classes,META-INF,lib}
  • 建立首页
    vim testapp/index.jsp
    <%@ page language="java" %>
    <html>
     <head><title>TomcatA</title></head>
      <body>
        <h1><fontcolor="red">Tomcat.ha111</font></h1>
        <tableborder="1">
          <tr>
            <td>Session ID</td>
        <%session.setAttribute("dx.com","dx.com"); %>
            <td><%= session.getId()%></td>
          </tr>
          <tr>
            <td>Created on</td>
            <td><%=session.getCreationTime() %></td>
         </tr>
        </table>
      </body>
    </html>
  • 测试curl http://localhost:8080/testapp/index.jsp

 3. ha222主机配置和ha111一样

 

 

 4 .nginx负载均衡调度器rs1配置

  • 安装依赖
    yum -y install pcre-devel openssl-devel
    tar xvzf nginx-1.8.0.tar -C /root/

 

 

  • 解压后编译安装
  • ./configure --prefix=/usr/local/nginx--conf-path=/etc/nginx/nginx.conf --user=nginx --group=nginx--error-log-path=/var/log/nginx/error.log--http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid--lock-path=/var/lock/nginx.lock --with-http_ssl_module--with-http_stub_status_module --with-http_gzip_static_module--with-http_flv_module --with-http_mp4_module--http-client-body-temp-path=/var/tmp/nginx/client--http-proxy-temp-path=/var/tmp/nginx/proxy--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --add-module=../nginx-sticky-module-1.1

    make && make install
    注意:如果需要开启sticky session功能,需要加上上面红色这句,nginx-sticky-module-1.1为模块文件所在位置,这里nginx的源文件与sticky模块源文件在同一目录

    创建上面指定的目录,不然启动时会报错
    mkdir -pv /var/tmp/nginx/{client,proxy,fastcgi,uwsgi}

  • 修改配置文件
    vim /etc/nginx/nginx.conf
    添加下面内容:
    upstream testapp {
            sticky;  #开启 session sticky
            server 192.168.61.139:80;
            server 192.168.61.140:80;
            }

    server {
            listen       80;
            server_name  192.168.61.131;
            location / {
                   proxy_pass http://testapp;
                index  index.jsp index.html index.htm;
            }

    error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
    }

至此全部配置完成,只要访问http://192.168.61.131/testapp/index.jsp即可实现基于cookie的session sticky lnmt

时间: 2024-12-23 16:14:13

基于cookie的session sticky lnmt实现的相关文章

基于Cookie的Session和禁用Cookie的Session

Session简介 session的作用 它是一种在客户端与服务器之间保持状态的解决方案,它将会话信息(uid等)供浏览器后续请求使用,可以获取并修改变量的值.和cookie一起使用识别同一个客户. session何时创建 客户首次访问服务器时,session被创建并分配一个唯一的session_id,并将这个session_id传入客户端cookie中,保持客户端与服务器端的session_id一致. 如何确认某一位用户?session的有效时间 当用户再次访问浏览器时,会通过cookie传递

ASP.NET MVC判断基于Cookie的Session过期

当我们第一次请求访问时,可以看到Response的Set-Cookie里添加了ASP.NET_SessionId的值,以后再访问时可以看到Resquest里的Cookie已经包含这个Key.   Session的IsNewSession可以判断这次请求是否第一次访问, 所以如果是第一次访问而且cookie里包含ASP.NET_SessionId,那么可以判断Session已经过期 因此我们可以写一个如下的一个Filter加在需要判断过期的Action上,当然如果所有Action都需要处理我们可以

基于cookie和session的登录验证

settings.py MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middlew

初识TomCat之4——TomCat负载均衡及基于IP的Session sticky

一.背景介绍 当一个tomcat服务器性能遇到瓶颈时,通常的做法是将tomcat服务器横向扩容,使用多台tomcat服务器来响应用户请求,但此时又引入了一个新问题,就是用户每次请求都会随机给他分配一个tomcat服务器,下面介绍如何实现tomcat实现负载均衡和会话绑定 二.实验拓扑 本次实验采用3台主机,操作系统为centos 7.4,JDK版本为1.8,tomcat版本为8.5,拓扑如下图所示: 当用户请求指定的域名时,静态内容由反代服务器自身响应,动态内容转交后端tomcat服务器响应,为

会话技术之Cookie 和 Session

为什么要使用会话技术 会话从字面上来说就是,就是两个人说话,也就是两个人交流,那么这里说的是计算机web端的交流,因为互联网是基于HTTP传输信息的,而http传输是无状态协议,缺少状态,意味着如果后续需要前面的内容,必须重传.也就是每一次连接都是独立的请求,这样就会给我们程序带来不便,比如我们要登陆一个网站购买商品时,是不是每次打开一个页面都需要登陆,答案是否定的,我可以给我的网址传一个参数,虽然这样能实现,但是没实质性作用,也不安全,任何人都可以登陆.这时就需要用到下面学到的技术Cookie

转载-cookie和session的窃取

一.cookie的基本特性 如果不了解cookie,可以先到 wikipedia 上学习一下. http request 浏览器向服务器发起的每个请求都会带上cookie: GET /index.html HTTP/1.1 Host: www.example.org Cookie: foo=value1;bar=value2 Accept: */* http response 服务器给浏览器的返回可以设置cookie: HTTP/1.1 200 OK Content-type: text/htm

Flask:cookie 和 session (0.1)

Windows 10家庭中文版,Python 3.6.4,Flask 1.0.2 Cookie是什么?有什么用? 某些网站为了辨别用户身份.进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密).定义于 RFC2109 和 2965 中的都已废弃, 最新取代的规范是 RFC6265 .(可以叫做浏览器缓存)(来自百度百科) Session是什么?有什么用? Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存储在 Sessi

Java Web(三) 会话机制,Cookie和Session详解

一.会话机制 Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份. 由于HTTP协议是无状态的,而出于种种考虑也不希望使之成为有状态的,因此,后面两种方案就成为现实的选择.具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案.同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所

JAVA基础之会话技术-Cookie及Session

至此,学习三个域对象:ServletContext(web项目).request(一次请求).Session(一个客户端)!均有相同的方法! 从用户开始打开浏览器进行操作,便开始了一次会话,直至关闭浏览器为止结束.在此过程中,每次产生请求时均会产生一次cookie,同时会产生一个JESSIONID进入到客户端进行创建内存空间,下次调用直接寻找此唯一的ID值.数据存储在两个地方均有利弊!需要注意的是,浏览器关闭,session并没有销毁! 一.会话技术简介: 1.存储客户端的状态: 因为Http协