美文网首页
Nginx+Redis+tomcat实现服务器集群和sessio

Nginx+Redis+tomcat实现服务器集群和sessio

作者: 煗NUAN | 来源:发表于2020-04-21 19:03 被阅读0次

Nginx+Redis+tomcat实现服务器集群和session共享

  1. 概念:
    1. 概念:反向代理web服务器,作⽤于服务器,管理多个服务器。
    2. 多进程,多个⼯作进程,⼀个主进程。
    3. ⽬的:单节点故障,实现负载均衡,load balance,⾮阻塞,解决⼤客户量并发请求问题。
  2. 代理:
    1. 正向代理:作⽤于客户端。
    2. 反向代理:作⽤在服务器端,客户端不知道反向代理服务器的存在。
  3. 单节点故障:
    1. ⼤并发请求下,服务器只有⼀个,如果服务器挂掉,单节点发⽣故障,整个就不能正常运⾏了。
    2. 解决⽅案:配置服务器集群。使⽤ nginx ,通过ip 管理多个 tomcat服务器。

模拟伪集群

  1. 解压两个tomcat,在serve.xml⽂件配置两套不同的端⼝,8080,8005,8009。

  2. 修改Nginx的nginx.conf配置⽂件,实现负载均衡。

    1. 服务器集群配置
    2. nginx不能处理jsp⻚⾯,交由tomcat处理。
    3. 代码参考:
    #服务器集群配置
    upstream jeffrey.com{
        server 127.0.0.1:18080 weight=1;
     #服务器配置,weight是权重,权重越⼤,分配的概率越⼤。
        server 127.0.0.1:28080 weight=2;
        }
    #当前的nginx配置
    server {
        listen 80;#侦听端⼝号
        server_name localhost;
        #当前服务的域名.如果是localhost:8080的请求,则交给jeffrey.com的集群来处理。
        location / {
            proxy_pass http://jeffrey.com ;
            #与服务器集群的名称⼀致
            proxy_redirect default;
        }
        location = /50x.html {
            root html;
            }
    }
    
  3. 关闭nginx :

    1. nginx -s stop
    2. nginx -s quit
  4. 这里出现一个新的问题

    1. ⼀个服务器挂掉后,nginx不会⽴刻判断其死亡,⽽是等待,但是死掉的服务器⾥的信息怎么办?
    2. ⼀个应⽤通常有多个服务器,登录成功后,session只会在⼀台存储,想要多台服务器都识别到这个session,后端统⼀存储。
    3. 所以,集群产⽣的新问题:session共享。
  5. 解决session共享

    1. session复制
    2. 后端统⼀存储,后端统⼀找⼀个中间件将Session存起来即可,这个中间件是数据库redis或者缓存。此时,tomcat作为客户端,redis作为服务端。
    3. 不要使⽤session。
  6. redis实现session共享

  7. 改写tomcat底层

  8. 三个session的jar包复制到tomcat下的lib中,commons-pool2-2.2.jar,jedis-2.5.2.jar,tomcat-redissession-manager-2.0.0.jar。

  9. 安装redis server

  10. tomcat修改conf/context.xml,新增

    <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
    <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
    host="localhost"
    port="6379"
    database="0"
    maxInactiveInterval="60" />
    
    • 启动redis-server.exe
    //启动
    redis-server redis.windows.conf
    //关闭
    shutdown
    
    • 启动tomcat,启动nginx;
  11. nginx,tomcat,redis集群中。redis处理了两件事情,session共享,缓存。

    • 缓存的问题,缓存穿透和击穿。
  12. 缓存处理流程:

    1. 前台请求,后台先从缓存中取数据,取到直接返回结果。
    2. 取不到时从数据库中取,数据库取到更新缓存,并返回结果。
    3. 数据库也没取到,那直接返回空结果。

相关文章

  • Nginx+Redis+tomcat实现服务器集群和sessio

    Nginx+Redis+tomcat实现服务器集群和session共享 概念:概念:反向代理web服务器,作⽤于服...

  • A.13 springboot session

    1. 介绍 spirng session 支持的特性 集群 session。通常用于水平扩展后的集群 sessio...

  • 20171107 Tomcat(二)

    会话保持Tomcat ClusterTomcat实现会话粘滞Tomcat实现会话集群Tomcat实现会话服务器 一...

  • ?未解答疑问?

    websocket集群服务器怎么实现? 普通http集群实现的原理是session共享,但是ws连接好像不支持序列...

  • 谈大规模分布式系统的伸缩性架构

    要实现伸缩性架构,最重要的是使用集群,只要能做到向集群中加入服务器的数量和集群处理能力成正比,网站就能够无限增强处...

  • redis集群

    两台服务器实现 多节点集群server:192.168.142.136server:192.168.142.137...

  • XDH_LESSON6

    服务器集群搭建、管理与快速部署四台ubuntu虚拟机搭建集群服务器。什么叫服务器集群?服务器集群就是指将很多服务器...

  • k8s服务的暴露方式及区别

    环境:阿里云已经建好k8s 测试集群1,测试集群2测试集群1对应的服务器:A和B测试集群2对应的服务器:C和D 1...

  • centos7 ELK elastic stack elast

    docker 单服务器 elasticsearch集群docker 多服务器elasticsearch集群 服务器...

  • 高端java架构SpringBoot+高并发消息处理 EDM 项

    通过真实企业项目,掌握 JAVA 高并发、负载均衡、NoSQL、服务器集群、性能优化、数据库集群等架构师技能,实现...

网友评论

      本文标题:Nginx+Redis+tomcat实现服务器集群和sessio

      本文链接:https://www.haomeiwen.com/subject/cabpihtx.html