日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
使用Nginxsticky模塊實現(xiàn)基于cookie的負(fù)載均衡

在多臺后臺服務(wù)器的環(huán)境下,我們?yōu)榱舜_保一個客戶只和一臺服務(wù)器通信,我們勢必使用長連接。使用什么方式來實現(xiàn)這種連接呢,常見的有使用Nginx 自帶的ip_hash來做,我想這絕對不是一個好的辦法,如果前端是CDN,或者說一個局域網(wǎng)的客戶同時訪問服務(wù)器,導(dǎo)致出現(xiàn)服務(wù)器分配不均衡,以及不能 保證每次訪問都粘滯在同一臺服務(wù)器。如果基于cookie會是一種什么情形,想想看, 每臺電腦都會有不同的cookie,在保持長連接的同時還保證了服務(wù)器的壓力均衡,Nginx sticky值得推薦。

“只有客戶發(fā)展了,才有我們的生存與發(fā)展!”這是成都創(chuàng)新互聯(lián)的服務(wù)宗旨!把網(wǎng)站當(dāng)作互聯(lián)網(wǎng)產(chǎn)品,產(chǎn)品思維更注重全局思維、需求分析和迭代思維,在網(wǎng)站建設(shè)中就是為了建設(shè)一個不僅審美在線,而且實用性極高的網(wǎng)站。創(chuàng)新互聯(lián)對成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)站開發(fā)、網(wǎng)頁設(shè)計、網(wǎng)站優(yōu)化、網(wǎng)絡(luò)推廣、探索永無止境。

如果瀏覽器不支持cookie,那么sticky不生效,畢竟整個模塊是給予cookie實現(xiàn)的.

1、Nginx sticky 模塊工作流程圖

 
Nginx sticky

2、下載安裝nginx sticky

下載地址:http://code.google.com/p/nginx-sticky-module/downloads/list
目前共有2個版本,一個是1.0,一個是1.1,1.0已經(jīng)壽終正寢了.1.1增加了權(quán)重的參數(shù).

安裝Nginx + sticky模塊

 
 
 
 
  1. # wget http://nginx-sticky-module.googlecode.com/files/nginx-sticky-module-1.1.tar.gz
  2. # tar -xzvf nginx-sticky-module-1.1.tar.gz
  3. # wget http://nginx.org/download/nginx-1.0.6.tar.gz
  4. # tar -czvf nginx-1.0.6
  5. # cd nginx-1.0.6
  6. # ./configure --prefix=/usr/local/nginx-1.0.6 --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --add-module=../nginx-sticky-module-1.1
  7. # make
  8. # make install

3、配置Nginx sticky

nginx 的upstream使用sticky,如下

 
 
 
 
  1. upstream cluster_test {
  2.      sticky;
  3.      server 192.168.100.209:80;
  4.      server 192.168.100.225:80;
  5. }

配置虛擬主機(以下有配置的可以忽略掉)

 
 
 
 
  1. server {
  2.         listen        80;
  3.         server_name     test.ttlsa.com;
  4.         index index.jsp;
  5.         access_log /data/logs/nginx/test.ttlsa.com_access.log main;
  6.         set $proxy_pass cluster_test;
  7.         location /
  8.         {
  9.                 proxy_pass http://$proxy_pass;
  10.                 include proxy.conf;
  11.                 add_header Cache-Control no-store;
  12.         }
  13. }

備注:

Nginx和Apache不同,Nginx每次安裝一個新的模塊都需要重新編譯一次,編譯完成之后將Nginx這一個文件拷貝到sbin下面即可.我這邊 全新安裝一次,因為公司在兩年前就選擇了這個Nginx版本,也沒打算去換,所以大家可以把Nginx換成自己最合適的一個版本,不用完全跟著文章來安 裝。

4、重啟Nginx

 
 
 
 
  1. /usr/local/nginx-1.0.6/sbin/nginx -t
  2. /usr/local/nginx-1.0.6/sbin/nginx -s reload

#p#

5、測試Nginx sticky

我 后端是兩臺tomcat服務(wù)器,每臺服務(wù)器的JESSIONED值都有特殊的標(biāo)志。比如209這臺是s209,225這臺是s225.打開頁面,不管怎么 刷新JESSIONED值都是不變.但是如果開啟了sticky,可以看到JESSIONED值不會發(fā)生變化.死死的粘滯在其中一臺服務(wù)器上.測試圖如 下:

使用sticky的情況下,不管怎么刷新都是下面圖

 
Nginx sticky 模塊

不使用Nginx sticky模塊,多刷幾次就變了(有時候刷一次,有時候多刷幾次,看概率,不過肯定會變),如下圖

 
Nginx sticky 模塊

備注:每臺后端真實服務(wù)器都會有一個唯一的route值,所以不管你真實服務(wù)器前端有幾個裝了sticky的nginx代理,他都是不會變化的. 這個cookie是會話方式的,所以你瀏覽器關(guān)閉了,服務(wù)器會給你重新分配一臺服務(wù)器。

6、Nginx sticky其他語法

 
 
 
 
  1. sticky [name=route] [domain=.foo.bar] [path=/] [expires=1h] [hash=index|md5|sha1] [no_fallback];
  2. name: 可以為任何的string字符,默認(rèn)是route
  3. domain:哪些域名下可以使用這個cookie
  4. path:哪些路徑對啟用sticky,例如path/test,那么只有test這個目錄才會使用sticky做負(fù)載均衡
  5. expires:cookie過期時間,默認(rèn)瀏覽器關(guān)閉就過期,也就是會話方式。
  6. no_fallbackup:如果設(shè)置了這個,cookie對應(yīng)的服務(wù)器宕機了,那么將會返回502(bad gateway 或者 proxy error),建議不啟用

7、Nginx sticky expires用法

 
 
 
 
  1. upstream cluster_test {
  2.      sticky expires=1h;
  3.      server 192.168.100.209:80;
  4.      server 192.168.100.225:80;
  5. }

啟用了過期,cookie如下截圖,cookie1個小時才過期

Nginx sticky expire用法

如下是不啟用過期

Nginx sticky 不啟用expire

8、Nginx sticky使用注意事項

Nginx sticky模塊不能與ip_hash同時使用

官方文檔:http://code.google.com/p/nginx-sticky-module/wiki/Documentation

淘寶sticky:http://tengine.taobao.org/document_cn/http_upstream_session_sticky_cn.html(謝謝shudu)


本文名稱:使用Nginxsticky模塊實現(xiàn)基于cookie的負(fù)載均衡
分享鏈接:http://m.5511xx.com/article/cospspd.html