一、負載均衡
負載均衡就是將負載(工作任務,訪問請求)進行平衡、分攤到多個操作單元(服務器,組件)上進行執行。是解決高性能,單點故障(高可用),擴展性(水平伸縮)的終極解決方案。
二、反向代理與正向代理
反向代理:代理的是服務器端
正向代理:代理的是客戶端
三、負載均衡策略
(一)輪詢(默認)。每個請求,按時間順序逐一分配到不同的后端應用服務器節點,如果后端服務出現故障,nginx能夠自動剔除該節點。如:
1、在server模塊中,配置nginx地址、端口以及負載服務。
2、在http中,server模塊外,進行負載均衡負載服務器輪詢配置
(二)權重,weight。默認為1,權重越高,被分配的客戶端越多,用於后端服務器性能不均的情況。如:
(三)ip_hash。獲取每個訪問的IP,根據hash計算結果分配,每個訪訪客固定訪問一個后端服務器,可以解決session丟失問題,但也可能導致部分服務器超負荷。但可以與weight配合使用。如:
(四)least_conn,連接數最少的分配。可以與weight配合使用
四、其他關鍵字配置
backup和down。
backup,標記當前server為預留的備用服務器,當所有應用服務器均停止服務時,才會啟用被backup標記的服務器,適用於熱更新的情況(一般先更新備份服務器,然后關停部分服務器,更新關停的部分服務器,再關閉剩下的服務器同時啟動更新完的應用服務器)
down,標記表示改server當前不參與提供負載均衡服務,比較適用於對服務器進行維護的情況。
如:
max_fails和 fail_timeout,默認1次,10秒。一般建議設置為10次,60秒。(簡單的理解:在周期內,連接失敗次數達到最大次數,則判斷為節點不可用,將請求轉交給下個節點處理,等下一個周期再次去請求)
這個是Nginx在負載均衡功能中,用於判斷后端節點狀態,所用到兩個參數。
Nginx基於連接探測,如果發現后端異常,在單位周期為fail_timeout設置的時間中達到max_fails次數,這個周期次數內,如果后端同一個節點不可用,那么接將把節點標記為不可用,並等待下一個周期(同樣時常為fail_timeout)再一次去請求,判斷是否連接是否成功。
Nginx只有當有訪問時后,才發起對后端節點探測。如果本次請求中,節點正好出現故障,Nginx將把請求轉交給接下來的節點處理。所以不會影響到這次請求的正常進行。