迁移 Ceph 部署架构¶
一体化 Ceph charm 已被弃用,转而采用将 Ceph 监控集群和 Ceph OSD 的不同功能拆分的方式。Ceph charm 本身仅接收有限的维护,所有新功能均添加到 ceph-osd 或 ceph-mon charm 中。不幸的是,目前尚不存在将使用旧架构的现有部署迁移到首选架构的方法。
问题描述¶
部署一体化 ceph charm 部署起来很困难,并且经常导致部署了过多的监控节点。这(以及其他)问题最终导致将一体化 ceph 部署拆分为其不同的组成部分 - ceph-mon 和 ceph-osd。鼓励新部署使用新架构,但已部署旧架构的用户无法迁移到新架构。
为了迁移到新架构,用户需要
部署 ceph-mon charm 到环境中,无需引导新的监控集群。
将 ceph 应用程序关联到新的 ceph-mon 应用程序。这两个应用程序之间的关系在新的
ceph-bootstrap接口中定义,本文档中对此进行了说明。更新使用 ceph-client 关系进行的部署,以指向新的 ceph-mon 应用程序。这应包括
ceph-radosgw
nova-compute
cinder-ceph
cinder
cinder-backup
glance
部署 ceph-osd charm 与当前 ceph charm 一起部署。ceph-osd charm 不会重新格式化任何当前正在运行的 OSD 设备。
删除一体化 ceph 应用程序。
注意:在此迁移场景的任何部分中都不会验证配置值。如果用户使用与一体化 ceph charm 不同的配置值部署 ceph-osd 应用程序或 ceph-mon 应用程序,则环境可能会发生意外更改。
提议的变更¶
大部分基本的基础设施已经存在以支持此迁移的基本部分。有一些部分实际上缺少并且需要关注细节。
charm-ceph-mon 的配置更改¶
将向 ceph-mon charm 添加一个新的配置选项,指示 charm 是否应该对监控集群进行初始引导。当此值设置为 true 时,该 charm 将不
引导新的监控集群
自动生成 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 部署指南,以清楚地描述此过程
在发行说明中更新实现说明并引用部署指南。
仓库¶
无
文档¶
这需要在以下位置进行仔细记录
Charm 部署指南
Ceph Charm 的 README 需要引用迁移过程文档,并正式标记为已弃用。
安全性¶
此更改没有新的安全影响。
测试¶
创建一个适当的功能测试,可以在发布门控(mojo、bundle tester 等)处运行
测试迁移对客户端的影响。这很重要,因为监控信息是通过 libvirt 域 XML 文件暴露的,这些文件会被创建,并且可能对运行的客户端产生影响。具体来说,需要验证对以下内容的影响:- 使用 rbd 备份实例的 nova-compute - 使用 rbd cinder 附加卷的 nova-compute - 使用 rbd 备份的 glance 镜像
依赖项¶
无