sticky模塊與Ip_hash都是與負載均衡算法相關,但又有差異,差異是nginx
Sticky是基於cookie的一種負載均衡解決方案,經過分發和識別cookie,使來自同一個客戶端的請求落在同一臺服務器上,默認cookie標識名爲route :面試
官方地址:bitbucket.org/nginx-goodi… 下載地址:bitbucket.org/nginx-goodi…算法
若是你尚未部署Nginx,那麼就在部署Nginx的時候進行 --add-module 添加上此模塊就好了,我這裏是Nginx已經安裝過了,須要再把此模塊加載進NGINX後端
1.下載sticky安全
wget https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/get/master.tar.gz
tar xf master.tar.gz
#把此模塊放進nginx/module目錄下,名稱太長,重命名一下
mkdir /usr/local/nginx/module
mv nginx-goodies-nginx-sticky-module-ng-08a395c66e42 /usr/local/nginx/module/nginx-sticky-module
複製代碼
2.從新編譯NGINX 下載一個NGINX後從新解壓,而後看以前NGINX編譯了那些模塊,這裏都給加上,在最後加上 --add-module載入sticky模塊bash
tar xf nginx-1.16.1.tar.gz
cd nginx-1.16.1
./configure --prefix=/usr/local/nginx \
--sbin-path=/usr/local/nginx/sbin/nginx \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--pid-path=/usr/local/nginx/run/nginx.pid \
--error-log-path=/usr/local/nginx/logs/error.log \
--http-log-path=/usr/local/nginx/logs/access.log \
--with-pcre \
--user=nginx \
--group=nginx \
--with-stream \
--with-threads \
--with-file-aio \
--with-http_v2_module \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--add-module=/usr/local/nginx/module/nginx-sticky-module #在此載入sticky模塊
#./configure完後進行編譯,而後更換 nginx 程序
make
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
cp -rf objs/nginx /usr/local/nginx/sbin/
#最後再 make upgrade 進行更新檢測
[root@nginx_proxy02 nginx-1.16.1]# make upgrade
/usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
kill -USR2 `cat /usr/local/nginx/run/nginx.pid`
sleep 1
test -f /usr/local/nginx/run/nginx.pid.oldbin
kill -QUIT `cat /usr/local/nginx/run/nginx.pid.oldbin`
複製代碼
以上就完成了Nginx載入第三方模塊,使用 nginx -V 來查看是否載入成功 服務器
3.修改NGINX配置文件 修改NGINX配置文件來啓用stickymarkdown
upstream backend {
sticky name=ngx_cookie expires=6h;
server 192.168.31.240:8080 weight=3 max_fails=3 fail_timeout=10s;
server 192.168.31.241:8080 weight=3 max_fails=3 fail_timeout=10s;
server 192.168.31.242:8080 weight=6 max_fails=3 fail_timeout=10s;
server 192.168.31.243:8080;
server 192.168.31.244:8080 down;
}
複製代碼
mkdir /usr/local/nginx/ngx_cookie
複製代碼
4.sticky語法解析cookie
指令 | 描述 |
---|---|
name | 設置記錄cookie的名稱(可自定義),默認爲route |
domain | 設置cookie要使用的域名 |
path | 設置cookie做用的URL路徑,默認根目錄 |
expires | 設置cookie的生存期 |
hash | 值爲 index、md五、sha1,對應明文、md五、和sha1,默認md5,測試sha1後端服務器會變 |
no_fallback | 當sticky的後端機器掛了之後,nginx返回502,而不轉發到其餘服務器,不建議設置 |
secure | 設置啓用安全的cookie,須要HTTPS支持 |
httponly | 容許cookie不經過JS泄漏 |
**5.重啓NGINX **架構
/usr/local/nginx/sbin/nginx -s reload
複製代碼
第一次訪問的時候是沒有Cookie的,訪問完成後NGINX纔會把Cookie包含在返回的數據中,在下次請求數據的時候就會出現Cookie。 因此刷新一下後才能看到Cookie。
※更多文章和資料|點擊後方文字直達 ↓↓↓ 100GPython自學資料包 阿里雲K8s實戰手冊 [阿里雲CDN排坑指南]CDN ECS運維指南 DevOps實踐手冊 Hadoop大數據實戰手冊 Knative雲原生應用開發指南 OSS 運維實戰手冊 雲原生架構白皮書 Zabbix企業級分佈式監控系統源碼文檔 雲原生基礎入門手冊 10G大廠面試題戳領