Ceph 实验室组件

本文档描述了一个实验室由哪些不同的硬件/软件组件构成,以及它们之间如何交互。一般来说,一个实验室由调度器、工作节点、包构建器(gitbuilder)、作业数据库(paddles)、作业存档、Web UI(pulpito)和测试节点组成。



Components of a Ceph Lab.


上图中,每个服务都出现在单独的机器上,但这并非必需(参见Teuthology 实验室设置说明了解另一种设置方式)。作业被提交给调度器,然后由调度器拾取并由作业主管处理。一个主管处理并跟踪一个作业(一次一个)。作业的输出(与执行相关的日志和文件)存储在存档中,存档是调度器正在运行的文件系统中的一个路径。作业数据库包含有关作业状态和测试节点的信息,以及执行结果(通过、失败的测试数量等)。所有这些信息都可以在 Web UI pulpito 中可视化。例如,请参阅 Ceph 社区的实验室此处

测试节点可以按类别分组(称为 machine-type),允许 teuthology 在多个硬件设置中调度作业。

Teuthology 作业的生命周期

teuthology 调度器公开了一个工作队列(使用 beanstalkd),作业在此处提交。作业的生命周期始于执行 teuthology-suite,此时作业被准备并排队(隐式调用 teuthology-schedule)。创建作业时(或无论何时作业状态发生变化,例如从排队到开始),有关作业的信息都会记录在 paddles 的内部数据库中。根据作业的优先级,调度器最终决定何时可以执行作业。此时,teuthology-dispatcher 通过查询 paddles 检查所请求机器的锁定状态,如果节点可用则获取节点的锁,并以 supervisor 模式调用 teuthology-dispatchersupervisor 重新映像目标机器并调用 teuthology(该命令)。teuthology 继续执行作业(执行 YAML 作业描述中的每个任务)。执行完成后(即 teuthology 进程退出),supervisor 解锁目标机器。如果请求的机器不可用,dispatcher 会等待机器可用,然后再运行任何作业。作业结果存储在工作节点的存档目录中,用于取证分析。

由于 QA 套件通常指定 installceph 任务,我们简要描述一下它们的作用。调度套件时(通过 teuthology-suite),必须指定正在处理的分支(例如 git SHAref)。在 gitbuilder 上探测给定分支和发行版的包是否存在。一旦通过此检查和其他健全性检查,就会创建并调度作业。作业初始化后,install 任务会从 gitbuilder 拉取并安装 Ceph 包。安装任务之前也可能有一个 kernel 任务,该任务首先将测试节点重启(并可选地安装)到指定的内核中。ceph 任务随后配置并启动集群。此时,Ceph 已准备好接收来自其他任务(例如 rados)的请求。