技术控

    今日:121| 主题:49552
收藏本版 (1)
最新软件应用技术尽在掌握

[其他] 隆重推荐Winston – 事件驱动的诊断和补救平台

[复制链接]
伴我入墓七分 发表于 2016-12-2 06:22:44
153 1

立即注册CoLaBug.com会员,免费获得投稿人的专业资料,享用更多功能,玩转个人品牌!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Netflix通过一系列微服务造就了你所喜爱的产品。这些微服务的运维由不同团队和相应的工程师联手负责,我们并没有集中组建一个负责确保所有服务正常运行的运维团队。相反,我们会在工具方面进行大量投入,以帮助Netflix工程师确保所有服务高可用、高弹性地运行。今天我们想谈谈最近为Netflix工程师开发的一个工具: Winston
  问题所涉及领域

   假设Netflix有一个典型的中间层微服务,这是一个单一用途的服务,托管在AWS平台。该服务使用Jenkins构建,使用 Spinnaker 部署,并使用 Atlas 监控。在各种度量指标的基础上,我们使用Atlas堆栈语言配置了警报,Atlas可支持在出现警报后触发一系列预定义操作,主要可用于执行实例级别的补救(终止实例,重启动,从服务目录中移除等)、升级(通过邮件、传呼机),或发布至 SQS 以便进一步集成。
  为降低复杂性并管理Atlas自身的弹性,上述范围之外其他已经得到支持的操作并不在Atlas框架的优先考虑范围内。这种自定义的诊断和补救措施被我们称之为Runbook。Runbook的托管和执行通常以下列形式进行:
  
       
  • 向通过维基/文档记录这些Runbook的人,或负责编写相关工具和脚本的人发送邮件或传呼提醒。   
  • 通过自定义的微服务监听SQS中针对Atlas提供的集成点,并运行Runbook。  
  上述方法各有不足之处。上报给具体人员,让他们手工执行重复的任务,这种做法不能让工程师的宝贵时间得到最充分利用。没人喜欢三更半夜被传呼吵醒然后按照文档规定执行相关操作,或执行那些本可以通过脚本或工具轻松搞定的任务。
  构建自定义的微服务,意味着应用程序团队必须付出额外的精力以确保这些服务能实现足够高的可用性和弹性,另外还需要构建与Atlas或所用其他监控工具的集成,管理部署生命周期和依赖项的淘汰周期,同时还要担心安全性和可靠性等问题。工程师不应该仅仅为了托管并执行业务逻辑中所嵌套的脚本,就处理这些与基础架构有关的冗繁任务。
   Winston正是为了帮助工程师在无须管理基础架构和相关核心功能的前提下实现Runbook的自动化运行。也许你会好奇,Winston这个名字源自电影“低俗小说”中一个角色Winston Wolfe,电影中此人会通过“Runbook”解决各种问题,并为解决问题的过程创造一种受控的安全环境。
  拯救者Winston来也

   Winston为Netflix工程师提供了一种事件驱动的Runbook自动化平台。按照设计,该平台可以托管 Runbook ,并作为对警报等运维事件的响应运行这些Runbook。Winston的目标是为开发者提供Tier-1支持,帮助开发者免除重复的诊断和补救任务,在遇到相关事件后自动执行必要操作。
  用户可以根据自己的实际用例通过提供下列参数配置Winston:
  
       
  • 代码形式的Runbook(该平台的第一版仅支持在Runbook中使用Python代码)。   
  • 一个或多个触发该Runbook的事件(例如Atlas警报)。  
  随后Winston会提供下列功能,帮助Netflix工程师更轻松地构建、管理并运行自己的Runbook。
  自助服务接口 - Winston Studio

  最开始,我们的目标是让Winston成为工程师的自助服务工具。为改善该平台的易用性,使其更易于用作各种尝试和迭代,我们为用户创建了一种简单直观的界面。Winston Studio为新增自动化Runbook的加入、现有Runbook的配置、生产环境运行后的日志查看,以及Runbook的调试与生命周期管理提供了一站式解决方案。
  下图是Netflix实时数据基础架构团队针对一个脱机的Kafka代理进行排错和补救时自动运行Runbook的屏幕截图。如图所示,用户可以编写代码让自己的Runbook自动运行,配置事件触发Runbook的执行,配置故障通知设置,此外也可以手工运行这套自动化机制对改动进行测试,随后再进行部署。
  (点击放大图像)
   
隆重推荐Winston – 事件驱动的诊断和补救平台-1 (Netflix,补救措施,工程师,传呼机,隆重)

  用户还可以通过Winston Studio查看上次执行状态以及具体的执行细节,如下图所示。
  (点击放大图像)

隆重推荐Winston – 事件驱动的诊断和补救平台-2 (Netflix,补救措施,工程师,传呼机,隆重)

  Runbook生命周期管理

  Winston针对Runbook的部署和管理方式提供了必要的辅助。该平台可支持为特定Runbook创建多个版本,每个版本针对一个环境(开发/测试/生产)。Winston中所有Runbook都存储在我们的代码持久化存储系统Stash中。该系统支持版本控制和必要的安全模式,很适合存储Runbook这样的代码。每个团队可在Stash中创建专用隔离仓库,每个环境(开发/测试/生产)都在仓储中呈现为专用分支。Winston还提供了自动化的推进(Promotion)和部署管线。推进可由工程师通过Studio手工触发,部署则可通过每次在Studio中推进或更新Runbook后触发。Runbook会在数分钟内跨越所有四个AWS地区部署给所有三个区域中全部的Winston实例。
  HA部署

  Winston可通过地区隔离和堆栈隔离的方式部署。地区隔离可避免地区故障(us-east-1地区故障不会影响us-west-2地区的执行)。堆栈隔离可将测试环境与关键的生产环境相互隔离,并可在将Runbook部署到生产环境前通过隔离的环境对其进行测试。我们还提供了开发环境,可在将Runbook部署到测试环境之前对其进行开发和手工测试。
  如下图所示,计算和持久存储是相互隔离的。为实现数据弹性,以及在主要数据库故障后实现自动化的故障转移,我们使用了MongoDB副本集。同一地区和环境的多个实例会共享同一个MongoDB集群。Winston Studio只在部署时使用,正常运行时不需要,因此我们选择将Studio托管在一个单独的地区,但为了避免实例故障会将多个实例运行在同一个负载平衡器之后。
  (点击放大图像)
12下一页
友荐云推荐




上一篇:Managing Replication with Percona XtraDB Cluster
下一篇:在大学中教授现代软件开发技能
酷辣虫提示酷辣虫禁止发表任何与中华人民共和国法律有抵触的内容!所有内容由用户发布,并不代表酷辣虫的观点,酷辣虫无法对用户发布内容真实性提供任何的保证,请自行验证并承担风险与后果。如您有版权、违规等问题,请通过"联系我们"或"违规举报"告知我们处理。

fgiyn 发表于 2016-12-2 18:08:49
勿以坑小而不灌,勿以坑大而灌之。  
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

我要投稿

推荐阅读

扫码访问 @iTTTTT瑞翔 的微博
回页顶回复上一篇下一篇回列表手机版
手机版/CoLaBug.com ( 粤ICP备05003221号 | 文网文[2010]257号 )|网站地图 酷辣虫

© 2001-2016 Comsenz Inc. Design: Dean. DiscuzFans.

返回顶部 返回列表