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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值