• Web应用优化之nginx+tomcat集群配置+redis管理session


    1.nginx的安装

    从官网下载一个nginx事务tar.gz版本,centos系统,安装好jdk

    第一步解压

    第二步:解压完成进入解压目录,执行./configure命令

    需要安装gcc编译和pcre库,zlib库

    yum -y install gcc

    yum install pcre-devel

    yum install zlib-devel

    ./configure完成后执行make install即可安装成功

    2.集群配置流程

    一、克隆2台CentOS虚拟机,并安装jdk+tomcat

    二、安装1台CentOS虚拟机,并安装nginx(过程参见nginx安装流程.png) nginx的默认安装位置:/usr/local/nginx

    1 启动nginx:
    ./nginx 使用默认配置文件(/usr/local/nginx/conf/nginx.conf)

    ./nginx -c /x/xx/xxx/nginx.conf  

    2 测试
    http://ip:80 或 http://ip   (nginx的默认端口80)

    3 关闭
    ./nginx -s stop

    4 重启
    ./nginx -s reload

    5 查看线程
    ps -ef | grep nginx   (查询主进程号)
    kill -9 主进程号     (强制关闭)

    三、配置集群环境 1 修改nginx的配置文件(默认位置:/usr/local/nginx/conf/nginx.conf)

    1> 配置tomcat集群节点 在http节点内部,server节点外部 upstream tomcat-servers { server 192.168.1.103:8080; server 192.168.1.104:8080; }

    2> 配置反向代理 在server节点内部:



        1 修改nginx的配置文件(默认位置:/usr/local/nginx/conf/nginx.conf)
            1> 配置tomcat集群节点
                在http节点内部,server节点外部
                upstream tomcat-servers {
                    server 192.168.1.103:8080;
                    server 192.168.1.104:8080;
                }
            2> 配置反向代理
                在server节点内部:
                location / {
                    proxy_pass http://tomcat-servers;
                    proxy_redirect    off;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header Host $http_host;
                    proxy_next_upstream http_502 http_504 error timeout invalid_header;
                }
        2 启动所有tomcat节点,启动nginx,测试

    1 默认:轮循
            upstream tomcat-servers {
                server 192.168.1.103:8080;
                server 192.168.1.104:8080;
            }
        2 iphash:基于ip   
            upstream tomcat-servers {
                ip_hash;
                server 192.168.1.103:8080;
                server 192.168.1.104:8080;
            }
        3 weight:权重轮询
            upstream tomcat-servers {
                server 192.168.1.103:8080 weight=1;
                server 192.168.1.104:8080 weight=2;
            }

     

     

    ip_hash方式,一定程度上解决了负载均衡情况下session不一致,此时访问session会发生黏着,基于Tomcat ip的黏着状态;但如果此ip的Tomcat发生宕机,则负载均衡继续进行,seever切换后导致session会话再次丢失

    session复制 造成空间浪费,也不合适

    redis提供session共享 √

    思路:redis的key是sessionid 值为session序列化的String

    准备:jar包:commons-pool2-2.2.jar, jedis 2.8.jar,tomcat-redis-session-manage-tomcat7.jar

    1.在tomcat的lib中引入:
        tomcat-redis-session-manage-tomcat7.jar
        jedis-2.8.1.jar
        commons-pool2-2.2.jar
        
    2.在tomcat的context.xml中添加:
        <!--  配置session由redis管理,并指定redis的ip和port -->
        <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve"/>
        <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
            host = "192.168.0.203"  #redis服务器ip
            port="7000"  
            database="0"/>#redis的库

  • 相关阅读:
    培训第一天
    jQuery日期时间控件
    java.lang.ExceptionInInitializerError
    j2ee 获取上下文环境
    BeanUtil.ConversionException
    Python3.x和Python2.x的区别
    Apache开启伪静态
    总结
    常用的视频网站
    lua语言萌新之路
  • 原文地址:https://www.cnblogs.com/lhc-hhh/p/10284819.html
Copyright © 2020-2023  润新知