關於Nginx負載均衡和共享session的問題

  負載均衡 (Load Balancing) 負載均衡建立在現有網絡結構之上,它提供了一種廉價有效透明的方法擴展網絡設備和服務器的帶寬、增加吞吐量、加強網絡數據處理能力、提高網絡的靈活性和可用性。

  nginx 可以按照輪詢、ip哈希、url哈希、權重等多種方式對後端服務器做負載均衡,負載均衡可以自動剔除掛掉的服務器。

  nginx 的 upstream目前支持 4 種方式的分配
  1)、輪詢(默認)每個請求按時間順序逐一分配到不同的後端服務器,如果後端服務器down掉,能自動剔除。
  2)、指定輪詢機率,weight和訪問比率成正比,用於後端服務器性能不均的情況。
  3)、每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個後端服務器,可以解決session的問題。
  4)、fair(第三方)按後端服務器的響應時間來分配請求,響應時間短的優先分配。
  5)、url_hash(第三方)
       
       配置:
  #在http節點裏添加
  #定義負載均衡設備的 Ip及設備狀態

  upstream www.abc.com{

     server 127.0.0.1:9090 down; 

     server 127.0.0.1:8080 weight=2; 

     server 127.0.0.1:6060; 

     server 127.0.0.1:7070 backup; 
     }

     proxy_pass www.abc.com

       upstream 每個設備的狀態:  
       down 表示單前的server暫時不參與負載
  weight 默認爲1.weight越大,負載的權重就越大。
  max_fails :允許請求失敗的次數默認爲1.當超過最大次數時,返回proxy_next_upstream 模塊定義的錯誤
  fail_timeout:max_fails 次失敗後,暫停的時間。
  backup: 其它所有的非backup機器down或者忙的時候,請求backup機器。所以這臺機器壓力會最輕。

負載均衡中實現多臺服務器之間的session的共享:
1、不使用session,使用cookie;因爲session的數據的存放在服務端,而cookie的數據存在客戶端的web瀏覽器
2、服務器間自動實現共享,例如將session保存在數據庫,但是會都數據庫造成一定的壓力。
        3、用memcached來保存,memcached是高性能的分佈式內存緩存服務器。 一般的使用目的是,通過緩存數據庫查詢結果,減少數據庫訪問次數,以提高動態Web應用的速度、 提高可擴展性。
4、ip_hash
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個後端服務器。ip_hash僅僅是根據ip來分配後端服務器,所以必須滿足以下的條件:a、naginx必須是最前端的服務器;b、nginx的後端不存在其他方式的負載均衡。不然很有可能客戶端不能定位到同一臺服務器,從而導致共享session失敗。
        5、url_hash 
按訪問url的hash結果來分配請求,使每個url定向到同一個後端服務器。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章