当前位置:云计算企业动态 → 正文

微博 Docker 化混合云平台大剖析

责任编辑:editor006 |来源:企业网D1Net  2016-01-02 18:46:53 本文摘自:开源中国社区

8亿用户、单日活跃人数超过1亿人、每日超过600亿次的API调度、超过1兆次远端程序呼叫,甚至连Log记录档每天都爆增100TB,这是新浪微博平台维运架构师王关胜所面对的挑战,他得设计出一个有能力胜任这些考验的微博系统的新一代架构,而且高层给他的要求是,系统反应时间不得超过50ms。

王关胜表示,微博如此大规模的业务,除了面临系统快速更新的任务,各种不同系统元件间的依赖关系也相当复杂。而当国际事件、名人丑闻等高关注度的议题发生时,经常导致微博的业务量遽增,使得系统流量达到顶峰。

尤其遇到大型节日或活动时,如元旦、春晚、圣诞节还有红包飞等大型活动,同样也会为微博带来巨大的流量挑战。王关胜表示,位于三节的日子,微博的系统流量,会在3个小时内冲上顶峰,而红包飞则是带来瞬间的峰值流量,在两个小时内就达到最高点。过去面对此样的峰值事件,微博需要调度大量硬体设备。而如此做法,除了成本高外,系统在进行水平扩充时,也必须耗费更多的时间。

过长的前置作业时间为微博带来营运痛点

而繁琐扩充流程所花费的时间,为微博带来了营运痛点。过去当峰值事件出现时,首先,维运团队必须申请实体机器,将其登入组态管理资料库(CMDB),在机房安装妥当后,交予第一线作业人员进行初始化,并开始进行部署作业,如环境部署、监控部署、服务部署及流量导入等流程。

王关胜表示,过去的水平扩充的方法,也可能因为各个服务间的系统环境差异,无法充分使用硬体资源,即使有多余的伺服器也无法灵活调度。然而,在设备充足的状况下,完成正常的设备申请程序也必须花上一天,甚至可能碰上没有足够设备的状况,使得系统进行水平扩充花上更多时间。

另外,微博也有许多使用率不高、閒置在各丛集跟服务池的实体基础设施,而微博过去在应付红包飞、三节爆增流量的作法,会预先在各个业务的伺服器丛集,準备多余硬体设备,用来因应峰值突发的事件。而预先準备多余设备,则包含采购周期过长、机房空间不足所带来的高营运成本外等缺点。

而设备申请时间周期长、使用率不高的閒置设备,则对新浪微博带来庞大的成本压力。而因为面临这些挑战、痛点,「我们要建构有弹性的混合云系统。」王关胜表示,微博的新做法是,导入公有云并结合过去的私有云,集结各业务丛集多余的运算设施,构建混合云的系统架构。

他表示,混合云架构除了妥善集成内部硬体资源,解决内部的弹型需求外,当系统面临流量剧增的峰值事件,亦可以将过多的流量引导至外部公有云,减轻内部系统的压力。

王关胜分析了采用混合云作法的好处,他表示,内部私有云具备安全性高、掌握度高的特性,也可以因应内部需求,对硬体配置进行优化,适合处理固定的工作负载。而公有云的设备则具有标準化、自动化的特性,可以快速因应临时需求,在爆增流量的状况下,让企业具备水平扩充工作负载的能力。企业也可以利用公有云按照使用流量的付费机制,减低固定的营运成本,而采用混合云架构,可以兼具私有云以及公有云的优点,「可以同时拥有安全性与弹性扩充能力」,使系统工作负载可以在丛集间进行迁移,让低负载的丛集配置较少的设备,反之,负载高的丛集则必须準备足够的设备。而将Docker导入混合云的架构,也使微博服务稳定度高上许多。

透过三大关键,实现Docker混合云

微博混合云系统不单只是一般的混合云,而是导入了Docker,透过Docker Container快速部署的特性,解决爆量事件对微博系统带来的压力。过去企业在面对爆量事件,一般采取的作法是,首先评估需要多少额外设备,并向外部公有云申请机器分摊流量。然而,除了可能低估应付爆量所需的设备外,即使事先準备了足够的VM,其部署时间成本也远高于Docker,无法即时帮助企业分摊过多外部请求。

而王关胜表示,微博Docker Container平台的混合云核心设计思想,主要是借镜银行的运作机制。他表示,民众可以把钱存在银行,而需要使用金钱的时候,只需要提领一部分,剩余的存款银行可以拿去进行投资。而微博则借镜银行的这一套运作模式,在内部设立一个硬体资源共享池外,还导入了外部公有云。

而要微博实现高弹性调度资源的混合云架构,其中实现的关键则是Docker。王关胜表示,刚开始他们思考该要使用裸机还是VM架构,作为Docker Container的基础设施。后来,考量如果要采用VM,内部机房架构要进行许多改造。所以,目前微博的内部私有云使用裸机部署,而外部公有云则采用阿里云弹性计算服务(ECS)的VM架构。

王关胜也揭露微博构成Docker Container平台基础架构的3大关键,包含Docker在裸机上的部署架构、自主开发的Docker Registry以及网页伺服器Nginx Upsync模块。

第一是Docker Container的裸机部署方案,透过IP位址以及Port定义一个唯一的Container服务,而每台伺服器上则可以开启多个Container,各个具有不同的功能。

例如,每一个Container服务所产生的行为日志,会经由一个名为Scribe的Container集中收集。而集中后的数据则可进行用户行为分析。

此外,如果要进行Container的运作监控,则是透过建立Cadvisor Container,将Container运行产生的资料,传送至Elasticsearch、Logstash及Kibana这3种开源监控软体,进行分析。或是,搭配开源测量工具Graphite,监控系统的运作状况。

第二则是Docker Registry,王关胜表示,微博使用Docker官方提供的Docker Registry,构建了私有的映像档储存库Registry Hub,并且透过这个映像档储存库调度Docker Container需要的映像档。

在今年,微博开发出了第2版本的Registry Hub,将储存引擎改为使用分散式开源储存平台Ceph,并且在Docker Registry前端结合Nginx,实作负载平衡功能。王关胜表示,在升级过程中必须让系统能够兼容新旧版本的Registry Hub,而前端Nginx可以分析系统需求,辨別要从新版本或是旧版本映像档储存库下载映像档。

而外部公有云,微博则是透过映像档快取,不必像私有云一样,部署完整的映像档储存库。微博位于阿里云映像档快取架构,总共包含3层架构。包含最底层作業系统、中间层的运作环境如Java、Tomcat,及最上层的Container。而在调度Container时,透过使用dockerignore指令,减少不必要的文件、目录,借此减低映像档的容量。在映像档标签命名上,微博则禁止使用「Latest」做为映像档标签。王关胜表示,由于不同使用者对于标签的理解不一,可能会误以为是代表映像档最新的版本。

而第三则是微博开发的Nginx Upsync模块,王关胜表示,去年微博开始使用Container时,必须透过Container将Nginx掛载至前端,执行负载平衡的任务。而Nginx部署完成后,必须透过重启reload指令重启Nginx。王关胜发现,Nginx对于特別大的流量会发生运作不稳定的情形。所以微博也直接开发了Nginx Upsync模块,不需要透过reload指令重启,也可以保持系统稳定运作。而微博也针对两种模块进行比较,发现流量大时,未修改的Nginx模块会比Nginx Upsync模块多上10%的请求。

目前微博开发的Docker Container平台系统,主要包含4层架构:主机层、调度层及排程层,最上层则是包含应用程式的业务层。底层的混合云基础架构则架设了专线,打通微博内部资料中心以及阿里云。

当业务A多馀的运算资源导入溷合云共享池时,此时爆量的业务C,可从共享池调度业务A的运算资源,而度过峰值事件后,便可以把多馀的运算资源归还至共享池。

王关胜表示,目前微博的溷合云系统在今年10月完成,目前开启的Container数量约是3,000个。不过,王关胜表示,在今年的双11,微博也用此系统进行实地演练,也达成微博所设定每次水平扩充时间低于5分钟的目标。

关键字:Docker王关胜container

本文摘自:开源中国社区

x 微博 Docker 化混合云平台大剖析 扫一扫
分享本文到朋友圈
当前位置:云计算企业动态 → 正文

微博 Docker 化混合云平台大剖析

责任编辑:editor006 |来源:企业网D1Net  2016-01-02 18:46:53 本文摘自:开源中国社区

8亿用户、单日活跃人数超过1亿人、每日超过600亿次的API调度、超过1兆次远端程序呼叫,甚至连Log记录档每天都爆增100TB,这是新浪微博平台维运架构师王关胜所面对的挑战,他得设计出一个有能力胜任这些考验的微博系统的新一代架构,而且高层给他的要求是,系统反应时间不得超过50ms。

王关胜表示,微博如此大规模的业务,除了面临系统快速更新的任务,各种不同系统元件间的依赖关系也相当复杂。而当国际事件、名人丑闻等高关注度的议题发生时,经常导致微博的业务量遽增,使得系统流量达到顶峰。

尤其遇到大型节日或活动时,如元旦、春晚、圣诞节还有红包飞等大型活动,同样也会为微博带来巨大的流量挑战。王关胜表示,位于三节的日子,微博的系统流量,会在3个小时内冲上顶峰,而红包飞则是带来瞬间的峰值流量,在两个小时内就达到最高点。过去面对此样的峰值事件,微博需要调度大量硬体设备。而如此做法,除了成本高外,系统在进行水平扩充时,也必须耗费更多的时间。

过长的前置作业时间为微博带来营运痛点

而繁琐扩充流程所花费的时间,为微博带来了营运痛点。过去当峰值事件出现时,首先,维运团队必须申请实体机器,将其登入组态管理资料库(CMDB),在机房安装妥当后,交予第一线作业人员进行初始化,并开始进行部署作业,如环境部署、监控部署、服务部署及流量导入等流程。

王关胜表示,过去的水平扩充的方法,也可能因为各个服务间的系统环境差异,无法充分使用硬体资源,即使有多余的伺服器也无法灵活调度。然而,在设备充足的状况下,完成正常的设备申请程序也必须花上一天,甚至可能碰上没有足够设备的状况,使得系统进行水平扩充花上更多时间。

另外,微博也有许多使用率不高、閒置在各丛集跟服务池的实体基础设施,而微博过去在应付红包飞、三节爆增流量的作法,会预先在各个业务的伺服器丛集,準备多余硬体设备,用来因应峰值突发的事件。而预先準备多余设备,则包含采购周期过长、机房空间不足所带来的高营运成本外等缺点。

而设备申请时间周期长、使用率不高的閒置设备,则对新浪微博带来庞大的成本压力。而因为面临这些挑战、痛点,「我们要建构有弹性的混合云系统。」王关胜表示,微博的新做法是,导入公有云并结合过去的私有云,集结各业务丛集多余的运算设施,构建混合云的系统架构。

他表示,混合云架构除了妥善集成内部硬体资源,解决内部的弹型需求外,当系统面临流量剧增的峰值事件,亦可以将过多的流量引导至外部公有云,减轻内部系统的压力。

王关胜分析了采用混合云作法的好处,他表示,内部私有云具备安全性高、掌握度高的特性,也可以因应内部需求,对硬体配置进行优化,适合处理固定的工作负载。而公有云的设备则具有标準化、自动化的特性,可以快速因应临时需求,在爆增流量的状况下,让企业具备水平扩充工作负载的能力。企业也可以利用公有云按照使用流量的付费机制,减低固定的营运成本,而采用混合云架构,可以兼具私有云以及公有云的优点,「可以同时拥有安全性与弹性扩充能力」,使系统工作负载可以在丛集间进行迁移,让低负载的丛集配置较少的设备,反之,负载高的丛集则必须準备足够的设备。而将Docker导入混合云的架构,也使微博服务稳定度高上许多。

透过三大关键,实现Docker混合云

微博混合云系统不单只是一般的混合云,而是导入了Docker,透过Docker Container快速部署的特性,解决爆量事件对微博系统带来的压力。过去企业在面对爆量事件,一般采取的作法是,首先评估需要多少额外设备,并向外部公有云申请机器分摊流量。然而,除了可能低估应付爆量所需的设备外,即使事先準备了足够的VM,其部署时间成本也远高于Docker,无法即时帮助企业分摊过多外部请求。

而王关胜表示,微博Docker Container平台的混合云核心设计思想,主要是借镜银行的运作机制。他表示,民众可以把钱存在银行,而需要使用金钱的时候,只需要提领一部分,剩余的存款银行可以拿去进行投资。而微博则借镜银行的这一套运作模式,在内部设立一个硬体资源共享池外,还导入了外部公有云。

而要微博实现高弹性调度资源的混合云架构,其中实现的关键则是Docker。王关胜表示,刚开始他们思考该要使用裸机还是VM架构,作为Docker Container的基础设施。后来,考量如果要采用VM,内部机房架构要进行许多改造。所以,目前微博的内部私有云使用裸机部署,而外部公有云则采用阿里云弹性计算服务(ECS)的VM架构。

王关胜也揭露微博构成Docker Container平台基础架构的3大关键,包含Docker在裸机上的部署架构、自主开发的Docker Registry以及网页伺服器Nginx Upsync模块。

第一是Docker Container的裸机部署方案,透过IP位址以及Port定义一个唯一的Container服务,而每台伺服器上则可以开启多个Container,各个具有不同的功能。

例如,每一个Container服务所产生的行为日志,会经由一个名为Scribe的Container集中收集。而集中后的数据则可进行用户行为分析。

此外,如果要进行Container的运作监控,则是透过建立Cadvisor Container,将Container运行产生的资料,传送至Elasticsearch、Logstash及Kibana这3种开源监控软体,进行分析。或是,搭配开源测量工具Graphite,监控系统的运作状况。

第二则是Docker Registry,王关胜表示,微博使用Docker官方提供的Docker Registry,构建了私有的映像档储存库Registry Hub,并且透过这个映像档储存库调度Docker Container需要的映像档。

在今年,微博开发出了第2版本的Registry Hub,将储存引擎改为使用分散式开源储存平台Ceph,并且在Docker Registry前端结合Nginx,实作负载平衡功能。王关胜表示,在升级过程中必须让系统能够兼容新旧版本的Registry Hub,而前端Nginx可以分析系统需求,辨別要从新版本或是旧版本映像档储存库下载映像档。

而外部公有云,微博则是透过映像档快取,不必像私有云一样,部署完整的映像档储存库。微博位于阿里云映像档快取架构,总共包含3层架构。包含最底层作業系统、中间层的运作环境如Java、Tomcat,及最上层的Container。而在调度Container时,透过使用dockerignore指令,减少不必要的文件、目录,借此减低映像档的容量。在映像档标签命名上,微博则禁止使用「Latest」做为映像档标签。王关胜表示,由于不同使用者对于标签的理解不一,可能会误以为是代表映像档最新的版本。

而第三则是微博开发的Nginx Upsync模块,王关胜表示,去年微博开始使用Container时,必须透过Container将Nginx掛载至前端,执行负载平衡的任务。而Nginx部署完成后,必须透过重启reload指令重启Nginx。王关胜发现,Nginx对于特別大的流量会发生运作不稳定的情形。所以微博也直接开发了Nginx Upsync模块,不需要透过reload指令重启,也可以保持系统稳定运作。而微博也针对两种模块进行比较,发现流量大时,未修改的Nginx模块会比Nginx Upsync模块多上10%的请求。

目前微博开发的Docker Container平台系统,主要包含4层架构:主机层、调度层及排程层,最上层则是包含应用程式的业务层。底层的混合云基础架构则架设了专线,打通微博内部资料中心以及阿里云。

当业务A多馀的运算资源导入溷合云共享池时,此时爆量的业务C,可从共享池调度业务A的运算资源,而度过峰值事件后,便可以把多馀的运算资源归还至共享池。

王关胜表示,目前微博的溷合云系统在今年10月完成,目前开启的Container数量约是3,000个。不过,王关胜表示,在今年的双11,微博也用此系统进行实地演练,也达成微博所设定每次水平扩充时间低于5分钟的目标。

关键字:Docker王关胜container

本文摘自:开源中国社区

电子周刊
回到顶部

关于我们联系我们版权声明隐私条款广告服务友情链接投稿中心招贤纳士

企业网版权所有 ©2010-2024 京ICP备09108050号-6 京公网安备 11010502049343号

^