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


用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;  
       }  
    }  
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM