天天看點

f5 會話保持 負載均衡_負載均衡及負載均衡器

點選上方“Python資料之道”,選擇“星标公衆号”

收藏文章的同時,不要忘記「在看」

f5 會話保持 負載均衡_負載均衡及負載均衡器

來源:大齡碼農技術點滴

f5 會話保持 負載均衡_負載均衡及負載均衡器

負載均衡

在分布式系統中,負載均衡(load balancing)是一種有效的将網絡請求配置設定到多個伺服器的過程。通過将負載進行負載均衡,可以有效地改進系統響應時間,提高系統的可用性。随着系統變的愈發複雜,使用者增多和網絡流量增大,負載均衡已經成為系統設計中的必要一環。

負載均衡是對應用伺服器架構進行水準擴充(scale out)的最為直接的方法。當系統面對使用者增多、并發請求增多的狀況時,我們可以直接向系統中添加更多的伺服器進行水準擴充,負載均衡器會馬上開始向新的伺服器發送一部分使用者請求,進而達到系統的水準擴充,使得每個伺服器會有幾乎數量相同的客戶請求。

實作負載均衡最主要有兩個目的。一是使得每個伺服器有相同的負載,以減少單個伺服器的負載,進而可以達到我們上面提到的對系統進行水準擴充的目的。二是提高系統容錯能力,進而達到高可用的目的。在分布式系統中,多個伺服器往往會提供相同的服務,是以當一個伺服器當機時,我們可以通過負載均衡器(load balancer)将該伺服器對應的負載轉發到其他機器上,進而提高系統的可用性。如果沒有負載均衡器,我們隻是将對應的負載直接轉發到某幾個機器,那麼如果那幾個機器本身就有了很高的負載,面臨突然的大量負載,有可能會造成其他機器的當機。

負載均衡器

負載均衡器可以是硬體也可以是軟體,它會将網絡請求分發到伺服器叢集上。在下圖中,負載均衡器處于用戶端和伺服器之間,将用戶端請求轉發到不同的後端伺服器來完成用戶端請求。通過将用戶端請求平均的分發到後端伺服器,負載均衡器有效的減少伺服器請求,避免了某個伺服器會單點失敗。

f5 會話保持 負載均衡_負載均衡及負載均衡器

我們可以将負載均衡器的特點總結如下:

  • 如果單個伺服器當機,負載均衡器會移除該伺服器,并将請求轉發到其他線上伺服器
  • 當一個新伺服器被添加到叢集中,負載均衡器會自動開始向它發送請求
  • 有效的将用戶端請求或者網絡負載分發到多個伺服器上
  • 因為隻向線上的伺服器發送請求進而確定了高可用和可靠性
  • 提供了按需增減伺服器的靈活性,并不會影響到已有的伺服器上的連接配接
  • 可以被應用到不同的層次中,比如伺服器,資料庫或者緩存

負載均衡器是基于如下兩個步驟來為一個用戶端請求選擇對應的後端伺服器的。首先,确認伺服器是否可用。然後根據配置好的負載均衡算法從這些健康的伺服器中選擇一個伺服器。

健康檢查(Health Check): 為了確定負載均衡器隻将請求發送給健康的伺服器,健康檢查會周期性嘗試連接配接後端伺服器,確定伺服器在監聽。如果一個伺服器健康檢查失敗了,該伺服器會被自動從伺服器叢集中移除,用戶端請求将不會被轉發到該伺服器上,直到該伺服器開始對健康檢查開始進行響應。

負載均衡算法

  • 輪詢排程算法(Round Robin) 

    該算法會依次将請求派發到健康伺服器清單中的每一台伺服器上。比如健康伺服器清單為A,B,C,D。請求就會按此順序被分發到上面。

  • 最少連接配接算法(Least Connections) 

    該算法會檢視叢集中哪一個伺服器有最少的連接配接,然後将請求發送到具有最少連接配接數目的伺服器上

  • 最少響應時間(Least Response Time)

        該算法會将請求轉發到具有最少連接配接并且最低平均響應時間的伺服器上

  • 最小帶寬算法(Least Bandwidth Method) 

    該方法會将請求轉發到有最小流量的伺服器上,這裡流量以Mbps來測量

  • IP位址哈希(IP Hash) 

    該算法根據IP位址來決定将請求轉發到哪個伺服器上

  • 粘滞會話(Sticky Session Scheme)

    根據請求的依賴關系将請求轉發到正确伺服器上。比如使用者的購買請求依賴于使用者登入請求,當負載均衡器收到使用者的購買請求時,它會将其轉發到對應的處理登入請求的伺服器上,否則将會報錯。

  • 均勻任務隊列派發(Even Size Task Queue Distribution Scheme) 

    每個伺服器用一個隊列存儲收到的請求,如果伺服器處理請求的速度快,那麼隊列裡請求數目減少的也快,那麼負載均衡器隻需要根據隊列中的數目,将請求放到最小數目的隊列中即可。

負載均衡器的能力

L4負載均衡器: 基于傳輸層協定例如IP位址和TCP端口對請求進行轉發

L7負載均衡器: 基于應用層資料和屬性進行請求轉發,比如http標頭,統一資源定位符(URI),SSL會話ID和HTML表格資料

全局伺服器負載均衡器: 對L4和L7進行擴充,使得負載均衡器可以對全局的伺服器進行負載均衡

常用負載均衡器

負載均衡器已經有了很多的解決方案。比如,硬體方面有F5,A10,軟體方面有Nginx,HAProxy,LVS。如果整個系統是雲架構,那麼雲廠商也提供了成熟的負載均衡選擇比如Azure負載均衡器和AWS負載均衡器。硬體負載均衡器往往具有難以擴充(因為需要額外增加硬體),成本貴(購買硬體,專業人員安裝維護)和安全性(實體硬體自身設計導緻)等缺點。軟體負載均衡器消除了硬體負載均衡器的這些缺點,并具有按需進行調節的靈活性和易于和系統進行內建。是以,我們在面對系統進行水準擴容的時候不妨先考慮開源的軟體負載均衡器,如果确實有滿足不了的地方,再考慮重複造輪子。

-------------------End-------------------

f5 會話保持 負載均衡_負載均衡及負載均衡器

 「Python資料之道 」建立了讀者交流群,大家可以添加管理者微信進行加群

f5 會話保持 負載均衡_負載均衡及負載均衡器

掃描添加好友 回複 “ 資源 ”

f5 會話保持 負載均衡_負載均衡及負載均衡器
  • 推薦 | 免費擷取《Python知識手冊》
  • Matplotlib最有價值的50個圖表
  • 可視化神器推薦(Plotly Express)
  • Flask vs Django,Python Web 開發用哪個架構更好?
f5 會話保持 負載均衡_負載均衡及負載均衡器

推薦下我新開的公衆号「檸檬2069」,走出技術圈,成就更好的自己~ 檸檬2069 遇見未來 挖掘更好的自己

f5 會話保持 負載均衡_負載均衡及負載均衡器

覺得内容還不錯的話,給我點個“ 在看 ”呗

f5 會話保持 負載均衡_負載均衡及負載均衡器
f5 會話保持 負載均衡_負載均衡及負載均衡器