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,截圖一張,留作紀念~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM