2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

  • 2019-01-29
  • 本文字数:1087 字

    阅读完需:约 4 分钟

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


2019-01-29 11:005391
用户头像

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

关注

评论

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

你真的懂反馈吗?

石云升

28天写作 职场经验 管理经验 4月日更

微服务网关:Spring Cloud Gateway —— Zuul

程序员架构进阶

微服务 网关 28天写作 4月日更

那束漂亮的手捧花

小天同学

爱情 4月日更 幸福 传递

CIAM的7个基本原则

龙归科技

安全性 用户 业务增长

Android音视频 - MediaCodec编解码音视频

LoveYFan

android 音视频 编解码

调整云计算资源大小时要避免的10个错误

云计算

【得物技术】算法入门一:算法的好坏?复杂度告诉你

得物技术

算法 时间复杂度 大前端 入门 复杂度

spring的IOC使用以及原理

邱学喆

spring ioc 对象创建 属性注入

游戏数据埋点

data_y

游戏 数据埋点 游戏数据分析 埋点定义

我的 2015-2018 —— 银行软开三年项目回顾

清秋

大前端 重构 鉴权 4月日更

经典递归

山@支

JavaScript小笔记

赫鲁小夫

4月日更

翻译:《实用的Python编程》08_01_Testing

codists

Python

Go1.16 中模块的新变化

Rayjun

Go 语言

深圳龙华携手腾讯云 加快推进区块链先行试验区建设

CECBC

Android音视频 - EGL源码解析以及C++实现

LoveYFan

android 音视频 OpenGL ES

在业务高峰期拔掉服务器电源是一种怎样的体验?

冰河

分布式 微服务 数据恢复 MySQL 高可用 异常处理

CI/CD之基于Jenkins的发布平台实践

小江

DevOps jenkins CI/CD 发布流程

使用FFmpeg开发的那些事

Bob

音视频 ffmpeg 开源文化

聊聊云厂商的指标监控组件

耳东@Erdong

Prometheus 4月日更 #Grafana

新的物联网技术应用有哪些

cdhqyj

互联网 物联网 通信 计算机

聪明人的训练(九)

Changing Lin

4月日更

三翼鸟的羽翼下,人诗意地栖居在智能生活里

脑极体

如何引入TDD实践

顿晓

TDD 4月日更

Redis 最后一课

escray

redis 学习 极客时间 Redis 核心技术与实战 4月日更

浅论结构体与联合体

Integer

c

使用Composition API在Vue3中创建防抖搜索输入框

devpoint

vite Vue3 防抖

一个DNS引发的“血案”

穿过生命散发芬芳

Wireshark 数据包分析 4月日更

新华三“云屏”发布:云屏融合重塑工作体验,全力构建智“会”时代

DT极客

深入浅出 LVS 负载均衡系列(一):NAT、FULLNAT 模型原理

UCloud技术

负载均衡

线上PHP服务故障排查之路

风翱

PHP-FPM 线上事故 4月日更

Dropbox的服务器和网络自动化运维实践_服务革新_Hrishikesh Barua_InfoQ精选文章