#什麼是sticky?# 為了理解sticky的工作原理,我們可以先考慮乙個問題:負載均衡怎麼做?
dns解析,在網域名稱解析時分配給不同的伺服器ip;
ip hash,根據客戶端的ip,將請求分配到不同的伺服器上;
cookie,伺服器給客戶端下發乙個cookie,具有特定cookie的請求會分配給它的發行者。
sticky就是基於cookie的一種負載均衡解決方案,通過cookie實現客戶端與後端伺服器的會話保持, 在一定條件下可以保證同乙個客戶端訪問的都是同乙個後端伺服器。請求來了,伺服器發個cookie,並說:下次來帶上,直接來找我。
為方便敘述,文中的cookie都指sticky使用的cookie。
#sticky工作原理 sticky是nginx的乙個模組,通過分發和識別cookie,來使同乙個客戶端的請求落在同一臺伺服器上。sticky的處理過程如下(假設cookie名稱為route):
1.客戶端首次發起請求,請求頭未帶route的cookie。nginx接收請求,發現請求頭沒有route,則以輪詢方式將請求分配給後端伺服器。
2.後端伺服器處理完請求,將響應頭和內容返回給nginx。
3.nginx生成route的cookie,返回給客戶端。route的值與後端伺服器對應,可能是明文,也可能是md5、sha1等hash值。
4.客戶端接收請求,並建立route的cookie。
5.客戶端再次傳送請求時,帶上route。
6.nginx接收到route,直接轉給對應的後端伺服器。
解壓:
tar -xzvf nginx-sticky-module-1.1.tar.gz
進入nginx-1.9.3目錄
編譯時出現錯誤:
/ngx_http_sticky_module.c:333: 警告:賦值時將整數賦給指標,未作型別轉換
ake[1]: *** [objs/addon/nginx-sticky-module-1.1/ngx_http_sticky_module.o] 錯誤 1
根據資料 把ngx_http_sticky_misc.c 的281行修改如下
原digest->len = ngx_sock_ntop(in,digest->data, len, 1);
改後digest->len = ngx_sock_ntop(in,sizeof(struct sockaddr_in),digest
第6行新增:#解壓後,直接複製以下的檔案到目錄/usr/local/nginx-sticky-module-1.1/,將舊的檔案覆蓋#include
第340行左右修改(iphp->rrp.current = iphp->selected_peer;)為:
#if defined(nginx_version) && nginx_version >= 1009000
iphp->rrp.current = peer;
#else
iphp->rrp.current = iphp->selected_peer;
#endif
#sticky模組 直接用配置好模板
簡述hdfs工作原理 HDFS的工作原理
hdfs 的工作原理 hadoop 分布式檔案系統 hdfs 是一種被設計成適合執行在通用硬體上的分布式檔案系統。hdfs 是乙個高度容錯性的系統,適合部署在廉價的 機器上。它能提供高吞吐量的資料訪問,非常適合大規模資料集上的應用。要理解 hdfs 的內部工作原理,首先要理解什麼是分布式 檔案系統。...
mysql nfs原理 nfs工作原理
nfs其最大功能時可以通過網路讓不同作業系統的計算機可以共享資料,所以也可以將其看作時一台檔案伺服器.nfs有屬於自己的協議與使用的埠號,但是在傳送資料或者其他相關資訊時候,nfs伺服器使用乙個稱i 遠端過程呼叫 rpc 的協議來協助nfs伺服器本身的執行 nfs協議 使用nfs,客戶端可以透明地訪...
ajax工作原理,Jsonp原理
ajax工作原理是 相當於在使用者和伺服器之間加了 個中間層 ajax引擎 使使用者操作與伺服器響應非同步化。對於使用者請求ajax引擎會做一些資料驗證和資料處理,不是所有請求都提交給伺服器,當需要從伺服器讀取新資料時由ajax引擎代為向伺服器提交請求。ajax最大優點就是不重新整理整個頁面的前提下...