视频私有云实战:基于 Docker 构建点播私有云平台

私有云是为一个客户单独使用而构建的,因而提供对数据、安全性和服务质量的最有效控制。前置条件是客户拥有基础设施,并可以使用基础设施在其上部署应用程序。其核心属性是专有的资源。本篇文章将会结合网易云信的实践经验,以全局概述的方式带大家认识点播私有化平台构建的整体架构面貌。

推荐阅读
《几十万人同时在线的直播间聊天,如何设计服务端架构?》
《高并发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)比较符合这些特点。本文以全局概述的方式试图带大家认识点播私有化平台构建的整体架构面貌。后续将会在此基础上不断深入每个过程的细节,探讨实现的考虑点和合理性。


随着即时通讯以及音频处理和压缩技术的不断发展,效果更好、适用范围更广、性能更高的算法和新的技术必将不断涌现,如果你有好的技术或者分享,欢迎关注网易云信官方博客和 GitHub:

关注更多技术干货内容:网易云信博客
欢迎关注网易云信 GitHub
欢迎关注网易云信官网

相关推荐