阿里P8架構師談:負載均衡的原理、分類、實現架構,以及使用場景

阿里P8架構師談:負載均衡的原理、分類、實現架構,以及使用場景

為什麼需要負載均衡

當系統面臨大量用戶訪問,負載過高的時候,通常會使用增加服務器數量來進行橫向擴展,使用集群和負載均衡提高整個系統的處理能力。

從單機網站到分佈式網站,很重要的區別是業務拆分和分佈式部署,將應用拆分後,部署到不同的機器上,實現大規模分佈式系統。分佈式和業務拆分解決了,從集中到分佈的問題,但是每個部署的獨立業務還存在單點的問題和訪問統一入口問題,為解決單點故障,我們可以採取冗餘的方式。將相同的應用部署到多臺機器上。解決訪問統一入口問題,我們可以在集群前面增加負載均衡設備,實現流量分發。

負載均衡的原理

系統的擴展可分為縱向(垂直)擴展和橫向(水平)擴展。

縱向擴展,是從單機的角度通過增加硬件處理能力,比如CPU處理能力,內存容量,磁盤等方面,實現服務器處理能力的提升,不能滿足大型分佈式系統(網站),大流量,高併發,海量數據的問題。

因此需要採用橫向擴展的方式,通過添加機器來滿足大型網站服務的處理能力。比如:一臺機器不能滿足,則增加兩臺或者多臺機器,共同承擔訪問壓力。這就是典型的集群和負載均衡架構:如下圖:

阿里P8架構師談:負載均衡的原理、分類、實現架構,以及使用場景

  • 應用集群:將同一應用部署到多臺機器上,組成處理集群,接收負載均衡設備分發的請求,進行處理,並返回相應數據。
  • 負載均衡設備:將用戶訪問的請求,根據負載均衡算法,分發到集群中的一臺處理服務器。(一種把網絡請求分散到一個服務器集群中的可用服務器上去的設備)

負載均衡的作用

1.解決併發壓力,提高應用處理性能(增加吞吐量,加強網絡處理能力);

2.提供故障轉移,實現高可用;

3.通過添加或減少服務器數量,提供網站伸縮性(擴展性);

4.安全防護;(負載均衡設備上做一些過濾,黑白名單等處理)

負載均衡的分類

阿里P8架構師談:負載均衡的原理、分類、實現架構,以及使用場景

1)二層負載均衡(mac)

根據OSI模型分的二層負載,一般是用虛擬mac地址方式,外部對虛擬MAC地址請求,負載均衡接收後分配後端實際的MAC地址響應)

2)三層負載均衡(ip)

一般採用虛擬IP地址方式,外部對虛擬的ip地址請求,負載均衡接收後分配後端實際的IP地址響應)

3)四層負載均衡(tcp)

在三次負載均衡的基礎上,用ip+port接收請求,再轉發到對應的機器。

4)七層負載均衡(http)

根據虛擬的url或IP,主機名接收請求,再轉向相應的處理服務器。

最常見的四層和七層負載均衡

1)四層的負載均衡就是基於IP+端口的負載均衡:在三層負載均衡的基礎上,通過發佈三層的IP地址(VIP),然後加四層的端口號,來決定哪些流量需要做負載均衡。

對應的負載均衡器稱為四層交換機(L4 switch),主要分析IP層及TCP/UDP層,實現四層負載均衡。此種負載均衡器不理解應用協議(如HTTP/FTP/MySQL等等)。

實現四層負載均衡的軟件有:

  • F5:硬件負載均衡器,功能很好,但是成本很高。
  • lvs:重量級的四層負載軟件
  • nginx:輕量級的四層負載軟件,帶緩存功能,正則表達式較靈活
  • haproxy:模擬四層轉發,較靈活

2)七層的負載均衡就是基於虛擬的URL或主機IP的負載均衡

對應的負載均衡器稱為七層交換機(L7 switch),除了支持四層負載均衡以外,還有分析應用層的信息,如HTTP協議URI或Cookie信息,實現七層負載均衡。此種負載均衡器能理解應用協議。

實現七層負載均衡的軟件有:

  • haproxy:天生負載均衡技能,全面支持七層代理,會話保持,標記,路徑轉移;
  • nginx:只在http協議和mail協議上功能比較好,性能與haproxy差不多;
  • apache:功能較差
  • Mysql proxy:功能尚可。

總的來說,一般是lvs做4層負載;nginx做7層負載;haproxy比較靈活,4層和7層負載均衡都能做。

負載均衡應用場景

阿里P8架構師談:負載均衡的原理、分類、實現架構,以及使用場景

場景一:應用於高訪問量的業務

如果您的應用訪問量很高,您可以通過配置監聽規則將流量分發到不同的服務器上。

場景二:橫向擴張系統

您可以根據業務發展的需要,通過隨時添加和移除服務器,來擴展應用系統的服務能力,適用於各種Web服務器和App服務器。

場景三:消除單點故障

當其中一部分服務器發生故障後,負載均衡會自動屏蔽故障的服務器,將請求分發給正常運行的服務器,保證應用系統仍能正常工作。

場景四:同城容災 (多可用區容災)

為了提供更加穩定可靠的負載均衡服務,當主可用區出現機房故障或不可用時,負載均衡仍然有能力在非常短的時間內切換到另外一個備可用區恢復服務能力;當主可用區恢復時,負載均衡同樣會自動切換到主可用區提供服務,保證服務依然正常運行。

阿里P8架構師談:負載均衡的原理、分類、實現架構,以及使用場景


分享到:


相關文章: