Dropbox 的服务器和网络自动化运维实践

发布于:2019 年 1 月 29 日 11:00

Dropbox的服务器和网络自动化运维实践

Dropbox 的工程团队写了一篇有关他们的网络和服务器配置和验证自动化工具 Pirlo 的文章。Pirlo 提供了一种可插拔架构,基于MySQL 实现了一种自定义作业队列。

Dropbox 有自己的数据中心。Pirlo 工具由 TOR(机架顶部)交换机初始化程序、服务器配置程序和验证程序组成。它作为工作进程运行在一个通用的分布式作业队列上,这个队列基于 MySQL,提供了可用于跟踪运行作业进度和可视化历史数据的 UI。Pirlo 使用了可插拔模块,为每个阶段提供了大量日志记录,用于调试和分析自动化运行。Dropbox 有一个 NRE(网络可靠性工程)团队,负责构建、自动化和监控生产环境的网络。Dropbox 的大多数代码都是用 Python 编写的,不过目前还不清楚 Pirlo 是否也是用 Python 编写的。

交换机和服务器配置程序都使用了作业队列,它们的工作流程都很相似,队列管理器选择正确的作业处理程序来处理来自客户端的请求。作业处理程序运行已注册的插件,这些插件负责执行实际的检查和命令。插件执行特定的作业,发出状态码,并将状态发布到数据库日志。这是大多数作业队列的运行方式,因此很自然地就会有人问为什么这个团队没有选择像 Celery 这样的现有队列解决方案。文章的作者解释说:

我们不需要整个功能集,也不想要第三方工具的复杂性。内部原语为我们提供了更大的设计灵活性,一小组 SRE 就足以开发和运营 Pirlo 服务。

当收到客户端请求时,交换机配置器(叫作 TOR 启动器)就会启动。TOR 交换机是网络设计的一部分,机架上的服务器设备与同一机架上的网络交换机相连,网络交换机通常位于顶部。它尝试通过 gRPC 使用服务发现找到健康的服务器,然后队列管理器为该作业选择一个作业处理程序。交换机验证和配置是一个多步骤过程,从建立基本的连接开始。随后会执行各个插件,最终下载交换机配置并重启。

服务器配置和验证过程类似。我们使用 Debirf 创建的操作系统镜像启动验证器,这个操作系统镜像可以创建基于 RAM 的文件系统,完全从内存运行 Debian 系统。它的绰号叫 Hotdog,一个基于 Ubuntu 的镜像,可以通过网络启动并运行验证、基准测试和压力测试。测试结果被推送到数据库,并用于后续的分析。测试过程包括根据硬件工程团队批准的预定义配置列表验证各种硬件和固件组件。修好的机器在重新投入生产之前也需要经过这个测试套件的测试。

Pirlo 的 UI 显示了当前正在运行和已完成的作业的进度。Dropbox 曾经使用 playbooks(或 runbooks)来执行配置。其他一些工程团队运行自己的数据中心,他们也已经从基于 runbook 的配置转向零接触配置(ZTP),尽管使用了不同的方法。

查看英文原文:

https://www.infoq.com/news/2019/01/dropbox-datacenter-automation

阅读数:4630 发布于:2019 年 1 月 29 日 11:00

更多 云计算、数据库、运维 相关课程,可下载【 极客时间 】App 免费领取 >

评论

发布
暂无评论
  • 一个创业公司的 API 网关落地实践

    HelloFresh是一家食品电商初创公司,用户根据选定的菜谱下单,HelloFresh把菜谱所需要的食材送至用户家中。来自HelloFresh的技术负责人Ítalo Lelis在博客上分享了HelloFresh的API网关落地实践。

    2017 年 3 月 5 日

  • Kubernetes Operator 实践:MySQL 容器化

    2018 年 12 月 26 日

  • 规划部署数据中心要考虑哪些重要因素?

    数据中心的网络、服务器资源可能会成为大规模服务发展的瓶颈。但数据中心离你很远,你可能并没有在意过它。

    2020 年 2 月 5 日

  • Brandwatch 如何管理多云生产环境 Kubernetes 集群

    Brandwatch的工程团队介绍了他们在跨EKS、GKE和自管理集群管理多集群Kubernetes方面的经验。

    2020 年 3 月 21 日

  • 如何不停机将数百个 ZooKeeper 实例迁移到 Kubernetes

    最近,我们在不停机的情况下将数百个 ZooKeeper 实例迁移到了 Kubernetes。我们利用了强大的 Kubernetes 特性(例如端点)简化了迁移过程,那些想要跟我们一样进行 Zookeeper 迁移的人可以在这篇文章里找到答案。文章的末尾列出了进行迁移所需的网络条件。

    2020 年 5 月 6 日

  • Spotify 的监测框架(上)

    Spotify是全球最大的正版流媒体音乐服务平台。Spotify提供的服务需要一个巨大的基础设施平台作为支撑,而监测这个平台的运行显得至关重要。Spotify实验室的John-John Tedro近日对Spotify的监测进行了一个简单的介绍。作为该系列文章两个部分的第一篇,本文主要介绍了Spotify的监控的历史,当前面临的挑战,以及Spotify又是如何解决这些挑战的。

    2015 年 12 月 17 日

  • Twitter 对基础设施的优化

    一旦你成为多数人的信息来源,尤其是排名靠前的站点,每逢出现社会热点事件,将会受到来此全社会定向发动的 DDoS。与国内的微博一样,Twitter 也需要面对这样的问题。超级碗、世界杯和世界新年庆典等等都会挑战 Twitter 的基础设施。本文将从数据中心优化和硬件优化两个方面,沿着历史挑战、当前成果、未来展望这样的脉络道出 Twitter 的基础设施优化之路。

    2016 年 10 月 26 日

  • 不可变层,不(仅仅)是基础设施

    不可变的基础设施是一个有效的应用交付流程,但部署的过程会非常缓慢,且往往不能够充分利用资源。每次应用更新就构建镜像并创建新主机会导致每次部署都需要花费10分钟甚至更多。

    2016 年 1 月 4 日

  • 高效上云:如何用云计算来提高效能?

    云计算对提升研发效能的作用,可以归纳为服务化、自助化和弹性伸缩这三个方面。

    2019 年 9 月 27 日

  • Flink On Kubernetes 部署讲解

    2020 年 9 月 3 日