zoukankan      html  css  js  c++  java
  • CentOS 7 nginx+tomcat9 session处理方案之session保持

    Session保持(会话保持)是我们见到最多的名词之一,通过会话保持,负载均衡进行请求分发的时候保证每个客户端固定的访问到后端的同一台应用服务器。会话保持方案在所有的负载均衡都有对应的实现。而且这是在负载均衡这一层就可以解决Session问题

    Nginx 做负载均衡的Session保持

    Nginx : 192.168.94.11(nginx)

    node1 : 192.168.94.22(tomcat)

    node2 : 192.168.94.33(tomcat)

    关闭SElinx和防火墙

    安装nginx

    [root@nginx ~]# wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.14.0-1.el7_4.ngx.x86_64.rpm
    [root@nginx ~]# yum -y install pcre-devel zlib-devel openssl-devel
    [root@nginx ~]# rpm -i nginx-1.14.0-1.el7_4.ngx.x86_64.rpm
    [root@nginx ~]# vim /etc/nginx/nginx.conf    # 修改配置文件 添加以下内容
    
        upstream tomcat {
        ip_hash;
            server 192.168.94.22:8080;
            server 192.168.94.33:8080;
                        
        }   
    
        server {
            listen 80; 
                server_name 192.168.94.11:80;                                              
                    location / { 
                       proxy_pass http://tomcat;
                       proxy_set_header X-Real-IP $remote_addr;
                                            
                    }   
    [root@nginx ~]# systemctl restart nginx

    CentOS 7 配置Tomcat  有Tomcat的安装方法

    配置tomcat

    编写测试页面

    [root@node1 ~]# vim /usr/local/tomcat/webapps/ROOT/s.jsp
    Session ID:<%= session.getId() %><BR>          # 显示session ID                                       
    SessionPort:<%= request.getServerPort() %>   # 显示端口
    <% out.println("This tomcat server 192.168.94.22");%>    # IP自己修改
    
    [root@node2 ~]# vim /usr/local/tomcat/webapps/ROOT/s.jsp
    Session ID:<%= session.getId() %><BR>                                                        
    SessionPort:<%= request.getServerPort() %>
    <% out.println("This tomcat server 192.168.94.33");%>
    [root@node1 ~]# /usr/local/tomcat/bin/startup.sh 
    Using CATALINA_BASE:   /usr/local/tomcat
    Using CATALINA_HOME:   /usr/local/tomcat
    Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    Using JRE_HOME:        /usr/local/jdk10
    Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    Tomcat started.
    [root@node2 ~]# /usr/local/tomcat/bin/startup.sh 
    Using CATALINA_BASE:   /usr/local/tomcat
    Using CATALINA_HOME:   /usr/local/tomcat
    Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    Using JRE_HOME:        /usr/local/jdk10
    Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    Tomcat started.

    测试

    浏览器访问测试 http://192.168.94.22:8080/s.jsp 刷新后 session ID 未发生变化 

     

    浏览器访问测试 http://192.168.94.33:8080/s.jsp 刷新后 session ID 未发生变化 

     

    浏览器访问测试 http://192.168.94.11/s.jsp 刷新后 session ID 未发生变化 

     

     停止node2

    [root@node2 ~]# /usr/local/tomcat/bin/shutdown.sh 
    Using CATALINA_BASE:   /usr/local/tomcat
    Using CATALINA_HOME:   /usr/local/tomcat
    Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    Using JRE_HOME:        /usr/local/jdk10
    Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED

    访问192.168.94.11/s.jsp  分配到node1 刷新后服务器未发生变化

    会话保持的缺点:

    会话保持看似解决了Session同步的问题,但是却带来的一些其它方面的问题:

    负载不均衡了:由于使用了Session保持,很显然就无法保证负载绝对的均衡

    没有彻底解决问题:如果后端有服务器宕机,那么这台服务器的Session丢失,被分配到这台服务请求的用户还是需要重新登录

    --求知若饥 虚心若愚
  • 相关阅读:
    树莓派2 安装mono3.0运行mvc4
    iis认证方式
    Zabbix 4.0 配置邮件报警功能
    poj3276 Face The Right Way
    jeecg bootstrap框架 构造下拉列表,当选中的值改变时,自动填充其关联控件的值
    JavaFX 构造具有勾选框 checkbox 的树 TreeView
    初学Spring Boot 无法加载主类的错误和 Tomcat 无法启动的问题
    C#ORM中的对象映射
    OpenXML性能真的低下吗?
    IIR滤波器软件实现(Matlab+C++)
  • 原文地址:https://www.cnblogs.com/bigdevilking/p/9393770.html
Copyright © 2011-2022 走看看