1. 程式人生 > >Nginx做負載均衡時session共享問題詳解

Nginx做負載均衡時session共享問題詳解

壓縮 多臺 nts 獲得 hash 常見 hub img font

用nginx做負載均衡時,同一個IP訪問同一個頁面會被分配到不同的服務器上,如果session不同步的話,就會出現很多問題,比如說最常見的登錄狀態。

再者Nginx連接Memcached集群時,Nignx的請求從memcached服務器中根據key獲得了value則直接返回value,如果沒有獲得到value則去MySQL中查詢再返回。

location  /  {
    set $memcached_key  "$request_uri";  #設置請求memcached服務器的key
    memcached_pass  127.0.0.1:11211;
    error_page  404  502  504  /callback.do;  #設置回調函數查詢數據庫
}

技術分享

多臺memcached服務器,如何保持NginxJavamemcached同步?

session是存放在服務器上的,session共享問題怎麽解決?

解決方案

1、參閱:http://blog.csdn.net/xluren/article/details/16951247

2、使用第三方模塊ngx_http_consistent_hash通過一致性哈希算法來選擇合適的後端節點。

Nginx的ngx_http_consistent_hash模塊的官網使用文檔:https://www.nginx.com/resources/wiki/modules/consistent_hash/

  技術分享

  下載地址 https://github.com/replay/ngx_http_consistent_hash

  下載:技術分享

  解壓縮:技術分享

  編譯安裝到Nginx:

    技術分享

    技術分享

    技術分享

    技術分享 關掉Nginx

    技術分享

  Nginx.conf配置:   

worker_processes  1;  
  
events {  
    worker_connections  1024;  
}  
   
http {  
    upstream servers {  
        consistent_hash $request_uri;  
        server 192.168.1.86:80;  
        server 192.168.1.88:80;  
    }  
  
    server {  
        listen 80;  
        server_name localhost;  
        location / {  
             proxy_pass http://servers;  
       }  
    }  
}

Nginx做負載均衡時session共享問題詳解