迁移 Ceph 部署架构

一体化 Ceph charm 已被弃用,转而采用将 Ceph 监控集群和 Ceph OSD 的不同功能拆分的方式。Ceph charm 本身仅接收有限的维护,所有新功能均添加到 ceph-osd 或 ceph-mon charm 中。不幸的是,目前尚不存在将使用旧架构的现有部署迁移到首选架构的方法。

问题描述

部署一体化 ceph charm 部署起来很困难,并且经常导致部署了过多的监控节点。这(以及其他)问题最终导致将一体化 ceph 部署拆分为其不同的组成部分 - ceph-mon 和 ceph-osd。鼓励新部署使用新架构,但已部署旧架构的用户无法迁移到新架构。

为了迁移到新架构,用户需要

  1. 部署 ceph-mon charm 到环境中,无需引导新的监控集群。

  2. 将 ceph 应用程序关联到新的 ceph-mon 应用程序。这两个应用程序之间的关系在新的 ceph-bootstrap 接口中定义,本文档中对此进行了说明。

  3. 更新使用 ceph-client 关系进行的部署,以指向新的 ceph-mon 应用程序。这应包括

    • ceph-radosgw

    • nova-compute

    • cinder-ceph

    • cinder

    • cinder-backup

    • glance

  4. 部署 ceph-osd charm 与当前 ceph charm 一起部署。ceph-osd charm 不会重新格式化任何当前正在运行的 OSD 设备。

  5. 删除一体化 ceph 应用程序。

注意:在此迁移场景的任何部分中都不会验证配置值。如果用户使用与一体化 ceph charm 不同的配置值部署 ceph-osd 应用程序或 ceph-mon 应用程序,则环境可能会发生意外更改。

提议的变更

大部分基本的基础设施已经存在以支持此迁移的基本部分。有一些部分实际上缺少并且需要关注细节。

charm-ceph-mon 的配置更改

将向 ceph-mon charm 添加一个新的配置选项,指示 charm 是否应该对监控集群进行初始引导。当此值设置为 true 时,该 charm 将

  1. 引导新的监控集群

  2. 自动生成 fsid

这个新的配置选项将定义如下

no-bootstrap:
  type: boolean
  default: False
  description: |
    Causes the charm to not do any of the initial bootstrapping of the
    Ceph monitor cluster. This is only intended to be used when migrating
    from the ceph all-in-one charm to a ceph-mon / ceph-osd deployment.
    Refer to the Charm Deployment guide at https://docs.openstack.org/charm-deployment-guide/latest/
    for more information.

新的 ceph-bootstrap 接口

值得注意的是,不存在将 ceph-mon charm 和一体化 ceph charm 之间建立关系的方法。为了解决这个问题,将向 ceph 和 ceph-mon charm 添加一个名为 ceph-bootstrap 的新接口,以便共享加入集群所需的信息。这本质上与 ceph charm 本身在 peer mon 接口上共享的信息相同。

由于 charm 不具有反应性,因此不需要新的接口仓库。交换的信息将包含以下内容

ceph-bootstrap:
  - name: fsid
    type: string
    desc: |
      The fsid of the already bootstrapped monitor cluster

  - name: ceph-public-address
    type: string
    desc: |
      The public address that should be used by the charm for each of the
      units in the relation.

  - name: mon-key
    type: string
    desc: |
      The key used to authorize a monitor node for joining a ceph mon
      cluster.

为了加入此关系,ceph-mon charm 需要将 no-bootstrap 配置选项设置为 True,并且本地监控集群尚未引导。如果两者中任何一个无效,ceph-mon charm 将无法加入关系。

charm-ceph 的更改

除了实现 ceph-bootstrap 接口之外,一体化 ceph charm 还需要在删除自身时正确清理。它不应删除任何 OSD 或 Ceph 包,因为这会中断正在运行的 ceph 集群。但是,该 charm 需要在停止钩子期间删除其 ceph.conf 文件作为已注册的替代方案。

备选方案

另一种选择是提供迁移到新架构的方法,并让部署停滞不前。这对于用户满意度而言,具有相当不幸的副作用,并且对 ceph charm 的整体生命周期有影响。

实现

负责人

主要负责人

james-page

其他委派人

billy-olsen

Gerrit Topic

对于与此规范相关的所有补丁,请使用 Gerrit 主题 charm-ceph-migration

git-review -t charm-ceph-migration

工作项

charm-ceph-mon

  • 添加新的配置标志

  • 实现新的 bootstrap 接口

  • 删除 bootstrap 关系时删除额外的 monmap 条目

charm-ceph-osd

  • 确保 charm 支持多个监控关系

charm-ceph

  • 添加对新 bootstrap 接口的支持

  • 在停止钩子中删除 ceph.conf 的已注册替代方案

  • 更新 charm README

charm-ceph-radosgw

  • 确保 charm 支持多个监控关系

charm-helpers

  • 确保 CephContext 支持多个监控关系(由 charm-glance、charm-inder-ceph、charm-nova 等使用)

openstack-charm-testing

  • 更新所有 next.yaml 和 stable.yaml bundle 以使用拆分架构

  • 添加部署一体化 ceph bundle 的 legacy bundle

docs

  • 更新 charm 部署指南,以清楚地描述此过程

  • 在发行说明中更新实现说明并引用部署指南。

仓库

文档

这需要在以下位置进行仔细记录

  1. Charm 部署指南

  2. Ceph Charm 的 README 需要引用迁移过程文档,并正式标记为已弃用。

安全性

此更改没有新的安全影响。

测试

  • 创建一个适当的功能测试,可以在发布门控(mojo、bundle tester 等)处运行

  • 测试迁移对客户端的影响。这很重要,因为监控信息是通过 libvirt 域 XML 文件暴露的,这些文件会被创建,并且可能对运行的客户端产生影响。具体来说,需要验证对以下内容的影响:- 使用 rbd 备份实例的 nova-compute - 使用 rbd cinder 附加卷的 nova-compute - 使用 rbd 备份的 glance 镜像

依赖项