介紹
跨多個應用程式例項的負載平衡是一種常用的技術,用於優化資源利用率,最大化吞吐量,減少延遲並確保容錯配置。
可以使用nginx作為非常有效的http負載平衡器,將流量分配給多個應用伺服器,並通過nginx提高web應用程式的效能,可擴充套件性和可靠性。
負載平衡方法
在nginx中支援以下負載平衡機制(或方法):
預設負載平衡配置
使用nginx進行負載平衡的最簡單的配置可能如下所示:
nginx中的反向**實現包括http,https,fastcgi,uwsgi,scgi和memcached的負載平衡。
要配置https而不是http的負載均衡,只需使用「https」作為協議。
當設定負載平衡的fastcgi,uwsgi,scgi,或分布式快取,使用 fastcgi_pass, uwsgi_pass, scgi_pass,和 memcached_pass 分別指令。
最少連線的負載均衡
另乙個負載平衡規則是最少連線的。在一些請求需要更長時間才能完成的情況下,最少連線可以更公正地控制應用程式例項的負載。
使用最少連線的負載平衡,nginx將盡量不要過多的請求來過載忙碌的應用程式伺服器,而是將新的請求分發到不太忙的伺服器。
在使用minimum_conn指令作為伺服器組配置的一部分時,將啟用 nginx中的最小連線負載 平衡:
least_conn;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}會話永續性
請注意,通過迴圈或最少連線的負載平衡,每個後續客戶端的請求都可能分配到不同的伺服器。不能保證同乙個客戶端將始終指向同乙個伺服器。
如果需要將客戶端繫結到特定的應用伺服器 - 換句話說,使客戶端的會話「粘滯」或「永久」,總是試圖選擇特定的伺服器 - ip-hash負載平衡機制可以是用過的。
使用ip-hash,客戶端的ip位址用作雜湊鍵來確定應該為客戶端請求選擇伺服器組中的哪個伺服器。此方法確保來自同一客戶端的請求將始終被定向到同一臺伺服器,除非該伺服器不可用。
要配置ip-hash負載平衡,只需將ip_hash 指令新增 到伺服器(上游)組配置:
ip_hash;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}加權負載平衡
還可以通過使用伺服器權重進一步影響nginx負載平衡演算法。
在上面的示例中,伺服器權重未配置,這意味著所有指定的伺服器被視為對特定負載平衡方法具有同等資格。
特別是迴圈使用,也意味著伺服器上的請求分配或多或少是相等的,只要有足夠的請求,並且以統一的方式處理請求並且完成速度足夠快。
當 為伺服器指定 權重引數時,權重將作為負載平衡決策的一部分進行核算。
server srv1.example.com weight=3;
server srv2.example.com;
server srv3.example.com;
}通過這種配置,每5個新請求將分布在應用程式例項中,如下所示:3個請求將被定向到srv1,乙個請求將轉到srv2,另乙個請求將轉到srv3。
在最近版本的nginx中,可以使用最少連線和ip-hash負載均衡的權重。
健康檢查
nginx中的反向**實現包括帶內(或被動)伺服器執行狀況檢查。如果特定伺服器的響應失敗並出現錯誤,則nginx會將該伺服器標記為失敗,並嘗試避免為此後續入站請求選擇此伺服器一段時間。
該 max_fails 指令設定連續不成功的嘗試與中應該發生的伺服器進行通訊的數量 fail_timeout。預設情況下,max_fails 設定為1.當設定為0時,該伺服器的執行狀況檢查被禁用。該 fail_timeout 引數還定義如何,只要伺服器失敗將被標記。在 伺服器發生故障後的fail_timeout間隔之後 ,nginx將開始以實時客戶端的請求來優雅地探測伺服器。如果探針成功,則將伺服器標記為活動的。
原文
nginx負載均衡方式
nginx負載均衡 所謂的負載均衡簡單說就是將一台服務原來承受的壓力由多台伺服器來分配,可以在nginx中實現tomcat集群,通過weight來分配權重。nginx的負載均衡演算法 1,輪詢演算法 當不指定weight時,預設就是輪詢演算法,2,權重演算法 指定各自伺服器的weight,指定輪詢機...
nginx負載均衡的方式
一 分配方式 nginx的upstream支援5種分配方式,下面將會詳細介紹,其中,前三種為nginx原生支援的分配方式,後兩種為第三方支援的分配方式 1 輪詢 輪詢是upstream的預設分配方式,即每個請求按照時間順序輪流分配到不同的後端伺服器,如果某個後端伺服器down掉後,能自動剔除。ups...
nginx 負載均衡 Nginx負載均衡策略
nginx提供的負載均衡策略有2種 內建策略和擴充套件策略。內建策略為輪詢 預設 加權輪詢,ip hash,第三方。upstream mysvr1 輪詢 每個請求按照時間順序逐一的分配到每乙個後台伺服器上。如果某台伺服器宕機了,將會自動的剔除宕機的服務。nginx預設就是輪詢其權重都預設為1,伺服器...