欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

nginx?sticky實現(xiàn)基于cookie負載均衡示例詳解

 更新時間:2022年12月20日 09:58:16   作者:Aska小強  
這篇文章主要為大家介紹了nginx?sticky實現(xiàn)基于cookie負載均衡示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

前言

sticky 是一個nginx的第三方模塊 它不在nginx發(fā)行版中 需要額外編譯這個模塊的, 它的思想就是不依靠后端生成cookie , 而是sticky在nginx這里生成cookie ,然后下發(fā)到客戶端, 客戶端收到cookie后 以后的請求帶著這個cookie 就會通過這個cookie 進行hash 被一直定位到后端的某一臺服務(wù)器了

優(yōu)點:

  • 它比純 ip hash 負載有個優(yōu)點就是 純 ip hash 像局域網(wǎng)內(nèi)的訪問ip 訪問會導致ip傾斜
  • 它比 hash $cookie_jsessionid的優(yōu)點就是 它不依賴后端 不用后端生成 session 從而減少后端的 資源

思考

想想為什么要用這個 sticky 來把用戶盡量一直定位到一臺服務(wù)器呢? 在多臺后臺服務(wù)器的環(huán)境下,我們?yōu)榱舜_保一個客戶只和一臺服務(wù)器通信,我們勢必使用長連接。使用什么方式來實現(xiàn)這種連接呢,常見的有使用nginx自帶的ip_hash來做,我想這絕對不是一個好的辦法,如果前端是CDN,或者說一個局域網(wǎng)的客戶同時訪問服務(wù)器,導致出現(xiàn)服務(wù)器分配不均衡,以及不能保證每次訪問都粘滯在同一臺服務(wù)器。

如果基于cookie會是一種什么情形,想想看, 每臺電腦都會有不同的cookie,在保持長連接的同時還保證了服務(wù)器的壓力均衡,nginx sticky值得推薦。

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

1.cookie_jsessionid 負載均衡

在說sticky 之前先來看看 nginx 通過 cookie_jessionid 的負載均衡方式

1.1 后端準備

@Autowired
lateinit var env: Environment
@GetMapping("/server")
fun server(request:HttpServletRequest):String {
  //獲取當前服務(wù)的端口
  val port = env.getProperty("local.server.port")
  println("now port: $port")
  //調(diào)用了request.getSession(true) 則會沒有session的時候創(chuàng)建session
  val session = request.getSession(true)
  val name = session.getAttribute("name")
  println("name: $name")
  if (name == null){
    session.setAttribute("name","johnny")
  }
  return "success"
}

1.2 hash $cookie_jsessionid;配置

在upstream 里面配置 hash 的方式 使用 cookie_jsessionid 去做hash

#user  nobody;
worker_processes  1;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;
    upstream backend {
        # 指定hash 方式是 cookie_jessionid nginx自帶的方式
        hash $cookie_jsessionid;
        server 172.16.225.1:8081;
			  server 172.16.225.1:8080;
    }
    server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            # 指定負載到后端upstream
	    			proxy_pass http://backend;  
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

可以看到 服務(wù)器下發(fā)了 cookie JSESSIONID 并且多次請求這個 都不會改變 因為nginx 根據(jù) JSESSIONID 它進行hash 每次都負載到同一臺后端服務(wù)器, 因為這個后端服務(wù)器已經(jīng)存在了 這個session 所以不會再次創(chuàng)建

可以看到 多次請求 都打到這個 8081 的后端服務(wù)了

2.nginx sticky 負載均衡

2.1 下載 sticky

Bitbucket

bitbucket.org/nginx-goodi…

2.2 重新編譯升級nginx

1)下載完成,放入服務(wù)器解壓,記住解壓的位置,后面要用

2)進入到nginx的安裝文件

3)配置nginx

tar -xvf nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d.tar.gz
mv nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d nginx-sticky
# 添加sticky 模塊
./configure \
--prefix=/usr/local/nginx \
--add-module=/opt/nginx-sticky

make 編譯的時候有可能會報錯

找到sticky剛剛的解壓目錄,進入修改文件 vim ngx_http_sticky_misc.c ,加入下面的頭文件

#include <openssl/sha.h> 
#include <openssl/md5.h>

再次make , 當然后面如果還報錯的話,openssl檢查是否安裝

apt-get install -y openssl 

2.3 upstream 配置 sticky

配置好后重啟nginx

  upstream backend {
        #hash $cookie_jsessionid;
        sticky; #指定使用 sticky 進行負載均衡
        server 172.16.225.1:8081;
				server 172.16.225.1:8080;
 }

2.4 修改后端不再創(chuàng)建session

此時后端不會創(chuàng)建session 也不會下發(fā)cookie jsessionid 了

@Autowired
lateinit var env: Environment
@GetMapping("/server")
fun server(request:HttpServletRequest):String {
    val port = env.getProperty("local.server.port")
    println("now port: $port")
    return "success"
}

2.5 再次 多次請求

可以看到stick 幫我們下發(fā)了 route 這個cookie , 并且這個不會變 默認關(guān)閉瀏覽器就會失效

可以看到請求還是只會落在一臺服務(wù)器上

3.sticky 其他用法

sticky [name=route] [domain=.foo.bar] [path=/] [expires=1h] [hash=index|md5|sha1] [no_fallback];

name: 可以為任何的string字符,默認是route

domain:哪些域名下可以使用這個cookie

path:哪些路徑對啟用sticky,例如path/test,那么只有test這個目錄才會使用sticky做負載均衡

expires:cookie過期時間,默認瀏覽器關(guān)閉就過期,也就是會話方式。

no_fallbackup:如果設(shè)置了這個,cookie對應(yīng)的服務(wù)器宕機了,那么將會返回502(bad gateway 或者 proxy error),建議不啟用

總結(jié)

本篇主要介紹了 nginx sticky 負載均衡,它不需要后端去生成session 下發(fā)jsessionid 而是nginx的sticky模塊幫我們?nèi)ハ掳l(fā)一個 route 的 cookie , nginx 使用這個cookie 進行hash 負載, 從而實現(xiàn)了 客戶每次訪問都粘滯在同一臺服務(wù)器

以上就是nginx sticky實現(xiàn)基于cookie負載均衡示例詳解的詳細內(nèi)容,更多關(guān)于nginx sticky cookie負載均衡的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Nginx中的主要應(yīng)用場景解讀

    Nginx中的主要應(yīng)用場景解讀

    這篇文章主要介紹了Nginx中的主要應(yīng)用場景解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Nginx訪問靜態(tài)資源配置的實現(xiàn)步驟

    Nginx訪問靜態(tài)資源配置的實現(xiàn)步驟

    Nginx 擅長于底層服務(wù)器端資源的處理,例如靜態(tài)資源處理轉(zhuǎn)發(fā)、反向代理,負載均衡等,本文主要介紹了Nginx訪問靜態(tài)資源配置的實現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • Nginx反代Mogilefs分布式儲存示例詳解

    Nginx反代Mogilefs分布式儲存示例詳解

    這篇文章主要給大家介紹了關(guān)于Nginx反代Mogilefs分布式儲存的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Nginx具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-11-11
  • nginx配置域名轉(zhuǎn)發(fā)到其他域名的幾種方法小結(jié)

    nginx配置域名轉(zhuǎn)發(fā)到其他域名的幾種方法小結(jié)

    本文主要介紹了nginx配置域名轉(zhuǎn)發(fā)到其他域名的幾種方法小結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • nginx完全卸載的方法步驟

    nginx完全卸載的方法步驟

    由于現(xiàn)在nginx有版本漏洞,所以很多安裝過nginx的需要卸載重新安裝,本文主要介紹了nginx完全卸載的方法步驟,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • 一篇文章快速掌握Nginx部署前端項目(Nginx安裝配置及部署都非常詳細!)

    一篇文章快速掌握Nginx部署前端項目(Nginx安裝配置及部署都非常詳細!)

    這篇文章主要給大家介紹了關(guān)于如何通過一篇文章快速掌握Nginx部署前端項目的相關(guān)資料,文中從Nginx安裝配置及部署都非常詳細哦,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2023-01-01
  • 為什么 Nginx 比 Apache 更牛

    為什么 Nginx 比 Apache 更牛

    為什么Nginx在處理高并發(fā)方面要優(yōu)于httpd,我們先從兩種web服務(wù)器的工作原理以及工作模式說起。對Nginx對比 Apache的相關(guān)知識感興趣的朋友跟隨小編一起看看吧
    2021-02-02
  • 詳解Nginx之Location配置(Location匹配順序)

    詳解Nginx之Location配置(Location匹配順序)

    這篇文章主要介紹了詳解Nginx之Location配置(Location匹配順序),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • nginx?反向代理負載均衡策略配置SSL訪問匹配規(guī)則優(yōu)先級

    nginx?反向代理負載均衡策略配置SSL訪問匹配規(guī)則優(yōu)先級

    本文主要包含1.Nginx配置文件詳解2.Nginx實現(xiàn)負載均衡3.Nginx前端項目部署4.Nginx配置SSL訪問5.nginx匹配規(guī)則說明以及匹配的優(yōu)先級的內(nèi)容詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • nginx配置PC站手機站分離實現(xiàn)重定向

    nginx配置PC站手機站分離實現(xiàn)重定向

    這篇文章主要介紹了nginx配置PC站手機站分離實現(xiàn)重定向,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03

最新評論