視訊私有云實戰:基於Docker構建點播私有云平臺

網易雲信發表於2018-07-20
私有云是為一個客戶單獨使用而構建的,因而提供對資料、安全性和服務質量的最有效控制。前置條件是客戶擁有基礎設施,並可以使用基礎設施在其上部署應用程式。其核心屬性是專有的資源。本篇文章將會結合網易雲信的實踐經驗,以全域性概述的方式帶大家認識點播私有化平臺構建的整體架構面貌。

推薦閱讀

幾十萬人同時線上的直播間聊天,如何設計服務端架構?

高併發IM系統架構優化實踐

雲端計算的出現,通過硬體的虛擬化將大量的伺服器硬體抽象為巨大的資源池,可以動態的為使用者提供基礎設施、平臺和應用三種形式的服務。目前企業的使用方式有公有云和私有云。公有云下,企業可以拋棄複雜的基礎設施構建和維護,按需購買計算資源和應用服務。但是考慮到一些資料的敏感性和網路互連互通問題的限制,企業將自己最核心的業務完全託管至公有云有很大顧慮。因此,基於業務上的可靠性、安全性、可控性,很多企業選擇建設私有云。

私有云是為一個客戶單獨使用而構建,因而提供對資料、安全性和服務質量的有效控制。前置條件是客戶擁有基礎設施,並可以使用基礎設施在其上部署應用程式。其核心屬性是專有的資源。

架 構

點播私有云平臺的模組設計

視訊私有云實戰:基於Docker構建點播私有云平臺

基礎服務包括:

  • 快取、資料庫、訊息佇列等部署在PaaS層的服務,提供資料的儲存和訪問。
  • 容器管理基於Docker和Kubernetes管理點播服務各個元件的生命週期。

能力管理叢集包括:

  • 上傳服務叢集,基於S3裝置的分佈於不同節點的斷點上傳。
  • 流媒體服務叢集,支援視訊的邊下邊播等播放特性。
  • 轉碼叢集,處理視訊轉碼的引擎。

通過提供基礎服務和能力管理叢集構建平臺服務,使用者只需要在此基礎上接入業務應用,整合播放SDK和上傳SDK,即可快速構建點播服務。

點播私有云平臺的部署實施設計

視訊私有云實戰:基於Docker構建點播私有云平臺

上圖闡述了點播私有化平臺的最小部署叢集,其中控制叢集包含通過基於Openstack進行的硬體資源虛擬化、Docker和Kubernetes實現的容器服務管理、基於虛擬資源和容器的哨兵監控以及賬號管理。計算叢集包含點播服務元件的部署以及依賴的儲存、資料管理服務。

平臺組成

整個私有化平臺從底層向上構建包括:硬體資源的虛擬化、資料儲存服務構建、點播元件服務部署。

硬體資源的虛擬化

視訊私有云實戰:基於Docker構建點播私有云平臺

上圖闡述了將硬體資源虛擬化的分層抽象架構:

IaaS基於Openstack的雲端計算基礎服務(包括雲端計算、雲網路和本地儲存)

將硬體資源虛擬化為雲主機,支援雲主機的管理操作(建立、啟動、停止、重啟、刪除、快照、修改規格、離線遷移、修改雲主機名稱等操作)、映象快照管理、安全組管理、網路資源管理(通過管理內網IP和外網IP浮動池,使用獲取,銷燬釋放至IP池)、監控報警(雲主機的各項指標監控)。

Pass服務:基於IaaS構建的多租戶PaaS服務(包括儲存服務、資料庫)

Kubernetes多租戶的叢集編排的容器服務

Kubernetes服務為分散式應用服務提供容器的建立、編排、排程、服務發現、彈性伸縮等功能。基於Kubernetes的特性同時融合基礎服務的負載均衡服務能夠保證服務的高可用、高可靠、彈性擴容、不同級別的服務隔離。

管理服務:提供使用者管理和API操作相關服務

提供產品的開發環境、測試環境、線上環境等生命週期的容器服務平臺。通過SOA服務化系統的部署,支援靜態資源釋出、後端服務的動態擴容釋出、服務的自動上下線等。

資料儲存服務構建

PaaS層上資料庫的構建

基於MySQL在計算節點上進行主從部署,隔離網路環境,提供私有網路例項。所有例項都是高可用例項,即每個例項都有master和slave角色。slave當機時,不會對服務產生影響,master發生當機的情況,會切換至slave例項,同時服務管理會拉起master例項。從而提供穩定可靠的資料庫服務,提供多重安全防護措施和專業的備份、恢復等功能。

PaaS層上儲存服務的構建

基於S3裝置,同時提供多節點的斷點上傳、以及圖片和視訊處理雲資訊獲取服務。提供高可用、支援斷點續傳,同時針對視訊檔案特性,獲取視訊檔案元資訊的儲存特性。其中上傳服務和雲資訊獲取服務採用Docker映象部署,保證服務的管理自動化。

點播元件服務部署

所有點播元件的部署基於Docker映象,通過容器管理服務保證服務的高可用以及自動化管理。元件圖如下所示:

視訊私有云實戰:基於Docker構建點播私有云平臺

  • Registry服務註冊與發現的註冊中心。部署原生的zookeeper叢集作為獨立的註冊中心,主要使用zookeeper提供的一致性同步協調能力和服務探活能力。zookeeper的部署採用Docker容器,利用容器的服務管理能力保障服務的穩定、高可用。
  • Consumer呼叫遠端服務的服務消費方。包含對外提供的API介面和為直播錄製視訊儲存開放的介面。使用者通過介面進行視訊上傳、轉碼和管理。消費方服務部署採用Docker容器,利用容器的服務管理能力保障服務的穩定、高可用。
  • Provider呼叫遠端服務的服務提供方。包含視訊處理服務、視訊檢測服務、錄製視訊處理服務、統計服務。提供方服務部署採用Docker容器,利用容器的服務管理能力保障服務的穩定、高可用。
  • Monitor統計服務的呼叫次數和呼叫時間的監控中心。

元件間呼叫關係

  • 服務提供者啟動,向註冊中心註冊自己提供的服務。
  • 服務消費者啟動,向註冊彙總新訂閱自己所需的服務。
  • 註冊中心基於長連線推送服務提供者列表給消費者。
  • 服務消費者從列表中,基於一定的負載均衡演算法,選一臺進行呼叫,如果失敗,再選取另一臺呼叫。
  • 服務消費者和提供者,記憶體中累計呼叫次數和時間,定時傳送統計資料到監控中心。

優 點

私有云相比較於公有云,在資料安全、充分利用現有硬體和軟體資源、服務質量、管理流程上有突出優勢。基於Docker構建點播私有云平臺在具有以上優勢的同時,還具備資源彈性管理、監控完善、部署簡易、自動化維護等特性。

  1. 資料安全由於儲存服務部署於使用者的硬體環境,構築在防火牆之後,同時儲存服務的高可用,能夠保證使用者資料的可靠和安全。
  2. 監控完善上述描述的哨兵系統介入整個點播私有化平臺的構建過程,能夠及時上報各個過程中元件的異常情況。
  3. 資源彈性管理基於Openstack構建IaaS平臺,能夠自由管理建立雲主機。基於Docker和Kubernetes構建容器管理服務,能夠基於服務映象自由建立服務,同時容器管理服務能夠做到彈性擴容。
  4. 部署簡易、自動化維護在通過事先編排好的指令碼構建好基礎IaaS平臺後,利用服務映象能夠快速部署服務。容器管理服務的服務發現能力使得服務的維護變得簡單。

總 結

整體來說,私有云由於其特性,在實施過程中,運維成本遠遠高於開發成本。所以,在面向使用者交付實施的過程必需簡易,後續維護儘量做到自動化。盡大可能減少人工介入。本文構建過程中採用的架構技術特點(Openstack、Docker、Kubernetes、zookeeper)比較符合這些特點。本文以全域性概述的方式試圖帶大家認識點播私有化平臺構建的整體架構面貌。後續將會在此基礎上不斷深入每個過程的細節,探討實現的考慮點和合理性。想要獲取更多產品乾貨、技術乾貨,歡迎關注網易雲信部落格


相關文章