Spinnaker 介绍 – Netflix 的持续交付平台

栏目: 编程工具 · 发布时间: 5年前

内容简介:Spinnaker 是 Netflix 在2015年开源的一款持续交付平台,它继承了 Netflix 上一代集群和部署管理工具在深入了解 Spinnaker 之前,先扯一扯 Netflix 的技术文化:这是一家全面拥抱云的公司,为了更好的观察系统在故障时的情况,还研发了

Spinnaker 是 Netflix 在2015年开源的一款持续交付平台,它继承了 Netflix 上一代集群和部署管理工具 Asgard:Web-based Cloud Management and Deployment 的优点,同时根据公司业务以及技术的的发展抛弃了一些过时的设计:提高了持续交付系统的可复用性,提供了稳定可靠的API,提供了对基础设施和程序全局性的视图,配置、管理、运维都更简单,而且还完全兼容 Asgard,总之对于 Netflix 来说 Spinnaker 是更牛逼的持续交付平台。

在深入了解 Spinnaker 之前,先扯一扯 Netflix 的技术文化:这是一家全面拥抱云的公司, 据报道数据中心完全部署在 AWS 上 ,是 AWS 的超级大客户。在上云后他们发现故障仍然避免不了,为了更加从容的应对这些故障,就搞了一个工具  Chaos Monkey 会随机停止 生产环境 中的虚拟机,通过观察系统在真实故障中的表现来确保程序的健壮性,也通过实战来验证各种高可用技术是否靠谱。接着冒出了  Chaos Gorilla ,会停止一整个可用域中的所有机器;最后还有 Chaos Kong ,直接停掉一整个 Region,非常有挑战精神(丧心病狂)。

为了更好的观察系统在故障时的情况,还研发了 全局可视化系统 ,代号 Flux,可以将整个系统的逻辑架构和各服务之间的流量可视化在大屏幕上,效果图如下:

Spinnaker 介绍 – Netflix 的持续交付平台

他们每个月有一个活动:将一个 Region 里的机器全部关掉,看 Netflix 服务是否正常。有兴趣看视频的可以 移步这里

另外,Netflix 除了云服务,还有自建CDN,即 Open Connect 项目,这个项目的边缘设备是地地道道的物理设备,并且从硬件到软件全部是自己定制的。关于 Open Connect 的详细介绍,以及使用的技术栈可以看  Netflix 的分享 ,还有他们 如何做 CDN 监控的

主要功能

回到 Spinnaker,他主要管理 Netflix 的云服务,并不管理 OpenConnect 相关的设备和服务。Spinnaker 是基于云的 CD 平台,提供快速、可靠、稳定的软件变更服务。主要包含两类功能:集群管理(Cluster management)和部署管理(deployment management)。

1. 集群管理

集群管理主要用于管理云资源,Spinnaker 所说的“云”可以理解成 AWS,即主要是 IaaS 的资源,比如 OpenStack,Google云,微软云等,后来还支持了容器,但是管理方式还是按照管理基础设施的模式来设计的。

Spinnaker 介绍 – Netflix 的持续交付平台

Spinnaker 中管理如下资源:

Server Group:最基本的逻辑资源,包括了若干使用相同配置和镜像的虚拟机,若干负载均衡(load balancer),以及安全组。

安全组规则(Security Group):就是 AWS 中的安全组,可以理解成防火墙。

负载均衡(Load Balancer):AWS 中的 ELB,也可能是安装在虚拟机中的负载均衡。

2. 部署管理

管理部署流程是 Spinnaker 的核心功能,他负责将软件包(可能是手工创建的或者 jenkins 创建的)打成一个镜像,用这个镜像生成对应的虚拟机,让服务真正运行起来:

Spinnaker 介绍 – Netflix 的持续交付平台

pipeline

在 Spinnaker 中一个部署流程叫做pipeline,由若干个操作组成,每个操作又叫做一个 stage 。触发一个 pipeline 方式非常灵活,可以手动触发,也可以用 jenkins、CRON 等。同时,可以配置 pipeline 向外发送一些通知信息,比如“开始”,“结束”,“失败”等。

stage

pipeline 中的一个操作,stage 之间可以有先后顺序,也可以并行。Spinnaker 中预定义了一些 stage 的类型,这些类型的 stage 往往使用频率比较高:

  • Bake :在某个 region 中制作虚拟机的镜像。Netflix 推崇不可变基础设施的理念,所以他们将软件打包进镜像的方式来部署服务。创建镜像的核心基于  Packer (Hashicorp 开源的镜像烘焙工具,Vagrant 就出自该公司 CEO 之手)。如果部署时用 docker,则打包过程就交由  docker build  完成。
  • Deploy :用 Bake 中创建的镜像部署成一台虚拟机。
  • Jenkins : 执行一个 Jenkins 的 job。
  • Manual Judgment  : 暂停,等待用户的许可后再继续。
  • Pipeline  : 执行另外一个 pipeline。
  • Script  :执行任意的脚本。
  • Wait  : 等待一段时间。
Spinnaker 介绍 – Netflix 的持续交付平台

从 pipeline 的定义看,Spinnaker 和 Jenkins 有几分相似,不过两者的设计出发点的不同, stackoverflow上有相关的讨论 。总结来看,jenkins 偏向 CI,产出物是软件包;Spinnaker 是 CD,将软件包分发到服务器/虚拟机上,保持软件正常运行,它的 目标只是让“部署”的过程更容易更可扩展 。有一个例子可以说明两者的关系:Netflix 内部有人不用 Spinnaker 的 pipeline,而只是将 Spinnaker 看为一个部署工具,直接在 jenkins 中调用它的 API 来部署服务。

逻辑架构

Spinnaker 自己是一个微服务架构,由若干组件组成,所有组件都开源 在github上 ,整个逻辑架构如下图所示:

Spinnaker 介绍 – Netflix 的持续交付平台

Deck:AngularJS 写的 WebUI。

Gate:提供 API 接口给外部程序,Deck 也是其中之一,Spinnaker 的大门。

Cloud Driver:对接各种云服务提供商,比如AWS, GCP, Azure 等。她负责所有对这些云服务的读写操作。

Orca:处理 pipeline 和任务编排,比如创建一个虚拟机,等待它创建完成,然后执行其他操作。

Rosco基于 Packer 的镜像创建服务,她将一个 Debian 或者 RedHat 的包封装到虚拟机镜像中,这个过程有点像烘焙,所以也叫 image bake。

Front50存储所有pipeline,应用,通知的原信息。

Igor对接 Jenkins 的服务,比如 pipeline 中需要调用 jenkins,那么就依赖这个服务。

Echo提供通知服务,对接各种各样的服务商:Slack, Hipchat, SMS (via Twilio) , Email。

Rush脚本执行引擎。

管理方法

Spinnaker 看起来也是一个复杂的微服务架构,由不少服务组成,所以本身也遵循一些运维准则:

  1. 每个 Spinnaker 的服务(如 deck,gate,orca)都运行在独立的 cluster 中。
  2. 每个服务都将自己的运行指标推送到 Atlas 中,用于绘制仪表盘和报警。 Atlas  是Netflix的一个内存时间序列数据库。
  3. 每个服务都将自己的日志发送到 ELK 集群中。
  4. 每个内部服务除了deck 和 gate 必须用 mutual TLS,并且证书和认证通过  Lemur  进行管理。不允许任何外部流量进入内部服务中。所有的 API 调用必须经过 gate。
  5. 每个外部服务(除了gate)都要支持 mTLS 或者 SSO。
  6. 如果某个服务有数据存储的需求,那么只能存在自己的数据库中,服务之间不共享数据存储。

为了保证兼容性,Spinnaker 在开发过程中还会准守一些准则:

  1. 保证足够的单元测试和覆盖率。
  2. 在 code review 的时候特别注意是否会破坏API兼容性。
  3. 7×24 不间断的执行集成测试。有两种集成测试,一种是一个 jenkins job,会不断调用 API 接口,确保API是按照预想的在工作,另一种是一个 Spinnaker 的 pipeline,用来执行日常任务(比如创建镜像,部署环境等)。
  4. 当发现未知的失败是,首先执行回滚操作,直到这个问题被修复。

总结

Netflix 是一个优秀的企业,有着自由的精神和先进的技术,崇尚 DevOps 文化。而 Spinnaker 是他们在践行 DevOps 文化时创造出的优秀工具,通过这些 工具 我们能窥见他们对微服务和敏捷开发的深刻理解,希望能够给国内的开发者一些启发和帮助。


以上所述就是小编给大家介绍的《Spinnaker 介绍 – Netflix 的持续交付平台》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

科学计算导论

科学计算导论

希思 / 清华大学出版社 / 2005-10 / 48.00元

本书全面地介绍了科学计算中解各种主要问题的数值方法,包括线性和非线性方程、最小二乘法、特征值、最优化、插值、积分、常微分方程和偏微分方程、快速傅里叶变换和随机数生成。 本书的特点是: 以使用算法的读者为对象,重点讲授算法背后的思想和原理,而不是算法的详细分析。 强调敏感性和病态性等概念,对同一问题的不同算法进行比较和评价,提高读者对算法的鉴赏能力。 对每类......一起来看看 《科学计算导论》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具