LNMP集群nginx负载均衡和会话保持

    前期准备

    server1 172.25.70.11
    server2 172.25.70.12

    server1

    配置jdk和tomcat

    tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/做好软连接便于访问cd /usr/localln -s jdk1.7.0_79/ javaln -s apache-tomcat-7.0.37/ tomcat配置环境变量vim /etc/profileexport JAVA_HOME=/usr/local/javaexport CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/libexport PATH=$PATH:$JAVA_HOME/binsource /etc/profileecho $PATHecho $CLASSPATHecho $JAVA_HOMEwhich javawhich javacjava -versioncd /usr/local/tomcat/bin./startup.sh

    浏览器访问

    编写测试页面

    cd /usr/local/tomcat/webapps/ROOT/vim test.jspserver1-The time is: <%=new java.util.Date() %>

    安装nginx

    yum install  -y gcc-c   pcre pcre-devel zlib zlib-develtar zxf nginx-1.14.0.tar.gzcd nginx-1.14.0./configure --prefix=/usr/local/nginx  --with-file-aiomake && make install

    修改配置文件

    vim nginx.conf    upstream tomcat {server 172.25.70.11:8080;        server 172.25.70.12:8080;} location / {root   /usr/local/tomcat/webapps/ROOT;            index  index.html index.htm;        }       location ~ \.jsp$ {   proxy_pass   http://tomcat;       }

    增加测试页面:

    vim /usr/local/apache-tomcat-7.0.37/webapps/ROOT/test.jsp<%@ page contentType="text/html; charset=GBK" %><%@ page import="java.util.*" %><html><head><title>Cluster App Test</title></head><body>Server Info:<%out.println(request.getLocalAddr()   " : "   request.getLocalPort() "<br>");%><%out.println("<br> ID "   session.getId() "<br>");String dataName = request.getParameter("dataName");if (dataName != null && dataName.length() > 0) {String dataValue = request.getParameter("dataValue");session.setAttribute(dataName, dataValue);}out.print("<b>Session list</b>");Enumeration e = session.getAttributeNames();while (e.hasMoreElements()) {String name = (String)e.nextElement();String value = session.getAttribute(name).toString();out.println( name   " = "   value "<br>");System.out.println( name   " = "   value);}%><form action="test.jsp" method="POST">name:<input type=text size=20 name="dataName"><br>key:<input type=text size=20 name="dataValue"><br><input type=submit></form></body></html>

    server2

    只需配置Tomcat即可

    测试

    浏览器访问

    http://172.25.70.11/test.jsp

    添加粘滞模块

    server1

    在nginx配置文件中增加tomcat模块,为了实现session共享,需要支持sticky(粘滞)模块,
    nginx-1.14不支持sticky,所以使用nginx-1.10版本进行编译

    将/usr/local/lnmp/nginx 目录全部删除 再次编译

    tar zxf nginx-sticky-module-ng.tar.gz -C /usr/local/cd nginx-1.10.3./configure --prefix=/usr/local/lnmp/nginx   --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --add-module=/usr/local/nginx-sticky-module-ngmake && make installln -s /usr/local/lnmp/nginx/sbin/nginx /sbin/
    vim /usr/local/lnmp/nginx/conf/nginx.confupstream tomcat {sticky;        server 172.25.0.1:8080;        server 172.25.0.2:8080;}gzip  on; #开启gziplocation / {root   /usr/local/tomcat/webapps/ROOT;            index  index.html index.htm;        }       location ~ \.jsp$ {   proxy_pass   http://tomcat;       }nginx

    server2

    配置同server1

    测试

    再次刷新页面,访问的ID号不会变,实现了sticky

    实现session共享

    server1

    进入/usr/local/tomcat/lib目录

    将以下jar包拷贝到该目录

    asm-3.2.jarkryo-1.04.jarkryo-serializers-0.10.jarmemcached-session-manager-1.6.3.jarmemcached-session-manager-tc7-1.6.3.jar(最重要)minlog-1.2.jarmsm-kryo-serializer-1.6.3.jarreflectasm-1.01.jarspymemcached-2.7.3.jar

    2)编辑xml文件,加入session共享配置

    context.xml 该文件的作用是配置各种数据库的连接池
    XML概念 xml常用于数据存储和传输,文件后缀为 .xml 它是可扩展标记语言(Extensible Markup
    Language,简称XML),是一种标记语言 标记,指计算机所能理解的信息符号; 通过此种标记,计算机之间可以处理包含各种信息的文章等
    1 标记,指计算机所能理解的信息符号; 2 通过此种标记,计算机之间可以处理包含各种信息的文章等。
    XML设计用来传送及携带数据信息,不用来表现或展示数据,所以XML用途的焦点是它说明数据是什么,以及携带数据信息。
    而HTML语言则用来表现数据

    vim /usr/local/tomcat/conf/context.xml加入以下内容<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"memcachedNodes="n1:172.25.70.11:11211,n2:172.25.70.12:11211"failoverNodes="n1" requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/></Context>

    安装memcache

    yum install memcached -y/etc/init.d/memcached start

    重启Tomcat

    cd /usr/local/tomcat/bin./shutdown.sh./sh=tartup.sh

    server2

    配置同server1

    context.xml文件中failoverNodes="n2"

    172.25.0.1/test.jsp

    测试

    再次测试,如果n1挂了,session不会被重置

    注意测试的时候:想更改n1 n2 的时候 可以手动停掉server1 server2上的tomcat和memcached
    停止一端的memcache

    一、cookie:在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用cookie只能存储一些小量的数据。二、session:session和cookie的作用有点类似,都是为了存储用户相关的信息。不同的是,cookie是存储在本地浏览器,而session存储在服务器。存储在服务器的数据会更加的安全,不容易被窃取。但存储在服务器也有一定的弊端,就是会占用服务器的资源,但现在服务器已经发展至今,一些session信息还是绰绰有余的。三、cookie和session结合使用:web开发发展至今,cookie和session的使用已经出现了一些非常成熟的方案。在如今的市场或者企业里,一般有两种存储方式:1、存储在服务端:通过cookie存储一个session_id,然后具体的数据则是保存在session中。如果用户已经登录,则服务器会在cookie中保存一个session_id,下次再次请求的时候,会把该session_id携带上来,服务器根据session_id在session库中获取用户的session数据。就能知道该用户到底是谁,以及之前保存的一些状态信息。这种专业术语叫做server side session。2、将session数据加密,然后存储在cookie中。这种专业术语叫做client side session。flask采用的就是这种方式,但是也可以替换成其他形式

    未完

    来源:https://www.icode9.com/content-3-759851.html

    (0)

    相关推荐

    • LNMP+HTTPS

      title: "Lnmp + Https" date: 2019-08-28T16:18:20+08:00 draft: true 注:我的linux的ip地址为192.168.0 ...

    • Nginx+Tomcat+Redis负载均衡实现session共享

      一.准备工作 中间件:Tomcat.Redis.Nginx jar包:commons-pool2-2.4.2.jar.jedis-2.8.0.jar.tomcat-redis-session-mana ...

    • 集群、负载均衡、微服务、分布式的概念

      集群    多台主机干同样的事 比如web容器,只使用一个主机: 这个主机发生故障,直接gg. 数据库并发量大时,这个主机负担很大 数据库集群:使用多个主机,这些主机上都运行web容器. 某些主机发生 ...

    • Linux学习10-CentOS搭建nginx负载均衡环境

      前言 当自己的web网站访问的人越来越多,一台服务器无法满足现有的业务时,此时会想到多加几台服务器来实现负载均衡. 网站的访问量越来越大,服务器的服务模式也得进行相应的升级,怎样将同一个域名的访问分散 ...

    • 前端技术分享:Nginx负载均衡视频,基础的实战应用

      Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行.其特点是占有内存少,并发处理能力强,以高性能低资源消耗而闻名,国内 ...

    • Nginx负载均衡配置误区

      之前有很多朋友问关于Nginx的upstream模块中max_fails及fail_timeout,这两个指令,分别是配置关于负载均衡过程中,对于上游(后端)服务器的失败尝试次数和不可用时间,很多人不 ...

    • Nginx负载均衡算法

      负载均衡用来解决用户请求到来时如何选择 upstream server 进行处理,这里主要介绍几种负载均衡算法. 1.round-robin:轮询,默认负载均衡算法,即以轮询的方式将请求转发到上游服务 ...

    • 解析Nginx负载均衡

      摘要:对于一个大型网站来说,负载均衡是永恒的话题.随着硬件技术的迅猛发展,越来越多的负载均衡硬件设备涌现出来,如F5 BIG-IP.Citrix NetScaler.Radware等等,虽然可以解决问 ...

    • nginx负载均衡简单写法

      用nginx反向代理,把80端口的/a请求随机分到group1的站点,weight=1配置权重.

    • Centos7环境下搭建Nginx反向代理多个Tomcat的负载均衡集群

      我要.发光_2332019-03-22 23:25:34 分类专栏:大学作业 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:htt ...

    • LVS负载均衡集群

      实验一:负载均衡集群企业级应用实战-LVS-nat模式: 一.环境准备:一台centos系统做DR.两台实现过基于LNMP的电子商务网站 机器名称 IP配置服务角色备注 lvs-server VIP: ...