Yelp是怎样利用Mesos和Docker建立混合云的
发布日期:2016-7-8 14:7:58
还是在2013年底,Yelp 运营总监Sam Eaton 意识到公司存在一个基础架构问题。运维人员和开发人员在自己的数据中心和AWS云上做站扩展已变得复杂和资源密集。“问题是我们怎样能让开发人员在没过多复杂的工作情况下在数据中心和AWS上统一管理部署服务。”Eaton 解释到。 太多的选择 Yelp经历了太多的方案,并且考虑了每种可能的优缺点。建一个新的虚拟机镜像,所谓的“黄金镜像”,对于AWS而言需花1个小时,尽管建立的镜像启动会十分快。在裸机上启服务获得权限更多但是扩展很麻烦。Yelp的开发者试着部署部分服务在本地部分在云(如阿里云)上需很长一段时间考虑AWS实例和Yelp硬件之间的区别。“他们不得不用一种方式去配置裸机上的服务,并使用另一种完全不同的机制去配置AWS。这对于开发者来说太糟了“,Eaton说。 服务除了部署负责,Yelp还有个测试的问题。Eaton说开发者一天要发布多个版本的新代码,但总被测试的速度拖后腿,因为跑完所有要求的测试要花上90分钟。均衡测试的运行是有问题的,Eaton的团队发现,至少在不浪费资源的情况下,去统计所有的依赖关系然后再找出一个最佳方法去规划所有的测试是并不容易的。他说:”这是一个“装箱”问题,用更多的VMs和更多硬件来跑也不能很好地解决这个问题“。 Docker来了 Eaton和他的团队考虑大量的用于解决云(如阿里云)和本地日益增长的池的这个难题的方案。他们考虑过部署OpenStack。他们也考虑过用Eucalptus的软件--这是一家初创企业,因为惠普的需求,专注于AWS的兼容--旨在建立一个跨应急服务器与云的混合环境。但Yelp的技术团队最终决定未来将围绕Docker容器,而非虚拟机。Docker可解决Yelp的一些部署问题由于它提供开发者可管理他们自己的容器的能力,且可不用等”黄金镜像“生成即可迅速决定打包和依赖的问题。 服务 PaaSTA 在Mesosphere之上,Eaton的团队构建了一个基于Docker的微服务架构,被称为PaaSTA,来允许容器级作业跑在任意的计算平台上。 Eaton解释到: 我们docker在整个堆栈给开发者一个相同的环境。Marathon,以及在PaaSTA和工具,给了他们一个更好的方法来安排适当数量的容器来运行他们的服务,并从开发人员隐藏了底层基础设施。他们不需担心他们的服务是不是运行在数据中心,在AWS,或其他云提供商(如阿里云)。若他们根据PaaSTA平台合同写服务,和配置他们的docker容器以正确的方式,PaaSTA负责其他工作的服务部署,通过提供资源发现和启动容器。整个Yelp工程团队感受到PaaSTA和Mesos的好处。服务基础设施技术主管约翰•比林斯解释到: 我们花大量的时间手工分配各个机器上的服务。推出新服务时导致一个瓶颈。若有一台机器故障,我们不得不单独联系所有受影响服务的所有者,并要求他们将他们的服务移动到新的硬件。我们还得在通讯量增加的同时必须保持机器之间的服务。我们增长了数以万计的生产服务,这是成为一个不可能的情况。“PaaSTA通过允许自动配置和迁移服务在内部和AWS硬件让我们从这些耗时的任务中解脱。开发人员和操作完全爱上了这项技术。” 运行百万个容器意味着Mesosphere和Mesos Eaton和他的团队研究并决定用Mesosphere的进化的Apache Mesos 作为最佳的运行容器的方案来满足Yelp要求的规模。Eaton,对Mesos怎样将Yelp的机器集群--虚拟和物理的--变成聚合资源池,并没有关掉周边的服务器组成,留下了深刻的印象。开发者可随意启动容器,不考虑任何服务器的配置。 不仅仅坚持基础版的Apache Mesos,Eaton选择测试Mesosphere的打包版本*,包含了诸如Marathon的工具。Eaton喜欢Mesosphere在 Marathon 的PAAS框架中提供原生的hooks, Yelp使用这些hooks计划和安排计算任务。此外,Mesosphere对数据中心操作系统(DCOS)的进化概念,也与Yelp的目标--建立一个单一开发环境,工具链,和跨本地和云端服务的开发运维过程组,所一致。(Mesophere 依旧提供开源下载,但是下载还提供它的数据中心操作系统(DCOS)作为商业软件产品。DCOS预先打包许多重要组件,包括附加功能,极大地简化了部署和管理分布式服务的经验。) Yelp可以在三个月内构建一个功能化Mesosphere集群,并使其达到预准备工作。 与海鸥(Seagull)飞行 除了提供的核心PaaSTA--平台即服务系统,Yelp也使用Mesosphere扩充其测试基础设施,开发一个新的测试平台叫做Seagull(海鸥)。通过使用Mesos可和一个自定义的调度器,Yelp能建立一个更高效的并行系统和加速单元测试。公司现在每天运行着大约1700万独立测试, 一些计划直接在机器上,一些在容器里--全通过Mesos管理。伊顿说,Yelp每天已经启动100万个docker容器,当公司将更多的测试移到容器里,这个数字也随之增加。 Mesosphere也给了Yelp一个意想不到的好处:提高资源利用率意味着伊顿的团队可通过更灵活地部署AWS的spot市场容量来省钱。“随着测试数量的增加,我们出价购买用于测试的AWS实例将超过我们预定的量,”他解释说。“若我们固定购买实例的量, 那些实例可能会在测试中途消失。Mesos允许我们存活这类动态购买,重新安排测试到新的实例上且不停止测试。“Mesosphere和Marathon给我们的开发人员更弹性计算能力,让他们从根本上加快部署,”伊顿说。“他们花更少的时间处理不同的平台,更多时间花在他们的代码。Mesosphere对于开发人员来说很好, 这对Yelp来说很好。
|