從網路到分散式-負載均衡

ice_image發表於2021-03-12

網路併發負載均衡

OSI 七層參考模型

分層模型,每一層實現各自的功能和協議,並完成與相鄰層的介面通訊。OSI 的服務定義詳細說明了各層所提供的服務,某一層的服務就是該層及其下各層的一種能力,通過介面提供給更高一層。各層所提供的服務與這些服務是怎麼實現的無關。

  • 應用層:為各種應用程式提供服務
  • 表示層:資料格式轉化、資料加密
  • 會話層:建立、管理和維護會話
  • 傳輸層:定義了一些傳輸資料的協議和埠號
  • 網路層:IP 選址及路由選擇
  • 資料鏈路層:mac 地址的封裝與解碼。
  • 物理層:定義物理裝置標準,如網線介面型別、光纖的介面型別、各種傳輸介質的傳輸速率。主要用於傳輸位元流。

TCP/IP 五層模型

負載均衡

通常是指將請求或者是資料,均勻的分攤到多個操作單元上執行。屬於分而治之的思想。

目的是通過排程叢集,達到最佳化資源使用,最大化吞吐率,最小化響應時間,避免單點過載的問題

負載均衡演算法

  • 靜態
    • RR:輪詢
    • WRR:權重輪詢
    • DH
    • SH
  • 動態
    • LC:最小連線數法
    • WLC:加權最小連線
    • SED:最短期望延遲
    • NQ:never queue
    • LBLC:基於本地的最小連線
    • 響應速度均衡
    • 處理能力均衡

四層負載均衡

基於傳輸層的負載均衡,代表協議為 TCP/UDP,除了包含 IP 之外,還區分了埠號,主要是通過基於 IP + 埠號進行請求的轉發。

四層負載均衡伺服器 LVS

  1. NAT:地址轉換
  2. DR:直接路由
  3. TUN:隧道技術
NAT 地址轉換

原理:IP地址改寫

DR 直接路由

原理:區域網改寫 mac 地址

TUN 隧道技術

原理:IP封裝、跨網段

keepalived

高可用,用於檢測各個節點的狀態,處理單點故障。

若單點 LVS 掛掉,該如何處理,思路:多點,形成叢集(分散式)

  • 主備:只有主向外提供服務,備機用於在主機發生故障的時候,提供服務。
  • 主主:同時向外提供服務
  • 主從:兩者相互配合完成工作

keepalived

  1. 監控自己服務
  2. Master通告自己還活著,Backup監聽Master狀態,Master掛了,一堆Backup推舉出一個新的Master
  3. 配置:VIP、新增ipvs、keepalived是有配置檔案的
  4. 對後端的Server做監控檢查
  5. keepalived是一個通用的工作,主要作為HA實現:
    Nginx,可以作為公司的負載均衡來使用,Nginx成為了單點故障,也可以用keepalived來解決,只要涉及到一變多的情況,基本都可以使用keepalived來解決。

七層負載均衡

基於應用層的負載均衡,代表協議由 HTTP、DNS 等,可以根據請求的 URL 等進行負載,更加靈活。基於反向代理的負載均衡的 Nginx 就是其代表之一。

普通的四層負載均衡軟體,其實現的功能只是對請求資料包的轉發、傳遞,從負載均衡下的節點伺服器來看,接收到的請求還是來自訪問負載均衡器的客戶端的真實使用者,而基於反向代理的負載均衡是,反向代理伺服器在接收訪問使用者請求後,會代理使用者重新發起請求代理下的節點伺服器,最後把資料返回給客戶端使用者。在節點伺服器看來,訪問的節點伺服器的客戶端使用者就是反向代理伺服器,而非真實的網站訪問使用者。

相關文章