網路併發負載均衡
OSI 七層參考模型
分層模型,每一層實現各自的功能和協議,並完成與相鄰層的介面通訊。OSI 的服務定義詳細說明了各層所提供的服務,某一層的服務就是該層及其下各層的一種能力,通過介面提供給更高一層。各層所提供的服務與這些服務是怎麼實現的無關。
- 應用層:為各種應用程式提供服務
- 表示層:資料格式轉化、資料加密
- 會話層:建立、管理和維護會話
- 傳輸層:定義了一些傳輸資料的協議和埠號
- 網路層:IP 選址及路由選擇
- 資料鏈路層:mac 地址的封裝與解碼。
- 物理層:定義物理裝置標準,如網線介面型別、光纖的介面型別、各種傳輸介質的傳輸速率。主要用於傳輸位元流。
TCP/IP 五層模型
負載均衡
通常是指將請求或者是資料,均勻的分攤到多個操作單元上執行。屬於分而治之的思想。
目的是通過排程叢集,達到最佳化資源使用,最大化吞吐率,最小化響應時間,避免單點過載的問題
負載均衡演算法
- 靜態
- RR:輪詢
- WRR:權重輪詢
- DH
- SH
- 動態
- LC:最小連線數法
- WLC:加權最小連線
- SED:最短期望延遲
- NQ:never queue
- LBLC:基於本地的最小連線
- 響應速度均衡
- 處理能力均衡
四層負載均衡
基於傳輸層的負載均衡,代表協議為 TCP/UDP,除了包含 IP 之外,還區分了埠號,主要是通過基於 IP + 埠號進行請求的轉發。
四層負載均衡伺服器 LVS
- NAT:地址轉換
- DR:直接路由
- TUN:隧道技術
NAT 地址轉換
原理:IP地址改寫
DR 直接路由
原理:區域網改寫 mac 地址
TUN 隧道技術
原理:IP封裝、跨網段
keepalived
高可用,用於檢測各個節點的狀態,處理單點故障。
若單點 LVS 掛掉,該如何處理,思路:多點,形成叢集(分散式)
- 主備:只有主向外提供服務,備機用於在主機發生故障的時候,提供服務。
- 主主:同時向外提供服務
- 主從:兩者相互配合完成工作
keepalived
- 監控自己服務
- Master通告自己還活著,Backup監聽Master狀態,Master掛了,一堆Backup推舉出一個新的Master
- 配置:VIP、新增ipvs、keepalived是有配置檔案的
- 對後端的Server做監控檢查
- keepalived是一個通用的工作,主要作為HA實現:
Nginx,可以作為公司的負載均衡來使用,Nginx成為了單點故障,也可以用keepalived來解決,只要涉及到一變多的情況,基本都可以使用keepalived來解決。
七層負載均衡
基於應用層的負載均衡,代表協議由 HTTP、DNS 等,可以根據請求的 URL 等進行負載,更加靈活。基於反向代理的負載均衡的 Nginx 就是其代表之一。
普通的四層負載均衡軟體,其實現的功能只是對請求資料包的轉發、傳遞,從負載均衡下的節點伺服器來看,接收到的請求還是來自訪問負載均衡器的客戶端的真實使用者,而基於反向代理的負載均衡是,反向代理伺服器在接收訪問使用者請求後,會代理使用者重新發起請求代理下的節點伺服器,最後把資料返回給客戶端使用者。在節點伺服器看來,訪問的節點伺服器的客戶端使用者就是反向代理伺服器,而非真實的網站訪問使用者。