使用Nginx爲HTTP服務做負載均衡

      介紹
      首先要介紹的就是什麼是負載均衡。
      衆所周知一個互聯網應用必須能承受大量的併發訪問,而再好的服務器也無法做到可以承受無限制增長的併發訪問量,並提供優秀的容錯機制。於是“集羣”這一概念就應運而生,所謂“集羣”,簡單點來說就是使用N個廉價的PC機共同作爲服務器使用,從而達到降低成本、提高容錯率等效果。(本文不再詳細贅述)
      而既然使用集羣,那麼就必然要面臨一個問題——當服務端接收到一個請求的時候,我該安排哪個服務器爲其服務呢?我是應該挑選空閒的服務器爲其服務還是選用性能優秀的服務器?或者使用它之前就訪問過的服務器來提高緩存的命中率?這一系列的問題就是著名的“負載均衡”,本文就將隆重介紹高性能負載均衡服務器Nginx。
     負載均衡算法
      下面就簡單介紹幾種負載均衡的算法:
  1.        輪詢法   ——    輪詢使用所有掛載在代理服務器下的服務實例,爲請求提供服務。
  2.        最少連接數法  ——  每次接收請求以後都自動尋找當前連接數最少的服務器爲其服務。
  3.        ip 哈希法   ——   建立一個合適的哈希算法,通過請求者的ip對服務器進行映射,選取被映射到的服務器爲其服務,這樣可以保證每個ip都是由一個與它對應的服務器服務。
        下面就介紹負載均衡算法如何在Nginx中配置
默認的負載均衡配置
      
     
http {
    upstream myapp1 {
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://myapp1;
        }
    }
}
上面就是最簡單的負載均衡配置,在這樣的配置下,默認使用的負載均衡算法就是輪詢法。代理端口爲80,一共代理srv1、srv2、srv3三個服務器。意思就是請求只需要訪問該機器的80端口,Nginx就會自動將請求轉發到所配置的三個服務器下面,選擇服務器的算法就是輪詢法。
最少連接數算法
     
upstream myapp1 {
        least_conn;
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
    }
若要使用最小連接數算法,只需要在最上面添上“least_conn” 即可。

ip哈希法
   
upstream myapp1 {
    ip_hash;
    server srv1.example.com;
    server srv2.example.com;
    server srv3.example.com;
}
    與最少連接數法類似,只需在配置中添加"ip_hash" 即可使用ip哈希算法做負載均衡。


    權重法
   最後再介紹一種負載均衡算法——權重法。配置如下:
   
upstream myapp1 {
        server srv1.example.com weight=3;
        server srv2.example.com;
        server srv3.example.com;
    }
如上所示,只需在服務器的後面添加“weiht=x”即可奉陪某個服務器的權重(默認是1)。上述配置的作用就是如果有5個請求,那麼srv1將會處理3個,其它各處理1個。
   
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章