容器,云和代码:Yelp如何使用Mesos和Docker构建混合云?

本文讲的是容器,云和代码:Yelp如何使用Mesos和Docker构建混合云,【编者的话】为了解决Yelp的基础设施问题,Eaton带领团队对容器进行调研并寻求解决方法,最终决定使用Apache Mesos和Mesosphere。基于Mesosphere构建了PaasTA服务,为测试环境开发了Seagull平台。本文对Yelp公司采取容器方案前的困境以及采取容器方案后的好处分别进行了说明。

2013年底,Yelp的运营总监Sam Eaton意识到公司基础设施存在问题。对开发和运维人员来说,在Yelp自己的数据中心和亚马逊云服务上扩展网站已经变得十分复杂并要消耗大量资源。

Eaton解释到:“现在的问题是我们如何在自己的数据中心和AWS云上统一管理部署服务,并且不增加开发人员负担”。

选择太多

讽刺的是,Yelp的问题与缺乏创新无关。Yelp已经为裸机部署开发了自己的系统,并且使用开源的Asgard系统用于AWS部署。为了实现持续部署,每天都要对网站进行多次更新。

Yelp正饱受各种方案的煎熬而且不得不忍受每个方案的优缺点。为AWS构建新的虚拟机映像(即“黄金映像”)可能需要长达一个小时,即便这些镜像可以快速启动。在裸机上启动业务,管理方便,不过扩展性是个大问题。Yelp的开发者尝试在本地部署服务和在云中也部署服务时,处理AWS实例和Yelp硬件之间的差异对他们来说真是糟透了。

Eaton说:“他们不得不为裸机采取一种配置,为AWS采取完全不同的配置,开发人员的感觉真是糟透了!”。

除了服务部署复杂性,Yelp还存在测试问题。Eaton说开发人员每天都会发布很多版本,不过因为进行一次完整的测试需要90分钟,整个速度被大幅耽搁。并行化的测试也存在问题,Eaton的研究小组发现想要不浪费资源,完成所有依赖关系分析并找到测试计划的最佳方案真是太难了。

他说:“对我们来说,这是一个‘装箱’问题,而且更多的虚拟机或硬件也无法解决”。

Docker来了

Eaton和他的团队为了解决云和本地不断增长的服务池问题考察了很多方案。他们曾经打算部署OpenStack也曾考虑Eucalyptus(一个创业公司,专注与AWS兼容性,后被惠普收购)的方案,就为了建立一个横跨云和本地的混合环境。

不过,Yelp的技术团队最终决定今后的方向是Docker容器而不是虚拟机。Docker可以解决一些Yelp的服务部署问题,因为开发人员可以管理自己的容器,不用等到构建最终镜像就可以迅速处理依赖问题并打包。

Running millions of containers means Mesosphere and Mesos

Eaton和他的团队经过研究,认定Apache Mesos的Mesosphere是满足Yelp业务扩展运行容器的最佳方案。Mesos在不停掉服务器相关组件的情况下就完成了Yelp的机器集群(不管虚拟还是物理)资源池聚合给Eaton留下了深刻印象。开发人员可以任意启动容器,再也不用担心服务器配置了。

除了Apache Mesos的基础功能,Eaton还选择对Mesosphere的所有功能进行测试,其中包括Marathon工具。Eaton喜欢Mesosphere 在Marathon这个PAAS框架中提供的原生hooks,Yelp用他们来计划和编排计算作业。此外,Mesosphere对数据中心操作系统(DCOS)的理念也与Yelp的目标一致,Yelp的愿景就是在本地和云中创建一个单一的开发环境,工具链和DevOps过程。

(* Mesophere仍然提供开源源码下载,但现在还提供作为商业软件产品的数据中心操作系统(DCOS)。DCOS产品包括许多重要组件和附加功能,将大大改善部署和管理分布式服务的体验。)

Yelp能够在三个月内打造一个Mesosphere集群,并完成生产环境要求。

PaaSTA服务

在Mesosphere上,Eaton的团队构建了一个以Docker为基础的微服务架构,它被称为PaaSTA,使得容器级的作业在任意计算平台上都可以运行。

Eaton解释道:

我们非常喜欢Docker,在整个过程中带给开发人员一个一致的环境。Marathon和PaaSTA的工具,让他们有一个更好的方式来安排适当的容器运行他们的服务,并向开发人员屏蔽底层基础设施。他们不必关心自己的业务是运行在自己的数据中心或者AWS还是其他一些云服务提供商。 如果根据PaaSTA平台规则编写服务并正确的配置Docker容器,那么PaaSTA会通过资源发现并启动容器完成剩下所有服务部署工作。

整个Yelp的工程团队都感受到了PaaSTA和Mesos的好处。基础架构服务技术主管John Billings是这样说的:

我们曾经花了大量时间手动分配服务到独立机器。当推出新服务时就遇到了瓶颈。如果有一台机器出现故障,那么我们不得不单独联系所有受影响的用户,并要求他们把服务迁移到新的硬件上。当业务量增加的时候我们必须保证服务正常。当生产服务已经发展到数以万计时,这已经成为了一个不可能的任务。

“PaaSTA通过允许内部数据库和AWS上的硬件自动配置和服务迁移,将我们从这些繁琐耗时的任务中解放出来。开发人员和运维人员完全爱上了这种技术。”

视频

与Seagull一同起飞

除了提供的核心PaaSTA平台服务,Yelp也用Mesospher来改进测试基础设施,开发了全新的测试平台Seagull。

通过使用Mesos和一个自定义调度,Yelp为单元测试建立一个更高效的并行和快速系统。Yelp公司目前每天运行约1700万独立测试,有的直接在机器上进行,有的在容器上,这些全部由Mesos管理。Eaton说,Yelp已经每天启动100万个容器,随着公司继续将测试转移到容器中这个数字还会继续增加。

Mesosphere也给了Yelp的一个意想不到的好处:提高资源利用率​​意味着Eaton的团队可以更积极的应对AWS spot market计算能力来节省资金。

他解释说:“随着测试数量增加,我们购买的用于测试的AWS实例已远超保留的实例数量,如果我们使用动态方式购买实例,这些实例在测试过程中可能就释放了。Mesos能够通过重新安排测试到新的实例且无需中断作业,这样就能把这类实例保留下来。”

Eaton说:“Mesosphere和Marathon的结合,为我们的开发人员提供了一个更有弹性计算能力并可以快速部署的环境,他们可以将更多精力放在编程上而不用太关注不同平台的影响。对开发人员来说Mesosphere很好,对Yelp而言这就够了。”

原文链接:CONTAINERS, CLOUDS AND CODE: HOW YELP BUILT A HYBRID CLOUD USING MESOS AND DOCKER (翻译:朱高校)

原文发布时间为:2015-12-08

本文作者:zhugaoxiao 

本文来自合作伙伴DockerOne,了解相关信息可以关注DockerOne。

原文标题:容器,云和代码:Yelp如何使用Mesos和Docker构建混合云?

时间: 2024-10-14 17:42:24

容器,云和代码:Yelp如何使用Mesos和Docker构建混合云?的相关文章

Yelp是如何利用Mesos和Docker搭建混合云的?

本文讲的是Yelp是如何利用Mesos和Docker搭建混合云的,[编者的话]为了让开发人员能够在数据中心和AWS上统一管理部署服务,且不增加工作量,Yelp围绕Docker容器寻找解决办法,Eaton决定选用Apache Mesos和Mesosphere,基于Mesosphere构建了PaaSTA,开发了新的测试平台Seagull.Mesosphere和Marathon的组合让开发人员从不同平台的处理中解脱,将精力放在了代码上.过程的艰辛与最终选择的好处都在文中做了说明. 2013年底,Yel

去哪儿网基于Mesos和Docker构建私有云服务的实践

本文讲的是去哪儿网基于Mesos和Docker构建私有云服务的实践[编者的话]本文深入介绍了去哪儿网利用Mesos和Docker构建私有云服务的全过程,分享了从无状态应用向有状态应用逐步过度的经验与心得. 平台概览 2014年下半年左右,去哪儿完成了有关构建私有云服务的技术调研,并最终拍定了Docker/Mesos这一方案.下图1展示了去哪儿数据平台的整体架构: 图1:去哪儿数据平台的整体架构 该平台目前已实现了如下多项功能: 每天处理约340亿/25TB的数据: 90%的数据在100ms内完成

去哪儿网基于Mesos和Docker构建私有云服务实践

本文深入介绍了去哪儿网利用Mesos和Docker构建私有云服务的全过程,分享了从无状态应用向有状态应用逐步过度的经验与心得. 平台概览 2014年下半年左右,去哪儿完成了有关构建私有云服务的技术调研,并最终拍定了Docker/Mesos这一方案.下图1展示了去哪儿数据平台的整体架构: 图1:去哪儿数据平台的整体架构 该平台目前已实现了如下多项功能: 每天处理约340亿/25TB的数据; 90%的数据在100ms内完成处理; 最长3h/24h的数据回放; 私有的Elasticsearch Clo

私有云相对更流行的公有云和混合云有什么优势?

私有云具备许多优势,让其比构建混合云或仅依靠公共云更具吸引力. 混合云使组织能够在公有云环境中运行,并获得私有云的优势,例如使用其数据中心中的硬件资源. 虽然有一些公司(如初创公司)完全运行在公有云上. 但也有许多公司希望控制他们的私有云. 私有云可能是三种云环境中最不流行的,但它依然有其一席之地. 私有云相对于公有云和混合云的优势 组织可能构建私有云的一个原因是它有时是最具性价比的选择.公有云的价格可能让你觉得很容易承受,但是每月的使用费也可以高昂. 公有云提供商,如亚马逊和微软,根据客户消费

通过Mesos、Docker和Go,使用300行代码创建一个分布式系统

构建一个分布式系统是很困难的.它需要可扩展性.容错性.高可用性.一致性.可伸缩以及高效.为了达到这些目的,分布式系统需要很多复杂的组件以一种复杂的方式协同工作.例如,Apache Hadoop在大型集群上并行处理TB级别的数据集时,需要依赖有着高容错的文件系统(HDFS)来达到高吞吐量. 在之前,每一个新的分布式系统,例如Hadoop和Cassandra,都需要构建自己的底层架构,包括消息处理.存储.网络.容错性和可伸缩性.庆幸的是,像Apache Mesos这样的系统,通过给分布式系统的关键构

以Mesos和Docker为核心的云操作系统

  11月18日,北京数人云COO谢乐冰老师在DBA+社群中间件用户组进行了一次主题为"以Mesos和Docker为核心的云操作系统"的线上分享.小编特别整理出其中精华内容,供大家学习交流.  嘉宾简介   北京数人云COO 毕业于柏林工业大学计算机系,回国就职于中国惠普,多年服务于电信行业 目前专注于Mesos和容器技术在企业生产环境特定场景的应用,实现业务规模和运维复杂度的逐步解耦,让IT基础架构推进企业在互联网时代持续发展 内容摘要   以Mesos和Dcoker为核心的云操作系

用Puppet和Docker构建工具来自动化容器产品部署

本文讲的是用Puppet和Docker构建工具来自动化容器产品部署[编者的话]本文介绍了最新版本的Puppet企业版支持的Docker自动化构建工具,包括了集成的Jenkins持续集成和部署以及支持新的编排系统. Puppet希望能将Docker构建工具纳入到自己的IT自动化管理中.新版本的Puppet企业版(Puppet Enterprise 2016.4)支持构建Docker容器,并自动部署到生产环境中. Puppet的最新版本是在Puppet的用户年会PuppetConf 2016上公布的

优云实践:持续交付的Mesos与Docker导入篇

变革这个词在当今的数字化时代司空见惯,IT技术每过一段时间就会有一起革新,从WEB2.0.虚拟化.云计算.大数据.微架构.DevOps再到今天的容器Docker与Mesos. Docker的出现方便了应用的测试.部署.与升级,其将各种应用程序和它们所依赖的运行环境打包成标准的Container/Image,进而发布到不同的平台上运行.Docker的轻量级.快速部署.迁移方便的特性促进了DevOps的落地,借用容器,开发人员可以很方便的融入到产品的交付流程当中. Mesos是软件定义数据中心的最佳

Mesos和Docker的集成

因为Docker本身想管理整个容器,从chroot.命名空间到整个命名空间的cgroup,它会和默认的Mesos容器发生冲突.因此,Mesos添加了容器机的支持,一种可插拔的机制,让Mesos的容器机子系统可扩展:最初Mesos的基于 LXC/cgroup的容器被引入到容器机API里,Docker是添加的第一个新的容器机,现在也有了全面的文档协议,介绍如何添加新的容器机,比如KVM虚拟机. 使用Docker 为了使用Docker容器机技术,必须将其包含进Mesos slave的命令行里.比如,m