新浪微博付稳:DCP混合云平台的架构设计以及业务Docker化中的实践经验

51CTO
谢海平
【51CTO记者 谢海平 北京报道】随着公有云的逐渐成熟,Docker技术的兴起,各大企业纷纷升级企业IT架构。新浪微博几亿+的用户量,热点事件给其带来数倍流量瞬间暴增,如何不影响用户体验,又不增加巨大的服务器成...

51CTO记者 谢海平 北京报道随着公有云的逐渐成熟,Docker技术的兴起,各大企业纷纷升级企业IT架构。新浪微博几亿+的用户量,热点事件给其带来数倍流量瞬间暴增,如何不影响用户体验,又不增加巨大的服务器成本投入对技术是一个挑战。基于Docker的DCP混合云就在这样的挑战下应运而生,既解决了流量的瞬间暴增,同时又节约了大量的成本投入。
                                                   

【讲师简介】付稳:新浪微博技术专家,14年初加入微博,混合云DCP项目技术负责人,借助公有云弹性计算资源平台应对爆发式峰值流量,基于Docker、Swarm等容器云技术体系实现分钟级千台规模机器创建及服务部署自动化运维体系。参与微博混合云、Feed混合云多机房部署改造、微博春晚保障工作、Feed性能优化、HBase改造等重量级架构改造项目,对高可用架构、混合云平台建设、多机房部署、应用性能跟踪及分析、业务技术保障等方面有深入研究。

51CTO新浪微博为什么会选择采用混合云架构的方式来做部署?Docker又为何成为首选?

付稳:每年的元旦、春晚、红包飞等会为微博带来巨大的流量挑战,这些业务场景的主要特点是:瞬间峰值高、持续时间短。每一次峰值事件的互动时间在3小时左右,而明星事件、红包飞等业务,经常会遇到高达多倍的瞬间峰值。微博IT的传统应对手段,主要是“靠提前申请足够的设备保证冗余、降级非核心及周边的业务”这两种,除了需要提前预知相关IT成本外,还有业务负载饱和度不一、扩缩容流程繁琐且周期长等问题。由此我们开始深入研究云计算相关技术以及如何利用公共云应对流量瞬时高峰,这就是微博采用混合云架构的起因。同时,我们也调研了更多的业界实际案例如“12306抢票”“小米秒杀”,结果发现原有私有云比较困难的问题实际在公有云上比较容易解决,混合云也正在成为云计算的主要模式和发展方向,于是我们选择基于 Docker 借助公有云弹性计算能力、改造原有多机房架构,构建混合云架构方式来做部署。

更快速的交付和部署、更高效的虚拟化、更轻松的迁移和扩展、更简单的管理是我们选择Docker主要原因。

51CTO:对于您谈到的原有私有云比较困难的问题在公有云上可以比较容易解决,能谈谈具体的做法么?

付稳:我们内网至少有上千台服务器,当访问量在正常范围时,这些内网的服务器足以支撑。但当流量增加至数倍时,对于微博来说,需在十几分钟内完成上千台服务节点扩容。如果仅为应对流量高峰而常备一两千台空闲服务器,这对公司来说成本巨大浪费。如果利用公有云弹性资源优势按需弹性调度,同时改造原有运维体系实现分钟级私有云、公有云弹性扩缩容,这样就可以做到在成本可控前提下提供很好峰值流量应对能力。

微博基于云计算等新技术设计与实现了新一代基于Docker的混合云平台DCP(Docker Container Platform)。DCP目前已经具备20分钟内弹性扩容千台服务器规模,所谓20分钟内弹性扩容千台服务器规模,即公有云要满足10分钟内完成上千台服务器的创建与交付,同时,微博DCP平台则在接下来的10分钟内完成服务器的初始化、服务调度、上线等全流程,包括操作系统的安装、Docker及运维软件环境的安装、各种授权、服务的启动、流量的引入、上线等,这些全部在20分钟内完成。峰值来临迅速调度部署云服务器为新浪微博的流量峰值分摊流量,可以很好的解决私有云短时间无法迅速扩容服务器的问题。公有云的按量弹性需求十分贴合新浪微博的需求,也可以降低大量成本。

51CTO:DCP混合云架构您可以简单介绍下么?

付稳:DCP项目的整个技术体系也是逐渐演变过来的。当Docker容器兴起的时候,我们就做了基于Docker的私有云。而当微博现有的服务器难以支撑流量峰值时,我们就构造了基于Docker的DCP混合云架构。这个项目我们把它分成不同的模块,每一块都有专门小组在负责,持续进行迭代。

DCP混合云架构主要分为三层。最底层是物理主机资源,可以实现机器资源的管理和创建、机器初始化及成本核算等功能。

中间资源调度层,负责容器的资源调度。通过新浪自研Dispatch基于任务模板形式进行容器资源调度。

上层是服务编排层,主要包含基本运维操作。比如集群、服务池的管理、配置分发、滚动发布等。

整个混合云架构依赖分布式镜像中心、服务发现、监控中心、容量评估等基础设施模块。

51CTO:企业的IT架构不是一成不变的,从最初的文字到现在的视频、直播,业务上云过程中DCP做了哪些调整?经过了怎样的挑战?

付稳:从最初的文字到现在的视频、直播,业务上云过程中DCP逐步发展成为公司层面基础平台,面对业务使用方增多同时带来弹性调度规模及业务需求也是不断增加。在一定程度借助公有云的优势,我们与阿里云的合作也在逐渐加深。原来的合作只用阿里云的ECS层面,现在扩展到CDN、视频直播服务、安全滤网、OCR图片鉴黄、大数据服务等方面。

技术上我们进行了架构的拆解,同时也划分了不同的项目组。有的项目组负责IaaS主机层,有的项目组负责镜像仓库的层面,有的项目组负责弹性调度,有的项目组负责服务发现。每个项目组都会遇到自己的问题,但是每个项目组有个目标制和分配制的概念,各项目组重要的问题会拿出来一起讨论协商出方案进行解决。

在应对流量峰值时,单单依靠管理员进行人工操作是远远不够的,因此“无人值守”自动化扩缩容显得十分必要。要实现“无人值守”的扩缩容,首先内部的工具系统需要实现自动化,各系统之间通过API打通,实现全部系统间的联动。

运维自动化包含业务指标和容量指标监控,将产生的数据提供给容量决策系统,在容量决策系统的决策下,实现从运维自动化进化为无人值守的扩缩容。

软件质量是我们在这个过程中发现的最重要问题,运维系统为了保证成功率,我们需要在不同弹性扩容阶段有失败的重试等等各种各样的策略。保证成功率后随着规模越来越大,扩容次数由月为单位变为同一天同一个时间段多次发布,扩容规模由几十台至百台甚至千台级别。如何在这么短的时间内做到性能上的绝对保障,也是一个很大的挑战。

51CTO:新浪微博采用了怎样的部署来实现混合云的安全?

付稳:最开始做Docker的时候,首先新浪内网有一套自己完整的安全解决方案。私有云上用OpenStack做虚拟化,把安全性做的很好;公有云上有安全组,网络基于公有云VPC网络来规避安全风险;内网和公网之间还有一套严格的安全隔离体系。

51CTO: DCP未来的发展方向是什么?

付稳:混合云DCP项目已经完成一套完备的基于Docker的全自动化运维平台的建设,具备20分钟扩容部署千台公有云服务器的能力,并完成了微博主要业务的改造覆盖。在2017年春晚保障中,在不到一天的时间内完成了近5000台服务器的创新和部署上线,帮助微博实现了在新的流量峰值的情况下整体服务无降级的成绩。

未来我们将在内网私有云虚拟化、在线离线资源整合、DCP平台支持机器学习、OpenDCP开源等方面进行体系化建设。

为打造DCP技术品牌建设,现在的DCP主要功能已通过OpenDCP开源。

OpenDCP是基于Docker技术的混合云管理平台,全自动化实现机器创建、环境初始化、容器编排、服务发现一体化扩容能力。涵盖运维配置管理、发布、变更环节,实现敏捷发布的全自动运维体系。功能覆盖镜像市场、多云对接、服务编排、服务发现等云资源管理主要环节。支持金山云、阿里云等主流云厂商及用户私有云,支持Nginx、SLB等服务发现方式,支持Java、PHP、C/C++、Go等主流语言。今年开始我们会进行OpenDCP开源推广及持续建设,接收业界与开源社区的反馈需求,打磨好OpenDCP开源产品。希望把OpenDCP做的更易用、更通用,推广到业界更大范围来使用,也欢迎大家来一起建设OpenDCP。

THEEND