【知識分享】提升伺服器效能的三種負載均衡

小鑫fwq發表於2023-03-06

在業務初期,我們一般會先使用單臺伺服器對外提供服務。隨著業務流量越來越大,單臺伺服器無論如何最佳化,無論採用多好的硬體,總會有效能天花板,當單伺服器的效能無法滿足業務需求時,就需要把多臺伺服器組成叢集系統提高整體的處理效能。

基於上述需求,我們要使用統一的流量入口來對外提供服務,本質上就是需要一個流量排程器,透過均衡的演演算法,將使用者大量的請求流量均衡地分發到叢集中不同的伺服器上。這其實就是壹基比小鑫三零零五三一六九一二今天要說的負載均衡。

廣義上的負載均衡器大概可以分為 3 類,包括:DNS 方式實現負載均衡、硬體負載均衡、軟體負載均衡。

一、DNS 實現負載均衡

這個負載均衡時透過DNS來的,因為DNS解析同一個域名可以返回不同的ip。所以例如哈爾濱的人訪問百度就返回距離他近的那個機房的IP,海南的人訪問百度就返回距離他近的那個機房的IP。所以主要是用來實現地理級別的負載均衡。

DNS 實現負載均衡是最基礎簡單的方式。一個域名透過 DNS 解析到多個 IP,每個 IP 對應不同的伺服器例項,這樣就完成了流量的排程,雖然沒有使用常規的負載均衡器,但實現了簡單的負載均衡功能。

透過 DNS 實現負載均衡的方式, 的優點就是實現簡單,成本低,無需自己開發或維護負載均衡裝置,不過存在一些缺點:

1、伺服器故障切換延遲大,伺服器升級不方便。我們知道 DNS 與使用者之間是層層的快取,即便是在故障發生時及時透過 DNS 修改或摘除故障伺服器,但中間經過運營商的 DNS 快取,且快取很有可能不遵循 TTL 規則,導致 DNS 生效時間變得非常緩慢,有時候一天後還會有些許的請求流量。

2、流量排程不均衡,粒度太粗。DNS 排程的均衡性,受地區運營商 LocalDNS 返回 IP 列表的策略有關係,有的運營商並不會輪詢返回多個不同的 IP 地址。另外,某個運營商 LocalDNS 背後服務了多少使用者,這也會構成流量排程不均的重要因素。

3、流量分配策略太簡單,支援的演演算法太少。DNS 一般只支援 rr 的輪詢方式,流量分配策略比較簡單,不支援權重、Hash 等排程演演算法。

4、DNS 支援的 IP 列表有限制。我們知道 DNS 使用 UDP 報文進行資訊傳遞,每個 UDP 報文大小受鏈路的 MTU 限制,所以報文中儲存的 IP 地址數量也是非常有限的,阿里 DNS 系統針對同一個域名支援配置 10 個不同的 IP 地址。

實際上生產環境中很少使用這種方式來實現負載均衡,畢竟缺點很明顯。文中之所以描述 DNS 負載均衡方式,是為了能夠更清楚地解釋負載均衡的概念。

像 BAT 體量的公司一般會利用 DNS 來實現地理級別的全域性負載均衡,實現就近訪問,提高訪問速度,這種方式一般是入口流量的基礎負載均衡,下層會有更專業的負載均衡裝置實現的負載架構。

二、硬體負載均衡

硬體負載均衡就是用一個硬體一個基礎網路裝置,類似我們的交換機啊這樣的硬體,來實現負載均衡。常見的硬體有F5、A10。

這類裝置效能強勁、功能強大,但價格非常昂貴,一般只有土豪公司才會使用此類裝置,中小公司一般負擔不起,業務量沒那麼大,用這些裝置也是挺浪費的。

硬體負載均衡的優點:

功能強大:全面支援各層級的負載均衡,支援全面的負載均衡演演算法。

效能強大:效能遠超常見的軟體負載均衡器。

穩定性高:商用硬體負載均衡,經過了良好的嚴格測試,經過大規模使用,穩定性高。

安全防護:還具備防火牆、防 DDoS 攻擊等安全功能,以及支援 SNAT 功能。

硬體負載均衡的缺點也很明顯:

價格貴;

擴充套件性差,無法進行擴充套件和定製;

除錯和維護比較麻煩,需要專業人員。

三、軟體負載均衡

軟體負載均衡是最常見的,大小公司都需要用到它。

軟體負載均衡是透過負載均衡功能的軟體來實現負載均衡,常見的軟體有LVS、Nginx、HAProxy。

軟體負載負載均衡又分四層和七層負載均衡,四層負載均衡就是在網路層利用IP地址埠進行請求的轉發,基本上就是起個轉發分配作用。而七層負載均衡就是可以根據訪問使用者的HTTP請求頭、URL資訊將請求轉發到特定的主機。LVS為四層負載均衡。Nginx、HAProxy可四可七。

軟體負載均衡的優點在於便宜而且簡單靈活,就買個主機,裝下軟體,配置一下就能用了,配置也很簡單對於一般小型企業,或者併發量不高的企業來說就夠用了。而且在高峰期時容易擴容。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70013663/viewspace-2938275/,如需轉載,請註明出處,否則將追究法律責任。

相關文章