QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

如何通过 StackStorm 自动支持 2 万多台服务器

  • 2019-04-02
  • 本文字数:4025 字

    阅读完需:约 13 分钟

如何通过StackStorm自动支持2万多台服务器

在过去的三年中,我们的网络为成千上万次直播体育赛事、海量软件下载、数十亿小时流媒体视频内容以及数千个需要实时响应的 Web 应用程序提供支持。为了支持这种大规模的增长,从 2015 年开始,我们的全球网络已经增加到 71 Tbps,我们在 135 个 PoP 中部署了数千台新服务器。


网络部署规模不断增长和变化,为了解决这方面的挑战,我们的运营团队使用 StackStorm 开发了一个 IT 自动化平台。这是一个巨大的飞跃,改变了我们部署、变更、修复和停用服务器的方式,这些服务器占到了我们全球网络 95%以上的比例。


以下是这个自动化平台给我们带来的好处:


  • 在三年内将 12,000 多台服务器添加到我们的网络中。

  • 在某些情况下自动生成 ticket,在没有 ticket 的情况下自动解决问题。

  • 为团队提供工具,让他们可以进行实时的协作。

  • 遵循一系列手动步骤为工程师节省时间。

基于 StackStorm 的自定义项目 Crayfish

因为认识到 IT 自动化平台的价值以及这种平台的日益成熟,2015 年,我们成立了基础设施自动化团队,并开始了 Crayfish(小龙虾)项目,认真开发 IT 自动化解决方案——对于我们这样规模的企业来说,这是一项艰巨的任务。项目名称的选择——我们现在仍在使用——是有意而为之的。一直以来,我们的工具都以鱼类和航海为主题,我们之所以选择 Crayfish,是因为小龙虾是滤食性动物,可以保持环境的清洁。


最开始我们也考虑过开发自己的 IT 自动化框架,后来决定使用 StackStorm(https://stackstorm.com/),并通过增强功能来支持我们独特的需求和规模,让我们能够更高效地往前走。


StackStorm 是一个开源的基于事件驱动的平台,支持“基础设施即代码”。它擅长基于事件运行工作流,可以与 Slack 集成,并提供了原生的 ChatOps 支持。


我们已经对 StackStorm 做出了一些配置变更来满足我们所需的规模。首先,我们需要增加服务实例的数量,并减少数据保留。在项目启动时,我们的网络有 8,000 台服务器,而现在服务器数量已经达到 20,000 台。可伸缩性的关键在于能够运行任意数量的 StackStorm 实例,并把它们作为 worker 运行,而不是让单个 StackStorm 实例处理所有的东西。如下图所示,我们开发的一个叫作 Policy Engine 的东西可以帮我们做到这一点,它会根据我们的业务逻辑将提交的请求转发给 StackStorm。Policy Engine 还可以将请求放在队列中,并在安全的情况下自动处理这些请求。这些策略用来监控并发、容量、流量、生产状态、基础设施、黑名单和故障率。


编撰部落知识

IT 自动化项目的基本方法是捕获现有流程和工作流,然后将它们转换为可以在不需要人工干预的情况下实现工作流步骤的代码,并将它们存储在中央存储库中,然后作为自动化的一部分或通过 ChatOps 命令来调用它们。


项目开始后,Crayfish 团队捕获了整个组织现有的工作流程和流程。所幸的是,不同部门使用的大多数重要的流程(例如网络运营中心、数据中心运营或 SysOps)都有详细的记录,可以使用 Python 来快速编码并添加到 Crayfish 中。


例如,如果我们的网络运营中心想要实现一个重启工作流,它首先需要根据各种策略验证在机器上运行工作流是否安全。如果服务器处于生产环境中,系统将会采取措施来消耗连接并更新状态。接下来,它将执行实际的重启动作和必要的步骤来验证机器是否已经准备好进入生产状态。


可以肯定的是,我们遇到了很多边缘案例,其中最具挑战性的是那些还没有被记录到文档中的流程。为了搞定这些边缘案例,我们需要进行跨职能合作,并与正确的人沟通。自动化的一个好处是我们可以捕获到这些知识,确保它们在我们的组织中继续存在。


在某些情况下,我们甚至与一些了解特定任务或知道如何解决特定问题的工程师和技术人员一起合作,找出更有效处理特定任务的方法。我们发现,在某些情况下,不同团队成员的知识水平是不一样的。那时候,我们开始收集每个人的意见,提出一个每个人都同意的工作流,并将其作为最有效的解决方案。

按需部署新服务器

Crayfish 已经从多个层面改变了我们的 IT 运营,例如简化服务器管理、减少服务器停机时间以及加快服务器部署。仅在 2018 年一年,ITOps 就为我们的全球网络增加了 22 Tbps 的容量。如果没有 Crayfish 的自动化,就不可能新增数千台服务器,而且这是在不需要显著提高员工技术水平的情况下完成的。


目前,Crayfish 为大约 20 种不同的服务器类型提供强大的自动化功能。我们将服务器类型定义为运行相似服务的一组服务器。不同的应用程序运行在不同的服务器类型上,因此每种服务器类型在生产环境中需要得到不同的支持。今天,Crayfish 支持大约 10 种服务器类型的完整生命周期,并且还可以对大约 10 种其他服务器类型做出修复、更改和打补丁。它还为大约 40 或 50 多种服务器类型提供不同程度的支持。由于我们专注于部署使用最广泛的服务器类型,因此 Crayfish 可以为约 96%服务器提供支持。


因为使用了 Crayfish,CDN 的整体性能得到了提升,并且具备了应对意外事件的能力。我们的网络设备齐全,可以支持来自主要体育赛事和峰值软件下载的流量,例如,将更多的服务器保留在生产环境中,减少在高峰期间从生产环境中移除服务器所造成的中断。


从性能的角度来看,因为我们的规模够大,所以才体现出 Crayfish 的重要性。如果你的公司有一个数据中心,并且你可以控制停机时间,那么你就完全可以掌控数据中心。但如果是像下图所示的那样,数据中心跨越了几乎所有的时区,那么你就不得不去应对不同的配置文件、使用情况和使用时间。如果把所有这些考虑因素考虑在内,具体情况可能会非常复杂,但 Crayfish 可以轻松处理它们。



在使用 Crayfish 时,我们仍然可以调度任务,例如自动执行配置或升级,但系统可以智能地满足本地需求。例如,当我们想要重新配置拉脱维亚的所有服务器时,拉脱维亚的某个新闻事件会导致视频流量大幅增加。因为 Crayfish 与我们的度量收集系统集成在一起,所以系统将会看到流量增加,重新配置操作就会停止。如果有必要,甚至可以将更多服务器加入到生产环境中。

在服务中断之前捕获基础设施故障

Crayfish 与其他监控系统相结合可以显著减少个别服务器的停机时间和维修时间。我们的系统持续监控网络是否出现了问题或故障,并且可以自动创建故障 ticket 或直接打补丁。有了自动化系统,我们的员工不需要通过“死盯”的方式来发现网络错误——计算机会永不疲倦地进行持续的监控。


我们可以通过这种方式完成的检查几乎没有数量上的限制。我们的度量系统不断运行硬件检查,不需要将机器撤出生产环境,而另一个系统会查找错误,并在发现问题时调用 Crayfish 对机器执行检查。通过这种方法,我们能够及早地发现硬件故障。


例如,如果有指标显示硬盘驱动器开始出现故障,自动化系统将启动 Crayfish 中的工作流,对受影响的计算机进行错误验证,并收集有关故障的详细信息,例如硬盘驱动器在哪个插槽中出现故障、屏蔽号码,等等。然后,它会为数据中心运维组创建 ticket,运维组会派技术人员前往安装替换硬件。


根据经验,任何需要多个部门协作或多个步骤之间需要手动切换的工作流都会带来严重的延迟。有了自动化工作流,完成时间可以是几分钟,而不是几天。这给了每个运维团队更大的控制权,他们是最了解他们系统和应用程序的人。

为工程师提供可以让他们变得更高效的工具

我们以前都是向网络运营中心发出命令,然后等待事情发生。如果网络运营中心的技术人员花了 10 分钟、20 分钟或 30 分钟等待服务器正常关闭,你必须要去问为什么。而 Crayfish 可以并行执行多个任务,而且支持横向扩展。因此,如果我们需要处理更多的工作负载,可以添加新节点。如果我们突然发现需要同时处理大量的工作负载,可以跨整个 CDN 扩展多个节点,在处理完成后再缩减节点。


而且,技术人员的工作记忆是有限的,他们在同一时间只能操作几台机器。只有最出色的多任务处理程序才能同时处理五六台处于不同状态的机器,而且保证不会丢失跟踪状态或出现错误。在使用 Crayfish 时,不需要在各种任务之间切换,它们发出命令,然后继续后续的处理。


Crayfish 构建在由软件基础设施和系统运营团队开发的智能配置系统之上,所以完全支持服务器生命周期的其他方面,并在很大程度上是自治的,包括操作系统更新、服务器配置或重新配置、固件更新和安全补丁。当有新补丁发布时,Crayfish 会快速进行验证,以确保补丁可以发布。


因为 Crayfish 与 Slack 进行了集成,所以它也支持一般性的 IT 流程,并在需求发生变化时能够促进团队之间的协作。现在,团队可以将手动流程定义为自动化工作流,而不需要等待某个部门实现变更。然后,他们可以为最终用户提供按需运行的工作流。现在还可以限制安全运行工作流的策略。在数据中心里工作的工程师也可以发出命令来修改服务器的生产状态。

最后的想法

由于成千上万的客户每天通过我们的 20,000 多台服务器推送数 TB 的数据,StackStorm 已经成为保持服务健康和安全的重要运维工具。我们现在能够更快地扩展网络来满足客户的需求,同时在发生动态变化和意外流量激增的情况下提供更好的性能。这种运营灵活性让我们成为更可靠的服务提供商,并具备足够的伸缩性来满足流媒体和 Web 应用程序的需求。


虽然其他大多数企业的规模与我们不同,但仍然有很多东西可以进行自动化,包括:


  • 让开发人员专注于能够带来更高回报的工作。

  • 标准化普通的日常任务。

  • 改善跨部门的协作。

  • 减少服务器停机时间。

  • 通过固件更新和安全补丁来提高安全性。


毫无疑问,向 IT 自动化的转变提供了非常有吸引力的投资回报,但最重要的是要确保你的初衷是正确的。我们可以将自动化视为一种为工程师提供工具的方法,这些工具可以提高他们的工作效率和熟练程度,并使他们能够专注于做出改进。


如果做得好,向基于工作流的自动化过渡是社交化和编撰部落知识的一种非常好的方式。我们将部落聚集在一起,提出一个共同的工作流,并让每个人都能在未来基于共同的基线贡献自己的知识。


英文原文:https://medium.com/@verizondigital/using-stackstorm-to-automate-support-for-20-000-servers-4b47ae3a4e98


2019-04-02 08:5811986
用户头像

发布了 731 篇内容, 共 460.1 次阅读, 收获喜欢 2004 次。

关注

评论

发布
暂无评论
发现更多内容

来自朋友最近阿里、腾讯、美团等P7岗位面试题

艾小仙

Java 阿里巴巴 程序员 腾讯 面试

缓存架构不够好,系统容易瘫痪

架构师修行之路

缓存 微服务 架构设计

程序员跳槽,只要用好(2+2)方法论,绝对可以找到一家好公司

Java架构师迁哥

SpringCloud Alibaba开篇:SpringCloud这么火,为何还要学习SpringCloud Alibaba?

冰河

分布式 微服务 高性能 SpringCloud Alibaba

算法训练营毕业总结——以此自勉

Airship

算法 算法和数据结构

一笔订单,但是误付了两笔钱!这种重复付款异常到底该如何解决?

楼下小黑哥

支付宝 微信支付 支付系统 支付

anyRTC与京东智联云市场达成战略合作,携手音视频平台

anyRTC开发者

ios 音视频 WebRTC RTC 安卓

第五周课后练习

饭桶

openEuler开源下一代全场景虚拟化平台StratoVirt

openEuler

开源 虚拟化 openEuler stratovirt

既不能神化,也不要泛化区块链

CECBC

金融 数字技术

1分钟带你入门 React 生命周期

Leo

react.js 大前端 React 生命周期

第五周课后总结

饭桶

ARTS打卡 第21周

引花眠

微服务 ARTS 打卡计划 springboot

云原生时代 容器持久化存储的最佳方式是什么?

京东科技开发者

数据库 云存储

云开发·多次订阅一次性订阅消息后定时发送

Yukun

微信小程序 小程序云开发 消息推送 订阅消息

架構師訓練營第 1 期 - 第 05 周作業

Panda

架構師訓練營第 1 期

穆长春:数字人民币“双离线”支付开发完毕后续将试点

CECBC

数字钱包

Javaer 进阶必看的 RocketMQ ,就这篇了

yes

RocketMQ 消息队列

这里有一份Java程序员的珍藏书单,请您注意查收

捡田螺的小男孩

Java 后端 PDF

保证缓存与数据库的数据一致性不是很容易

架构师修行之路

缓存 一致性

甲方日常 38

句子

工作 随笔杂谈 日常

java安全编码指南之:文件IO操作

程序那些事

java安全编码 java安全 java安全编码指南 java代码规范

架构师训练营第一期 - 第五周课后作业

卖猪肉的大叔

openEuler进化记:一颗探索宇宙的生态之星

脑极体

架构师训练营第 1 期第 6 周作业

业哥

现场突击京东程序员的购物车!看看"11.11"都买啥?

京东科技开发者

程序人生

黑幕!爆京东18A技术专家纯手打:小团队构建大网站架构实战

996小迁

Java 学习 架构 面试 笔记

二十四、深入Python多进程multiprocessing模块

刘润森

Python

分布式关系数据库

韩向民

你用过宏##粘贴函数,然后用函数指针查找执行吗?今天就给你说道说道

良知犹存

c c++

马云:数字货币可能会重新定义货币

CECBC

金融

如何通过StackStorm自动支持2万多台服务器_软件工程_维珍数字媒体服务团队_InfoQ精选文章