MSCDN一種實時流負載均衡+CDN方案設計

1.概述

MSCDN主要用於支持“CDN+負載均衡+集羣服務+熱切主備”功能。

1.1.CDN

當用戶請求內容時,該內容能夠由以最快速度向用戶提供,這個挑選“最優”的過程就叫做負載均衡。 ​ CDN骨幹點和CDN POP點在功能上不同,中心和區域節點一般稱爲骨幹點,主要作爲內容分發和邊緣未命中時的服務點;邊緣節點又被稱爲POP(point of presence)節點,CDN POP點主要作爲直接向用戶提供服務的節點。

1.2.負載均衡

兩級調度體系分爲全局負載均衡(GSLB)和本地負載均衡(SLB)。GSLB主要根據用戶就近性原則,通過對每個服務節點進行“最優”判斷,確定向用戶提供服務的物理位置。SLB主要負責節點內部的設備負載均衡。 ​ 基於負載均衡的算法主要有三種:輪循(Round-Robin)、最小連接數(Least Connections First),和快速響應優先(Faster Response Precedence) ​ <1>輪循算法,就是將來自網絡的請求依次分配給集羣中的節點進行處理; ​ <2>最小連接數算法,就是爲集羣中的每臺服務器設置一個記數器,記錄每個服務器當前的連接數,負載均衡系統總是選擇當前連接數最少的服務器分配任務; 這要比"輪循算法"好很多,因爲在有些場合中,簡單的輪循不能判斷哪個節點的負載更低,也許新的工作又被分配給了一個已經很忙的服務器了。 ​ <3>快速響應優先算法,是根據羣集中的節點的狀態(CPU、內存等主要處理部分)來分配任務; 這一點很難做到,事實上到目前爲止,採用這個算法的負載均衡系統還很少。尤其對於硬件負載均衡設備來說,只能在TCP/IP協議方面做工作,幾乎不可能深入到服務器的處理系統中進行監測。但是它是未來發展的方向。

負載均衡常用的算法,基於以上負載均衡算法的使用方式上,又分爲如下幾種: 1.DNS輪詢 ​ 最早的負載均衡技術是通過DNS來實現的,在DNS中爲多個地址配置同一個名字,因而查詢這個名字的客戶機將得到其中一個地址,從而使得不同的客戶訪問不同的服務器,達到負載均衡的目的。 ​ DNS負載均衡是一種簡單而有效的方法,但是它不能區分服務器的差異,也不能反映服務器的當前運行狀態,因此當使用DNS負載均衡的時候,必須儘量保證不同的客戶計算機能均勻獲得不同的地址。 ​ DNS輪詢的問題: ​ <1>額外的網絡問題:由於DNS數據具備刷新時間標誌,一旦超過這個時間限制,其他DNS服務器就需要和這個服務器交互,以重新獲得地址數據,就有可能獲得不同IP地址。因此爲了使地址能隨機分配,就應使刷新時間儘量短,不同地方的DNS服務器能更新對應的地址,達到隨機獲得地址,然而將過期時間設置得過短,將使DNS流量大增; ​ <2>故障熱切換實時性慢:DNS負載均衡的另一個問題是,一旦某個服務器出現故障,即使及時修改了DNS設置,還是要等待足夠的時間(刷新時間)才能發揮作用,在此期間,保存了故障服務器地址的客戶計算機將不能正常訪問服務器;

2.反向代理服務器 ​ 使用代理服務器將請求均勻轉發給多臺服務器,從而達到負載均衡的目的。 ​ 使用反向代理的好處是,可以將負載均衡和代理服務器的高速緩存技術結合在一起,提供有益的性能。 ​ 代理服務器本身雖然可以達到很高效率,但是針對每一次代理,代理服務器就必須維護兩個連接,一個對外的連接,一個對內的連接,因此對於特別高的連接請求,代理服務器的負載也就非常之大,是隨着併發連接數量的增加,代理服務器本身的負載也變得非常大,最後反向代理服務器本身會成爲服務的瓶頸。

3.地址轉換網關 ​ 支持負載均衡的地址轉換網關,可以將一個外部IP地址映射爲多個內部IP地址,對每次TCP連接請求動態使用其中一個內部地址,達到負載均衡的目的(硬件設備是局域網交換機)

  基於DNS解析方式 基於HTTP重定向方式 基於IP路由方式
性能 本地DNS服務器和用戶終端DNS緩存能力使GSLB的負載得到有效分擔 GSLB處理壓力大,容易成爲系統性能的瓶頸 藉助IP網絡設備完成負載均衡,沒有單點性能瓶頸
準確度 定位準確度取決於本地DNS覆蓋範圍,本地DNS設置錯誤會造成定位不準確 在對用戶IP地址數據進行有效維護的前提下,定位準確且精度高 就近性調度準確,但對設備健康性等動態信息響應會有延遲
效率 效率約等於DNS系統本身處理效率 依靠服務器做處理,對硬件資源的要求高 效率約等於IP設備本身效率
擴展性 擴展性和通用性好 擴展性較差,需對各種應用協議進行定製開發 通用性好,但適用範圍有限
商用性 在Web加速領域使用較多 國內流媒體CDN應用較多 尚無商用案例

1.3.集羣服務

基於Syncthing實現數據的同步,Syncthing是一個持續的時間同步程序,它在兩臺或多臺計算機之間進行文件同步。可使用包mssyncthing.pkg進行在線安裝,訪問地址爲http://IP:8384

1.4.熱主備

1.4.1.主-主工作(Active-Active)

這是最常用的集羣模型,支撐用戶業務的應用程序在正常狀態下分別在兩臺節點上運行,各自有自己的資源,比如IP地址、磁盤陣列上的卷或者文件系統。當某一方的系統或者資源出現故障時,就會將應用和相關資源切換到對方的節點上。 ​ 優點:不會有服務器的“閒置”,兩臺服務器在正常情況下都在工作; ​ 缺點:若有故障發生導致切換,應用將放在同一臺服務器上運行,由於服務器的處理能力有可能不能同時滿足數據庫和應用程序的峯值要求,這將會出現處理能力不夠的情況,降低業務響應水平;

1.4.2.主-從工作(Active-Standby)

爲了提供最大的可用性,以及對性能最小的影響,主-從工作方式需要一個在正常工作時處於備用狀態的節點,主節點處理客戶機的請求,而備用節點處於空閒狀態,當主節點出現故障時,備用節點會接管主節點的工作,繼續爲客戶機提供服務,並且不會有任何性能上影響。兩節點的Active/Standby模式是HA中最簡單的一種,兩臺服務器通過雙心跳線路組成一個集羣。應用Application聯合各個可選的系統組件如:外置共享的磁盤陣列、文件系統和浮動IP地址等組成業務運行環境。 ​ 缺點:Node2在Node1正常工作時是處於“閒置”狀態,造成服務器資源的浪費; ​ 優點:當主服務器發生故障時,從服務器能完全接管應用,並且能保證應用運行時的對處理能力要求;

2.服務器控制模塊

服務中文名稱 服務英文縮寫及全名稱
任務處理和內容分發服務 STPCD- Task Processing and Content Distribution Service
負載均衡服務 SLB- Load Balancing Service
內容分發網絡 CDN-Content Distribution Network
集羣同步服務 SCS-Cluster Synchronization Service
熱主備服務 SHB-Hot backup service
本地服務器 LS-Local Server

2.1.服務器控制概述

MSCDN是一套內容分發網絡服務,主要包括:負載均衡模塊,任務處理和內容分發模塊,集羣同步模塊和熱主備模塊。 負載均衡模塊 ​ 負載均衡模塊包括2級調度體系分爲全局負載均衡(GSLB)和本地負載均衡(SLB)。全局負載均衡(GSLB)採用”DNS服務方式“進行負載的橫向擴容,而採用“位置調度算法機制”計算最優路徑,採用”HTTP重定方式“向請求方提供本地負載均衡(SLB)的訪問地址,由本地負載均衡(SLB)提供具體的業務服務。本地負載均衡(SLB)採用採用“最優性能+輪循算法”計算最終提供服務的內部服務器地址,採用”HTTP重定方式“向請求方提供該內部服務的訪問地址。 任務處理和內容分發模塊 ​ 任務處理和內容分發模塊主要提供"任務命令的接收和處理+任務同步+流分發同步"的業務功能。任務命令採用UDP(JSON)或標準的HTTP(JSON)方式,包括GET和POST方法。任務同步包括IP命令任務和配置命令任務。直播流分發同步主要包括:主動推送UDP/RTP直播流,RTSP推流節目名同步信息,HLS輸出同步信息等;

集羣同步模塊 ​ 主要用於流媒體版本更新的同步,版本更新僅需要更新STPCD節點,即可實現整個網絡版本的更新操作。

熱主備 ​ 採用主從工作方式,主要用於對關鍵節點進行冗餘備份;

2.2.服務器控制功能

DNS服務 ​ 通信方式:無需通信 ​ 主備方案:無需主備 ​ 提前配置:將DNS和需要使用的GSLB節點的地址做好映射關係; ​ 實現方式:採用本地搭建DNS服務器(局域網)或購買域名(公網)的方式。本地搭建DNS服務器可採用”BIND軟件“(安裝包msdnsserver.pkg進行在線安裝); ​ 新增節點:手動配置後,重啓服務生效;

GSLB ​ 通信方式:UDP(JSON)或標準的HTTP(JSON)方式,包括GET和POST方法; ​ 主備方案:無需主備 ​ 提前配置:SLB節點通信的IP地址和端口; ​ 向上功能:<1>進行業務服務"最優路徑"的調度選擇; ​ 向下功能:<1>根據SLB節點的心跳信息:監測SLB節點的狀態信息(版本、性能等),自動發現和註冊新增加的SLB節點(密碼配:msgslb,msos123gslb);

STPCD ​ 通信採用UDP(JSON)或標準的HTTP(JSON)方式,包括GET和POST方法。進行必要時需要進行主備部署,提供"任務命令的接收和處理+任務同步+流分發同步"的業務功能。任務命令採用UDP(JSON)或標準的HTTP(JSON)方式,包括GET和POST方法。任務同步包括IP命令任務和配置命令任務。直播流分發同步主要包括:主動推送UDP/RTP直播流,RTSP推流節目名同步信息,HLS輸出同步信息等;

通信方式:UDP(JSON)或標準的HTTP(JSON)方式,包括GET和POST方法; ​ 主備方案:主從工作模式,主從使用keepalived進行主備熱切,採用SYNCTINHG保存必要文件同步,使用內部連接保持任務信息的實時同步; ​ 提前配置:<1>SLB節點通信的IP地址和端口; ​ 向外功能:<1>接收並處理來自應用層的任務指令; ​ 向內功能:<1>根據SLB節點的心跳信息:監測SLB節點的狀態信息(版本、性能等);<2>自動發現和註冊新增加的SLB節點(密碼配:msstpcd,msos123stpcd);<3>被動向SLB節點提供任務同步信息;<5>主動向SLB節點進行流分發;<3>主動向SLB節點發送來自應用層的任務指令;

SLB ​ 通信方式:UDP(JSON)或標準的HTTP(JSON)方式,包括GET和POST方法; ​ 主備方案:主從工作模式,主從使用keepalived進行主備熱切,使用內部連接保持任務信息的實時同步; ​ 提前配置:<1>STPCD節點的IP地址和端口;<2>GSLB節點的IP地址和端口;<3>LS節點通信的IP地址和端口;<4>LS節點流訪問IP地址和端口; ​ 向外功能:<1>接收並處理來自STPCD節點的任務指令;<2>進行業務服務"最優路徑"的調度路徑選擇;<3>向GSLB和STPCD節點上報狀態信息(版本、性能等);<4>主動從STPCD節點進行任務同步; ​ 向內功能:<1>根據LS節點的心跳信息:監測LS節點的狀態信息(版本、性能等);<2>自動發現和註冊新增加的LS節點(密碼配:msslb,msos123slb);<4>被動向LS節點提供任務同步信息;<5>主動向LS節點進行流分發;<3>主動向LS節點發送來自上級的任務指令;

LS ​ 通信方式:UDP(JSON)或標準的HTTP(JSON)方式,包括GET和POST方法; ​ 主備方案:無需主備 ​ 提前配置:SLB節點的IP地址和端口; ​ 向外功能:<1>向SLB節點上報狀態信息(版本、性能等);<2>提供業務服務(RTSP/HTTP/HLS/RTMP等);<3>主動從SLB上同步任務信息; ​ 向內功能:無;

集羣管理機制 ​ 同步管理:採用"逐級同步,主備切換"的機制。LS節點同步上級SLB節點,SLB節點同步STPCD主被工作節點,STPCD備節點同步主節點; ​ 升級管理:採用"智能分級治理"的機制。使用SYNCTHING進行升級文件的自動同步。對STPCD進行升級時,將產生軟件版本文件,通過SYNCTHING同步分發到下級服務器後,相應軟件檢測到版本號有更新時,自動重啓軟件完成集羣升級服務; ​ 任務管理:採用"逐級下發,分級治理"的機制。通過將任務指令發送給STPCD,STPCP將任務指令主動發給各個SLB節點(內部流不處理),各個SLB節點再將任務下發到內部的各個LS節點(內部流不處理); ​ 分發同步:採用"逐級下發,分級治理"的機制。通過將”RTP/UDP流“推動給STPCD,STPCP將”RTP/UDP流“動分發到各個SLB節點,各個SLB節點再將”RTP/UDP流“分發到內部的各個LS節點; ​ 配置管理:採用"逐級下發,分級治理"的機制。建立集羣專用指令,進行集羣更新服務; ​ 節點自動註冊:

2.3.協議機制

UDP ​ 通信模型:P2P模型; ​ 優點:程序改動小,實現方便,基於現有的通信接口; ​ 缺點:需要提前知道通信對方的IP和端口,且UDP是不可靠協議; ​ 狀態實現:由監測方主動發起監測指令,被監測方進行實時狀態的回覆; ​ 指令同步實現:本級將自身現有的任務與上級對比,若上級不存在則刪除該任務。上級將自身現有的任務與下級對比,若下級不存在則刪除該任務;

TCP ​ 通信模型:C/S模型; ​ 優點:TCP協議本身是可靠協議,通信有保障,且穿透力強; ​ 缺點:需要維護下級的連接狀態,代碼重新開發; ​ 狀態實現:由下級進行心跳將自身狀態發給上級,上級進行實時狀態的回覆; ​ 指令同步實現:下級將自身現有的任務與上級對比,若上級不存在則刪除該任務。上級將自身現有的任務與下級對比,若下級不存在則刪除該任務; HTTP ​ 通信模型:P2P模型; ​ 優點:程序改動小,實現方便,基於現有的通信接口,通信有保障,且穿透力強; ​ 缺點:需要提前知道通信對方的IP和端口; ​ 狀態實現:由監測方主動發起監測指令,被監測方進行實時狀態的回覆; ​ 指令同步實現:本級將自身現有的任務與上級對比,若上級不存在則刪除該任務。上級將自身現有的任務與下級對比,若下級不存在則刪除該任務;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章