• nginx第三方模块---nginx-sticky-module的使用(基于cookie的会话保持)


    目前的项目网站架构中使用了F5和nginx,F5用来做负载均衡,nginx只用作反向代理服务器。最近应客户的要求准备去掉F5,使用软负载。大家都知道nginx抗并发能力强,又可以做负载均衡,而且使用nginx对我们目前的网站架构不会有大的变动,所以首选方案是nginx。但问题来了,nginx在会话保持这方面比较弱,用ip_hash做会话保持有很大的缺陷,它是通过客户端ip来实现,根据访问ip的hash结果分配请求到后端的app服务器,负载不会很均匀。之前在一个小项目前中使用过这种方法,已经得到验证。还有一个重要原因是我们的nginx不在最前端,所以只能放弃使用ip_hash。上网搜索了一番,知道了nginx-sticky-module这个第三方模块可以基于cookie实现会话保持,决定试试。

    一、平滑升级nginx,安装nginx-sticky-module

    模块下载地址:https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/get/master.tar.gz

    # tar zxf nginx-goodies-nginx-sticky-module-ng-1e96371de59f.tar.gz
    # mv nginx-goodies-nginx-sticky-module-ng-1e96371de59f nginx-sticky
    # tar zxf nginx-1.6.1.tar.gz
    # cd nginx-1.6.1
    # ./configure --prefix=/app/nginx --with-http_gzip_static_module --with-http_flv_module --with-http_dav_module --with-http_stub_status_module --with-http_realip_module --add-module=/app/soft/nginx-sticky/
    # make
    # cd /app/nginx/sbin
    # mv nginx nginx.old
    # cp /app/soft/nginx-1.6.1/objs/nginx ./
    # cd -
    # make upgrade

    二、生产服务器nginx关键配置如下:

    upstream my_upstream{
        sticky;
        server 10.20.35.11:8001;
        server 10.20.35.11:8002;
        server 10.20.35.11:8003;
        server 10.20.35.11:8004;
        server 10.20.35.11:8005;
        ....
    }
    
    server {
            listen       80;
            server_name  localhost;
            .....
    
            location ~/xxxxx/.*.jsp|do|htm$ {
                    proxy_pass      http://my_upstream;
                    .....
            } 
    }       

    测试环境验证通过,顺利上生产。最近搞活动,遇到一次访问高峰,4台nginx,单台并发连接数接近40000,截图一张,留作纪念~

  • 相关阅读:
    设备内核PROBE函数何时调用
    对象最小JAVA对象排序之获取最小负载数
    网页内容设置有用的meta设置解决网页内容不能适应某些浏览器宽度的问题
    定义提示【Cocos2DX 游戏引擎】常见错误备忘
    绑定列ORA24816: 在实际的 LONG 或 LOB 列之后提供了扩展的非 LONG 绑定数据
    PowerShell
    boot.ini 调试模式
    windbg远程调试
    TLogger日志类
    pageheap检查对操作错误
  • 原文地址:https://www.cnblogs.com/Eivll0m/p/4564873.html
Copyright © 2020-2023  润新知