Nginx實現動態負載均衡

2021-09-23 14:17:25 字數 1367 閱讀 5796

1、基於輪詢方式

輪詢是最基本的配置方法,它是upstream模組預設的負載均衡預設策略。每個請求會按時間順序逐一分配到不同的後端伺服器。

2、依據ip(ip_hash)分配

指定負載均衡器按照基於客戶端ip的分配方式,這個方法確保了相同的客戶端的請求一直傳送到相同的伺服器,以保證session會話。這樣每個訪客都固定訪問乙個後端伺服器,可以解決session不能跨伺服器的問題。

3、基於權重(weight)分配

每個upstream下服務會有乙個權重(weight)配置,這個權重就是請求派發的概率,權重越大請求派發給服務的機會越大,可以根據服務資源情況分配權重。

4、最少連線(least_conn)方式

把請求**給連線數較少的後端伺服器。輪詢演算法是把請求平均的**給各個後端,使它們的負載大致相同;但是有些請求占用的時間很長,會導致其所在的後端負載較高,這種情況下最少連線方式分配方式就可以達到更好的負載均衡效果。

當我們修改nginx配置時可以在不停機的情況下執行命令(nginx -s reload)更新應用配置,這讓在不修改nginx原始碼情況下通行修改配置檔案實現動態調整負載均衡提供了可能。今天重點介紹一下基於nginx權重分配的動態負載均衡架構實現,系統結構如下面所示。

在這個架構中每個服務需提供以下通用介面

1、服務介面配置查詢介面

每個服務可配置自身介面訪問控制資訊,比如啟用哪些介面、禁用哪些介面以及介面分組等配置。

2、資源使用情況查詢介面

每個服務提供介面查詢所在伺服器以及自身資源使用情況,比如cpu、記憶體、磁碟等使用情況。

監控服務會定期查詢每個服務的資源使用情況以及介面配置。如資源使用率過高、記憶體不足、網路延遲越久則權重越小,同時監控服務還可以實現異常服務告警功能,配置每個服務預設權重,最終監控服務會根據這些資訊計算出每個服務介面的權重資訊,同時監控服務會提供介面來查詢服務權重資訊。nginx執行使用者下會部署乙個配置檔案更新程式,這個程式會定時到監控服務查詢具體服務介面權重資訊,當發現權重資訊有變化時會更新nginx配置,然後執行命令(nginx -s reload)更新應用負載均衡配置資訊。

nginx動態負載均衡

服務發生變化時,需要手動修改upstream列表,相對比較麻煩,因此呢我們需要一種服務註冊發現機制,將upstream動態註冊到nginx上,從而實現upstream服務自動發現。常見的分布式服務註冊發現系統有consul,zookeeper,etcd,eureka。特性 服務註冊 服務發現 故障檢...

Nginx實現負載均衡

負載均衡 建立在現有網路結構之上,它提供了一種廉價有效透明的方法擴充套件網路裝置和伺服器的頻寬 增加吞吐量 加強網路資料處理能力 提高網路的靈活性和可用性。負載均衡,英文名稱為load balance,其意思就是分攤到多個操作單元上進行執行,例如web伺服器 ftp伺服器 企業關鍵應用伺服器和其它關...

nginx實現負載均衡

目錄結構 conf 配置目錄 html 靜態頁面目錄 logs 日誌目錄 sbin 主程式 nginx支援的負載均衡方式 輪詢 預設 每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。weight 指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的...