目前的项目网站架构中使用了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..tar.gz
# cd nginx-1.6.
# ./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./objs/nginx ./
# cd -
# make upgrade

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

upstream my_upstream{
    sticky;
    server 10.20.35.11:;
    server 10.20.35.11:;
    server 10.20.35.11:;
    server 10.20.35.11:;
    server 10.20.35.11:;
    ....
} server {
listen ;
server_name localhost;
..... location ~/xxxxx/.*\.jsp|do|htm$ {
proxy_pass http://my_upstream;
.....
}
}

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

nginx第三方模块---nginx-sticky-module的使用(基于cookie的会话保持)的更多相关文章

  1. 一些好用的nginx第三方模块

    一些好用的nginx第三方模块 转自;http://macken.iteye.com/blog/1963301  1.Development Kit https://github.com/simpl/ ...

  2. nginx第三方模块安装方法

    nginx第三方模块安装方法 ./configure --prefix=/你的安装目录 --add-module=/第三方模块目录 比如echo模块. 没安装前,使用测试. location /tes ...

  3. 如何安装nginx第三方模块

    nginx文件非常小但是性能非常的高效,这方面完胜apache,nginx文件小的一个原因之一是nginx自带的功能相对较少,好在nginx允许第三方模块,第三方模块使得nginx越发的强大. 在安装 ...

  4. Nginx 第三方模块的安装以及一致性哈希算法的使用

    Nginx 第三方模块的安装以及一致性哈希算法的使用 第三方模块安装方法总结: 以ngx_http_php_memcache_standard_balancer-master为例 1:解压 到 pat ...

  5. Nginx第三方模块Ngx-dyups安装过程

    Ngx-dyups是什么,能干什么 它是一个Nginx第三方动态Upstream配置模块,可以实现在不重启Nginx情况下动态更新反向代理Upstream表.该模块由淘宝开发团队维护,淘宝自家的Ten ...

  6. Python安装第三方模块出错 No module named setuptools

    在安装 zabbix-alerta 第三方模块时候报错 python setup.py install 此时需要安装 setuptools 模块, 这里用自动化脚本安装 wget https://bo ...

  7. Nginx 第三方模块-漫谈缘起

    http://www.cnblogs.com/yjf512/archive/2012/03/30/2424726.html http://chenxiaoyu.org/2011/10/30/nginx ...

  8. Nginx编译安装第三方模块http_substitutions_filter_module

    Nginx编译安装第三方模块http_substitutions_filter_module 分类:服务器技术  作者:rming  时间:-- . >>ngx_http_substitu ...

  9. nginx增加第三方模块

    增加第三方模块 ============================================================ 一.概述nginx文件非常小但是性能非常的高效,这方面完胜ap ...

随机推荐

  1. css培训(三)

    优先级 z-index 不设置 或auto   非static z-index :0 : z-index:-1: opacity 与层叠上下 opacity:.9 对其影响  小于1值   不具备堆叠 ...

  2. ASP.NET Boilerplate 工作单元

    从上往下说起,框架使用castle拦截器,拦截实现了IApplication.IRepository接口的所有方法,和使用了UnitOfWork 特性的方法,代码如下 internal class U ...

  3. Spire.Barcode好用的条码生在组件

    由于项目的需要,今天在网上找了一下条码的组件,发现了一个简单易用的组件,使用简单,几句代码就搞定了.

  4. Weex 标签控件

    1.滚动组件 <template> <scroller> <div repeat="{{list}}"> <text>{{name} ...

  5. asp.net手动填充TreeView生成树

    最近在做项目发现需要用到树的地方,页面的前台任然是使用一个asp.net的控件TreeView来显示树的结构,当然也可以自己在前台写一个树来展示,这在后期跟局功能的不同很大可能会要用到异步的知识,废话 ...

  6. startActivityForResult和setResult详解

    http://www.cnblogs.com/lijunamneg/archive/2013/02/05/2892616.html startActivityForResult与startActivi ...

  7. Android之如何混淆代码和相关配置

    昨天,客户想看一下目前项目开发到什么程度了,于是需要将项目签名打包成apk,结果打包的时候出错了,吃惊,什么情况.等成功打包以后,安装起来发现部分功能又报错了,囧,所幸最后还是解决了.在这里记录一下遇 ...

  8. Linq 调试

    void Main() { var MyMonitor = new Devart.Data.Oracle.OracleMonitor(); MyMonitor.IsActive = true; var ...

  9. js获取标签的几种方式

    一:id获取(全部浏览器兼容) document.getElementById(""); <body> <div id="box">&l ...

  10. objective-c相关知识点

    1,objective-c中实现线程同步: Mutexlock (互斥锁).NSCondition lock (条件锁)消息传送 2,UDP和TCP: TCP :传输控制协议,可以提供面向连接的.可靠 ...