nginx應該是現在最火的web和反向**伺服器,沒有之一。她是一款誕生於俄羅斯的高效能web伺服器,尤其是在高併發的情況下,相較於apache,有優異的表現。那除了負載均衡,她還有什麼其他的用途呢。
nginx擅長處理靜態檔案,是非常好的、檔案伺服器。把所有的靜態資源放到nginx上,可以使應用動靜分離,效能更好。
nginx通過反向**可以實現服務的負載均衡,避免了伺服器單節點故障,把請求按照一定的策略**到不同的伺服器上,達到負載均衡的效果。
常用的負載均衡策略有
1輪詢將請求按順序輪流地分配到後端伺服器上,它均衡地對待後端的每一台伺服器,而不關心伺服器實際的連線數和當前的系統負載。
2加權輪詢
不同的後端伺服器可能機器的配置和當前系統的負載並不相同,因此他們的抗壓能力也不同。給配置高的機器配置更高的權重,讓其處理更多的請求,而配置低、負載高的機器,給其分配較低的權重,降低其系統負載,加權輪詢能很好的處理這一問題,並將請求順序按照權重分配到後端伺服器上。
3ip_hash(源位址雜湊法)
根據獲取客戶端的ip位址,通過雜湊函式計算得到乙個數值,用該數值對伺服器列表的大小進行取模運算,得到的結果便是客戶端要訪問伺服器的序號。採用源位址雜湊法進行負載均衡,同乙個ip位址的客戶端,當後端伺服器列表不變時,它每次都會對映到同一台後端伺服器進行訪問。
4隨機通過系統的隨機演算法,根據後端伺服器的列表大小值來隨機選取其中的一台伺服器進行訪問。
5least_conn(最小連線數法)
由於後端伺服器的配置不盡相同,對於請求的處理有快有慢,最小連線數法根據後端伺服器當前的連線情況,動態地選取其中當前積壓連線數最小的一台伺服器來處理當前的請求,盡可能的提高後端服務的利用效率,將負責合理地分流到每一台伺服器上。
nginx的限流模組,是基於漏桶演算法實現的,在高併發的場景下非常實用。
limit_req_zone $binary_remote_addr zone=mylinit:10m rate=100r/s
location /service2
1配置引數
limit_req_zone 定義在http模組中,$binary-remote_addr表示儲存客戶端ip位址的二進位制形式。zone定義ip狀態及url訪問頻率的共享記憶體區域。zone=keyword標識區域的名字,以及冒號後面跟區域大小。16000個ip位址的狀態資訊約1mb,所以示例中區域可以儲存16000個ip位址。rate定義最大請求速率,示例中速率不能超過每秒100個請求。
2設定限流
burst排隊大小,nodelay不限制單個請求間的時間。
1瀏覽器快取,靜態資源快取用expire
2**層快取
1不限流白名單
2黑名單
nginx用途 負載均衡
負載均衡 個人理解即是,在集群環境下,把伺服器的壓力平均分攤到不同的伺服器,盡量不讓其中某一台伺服器的壓力特別大,其他伺服器卻比較小,這樣伺服器集群的穩定性不夠高。這裡,我們啟動兩台tomcat伺服器來進行測試。tomcat1埠為8080,tomcat埠號為8081 修改預設首頁內容 vi inde...
nginx 負載均衡演算法
1 輪詢 就是按照時間順序分配下乙個請求的伺服器。2 權值輪詢 給每乙個伺服器加上權值,權值和分配的請求成正比,比較適應於伺服器配置不均的情況。upstream backend 3 ip雜湊 根據ip的雜湊值分配,這樣每個ip每次訪問的伺服器都相同,這樣session的處理會容易些。upstream...
Nginx 負載均衡演算法
1 輪詢 預設 每個請求按順序逐一分配到不同的伺服器,如果某台伺服器宕機,自動剔除故障系統,整個服務保證可用 2 weight 輪詢加權 weight的值越大分配到的訪問概率越高 upstream bakend 3 ip hash 每個請求按訪問ip的雜湊結果分配,使來自同乙個ip的訪客固定訪問一台...