15.2. 缩减和替换 Ceph Storage 节点
在某些情况下,您可能需要缩减 Ceph Storage 集群或替换 Ceph Storage 节点。在这两种情况下,您必须禁用并重新平衡您要从 overcloud 中删除的 Ceph Storage 节点,以防止数据丢失。
如果 Ceph Storage 集群没有丢失 OSD 的容量,则不要继续这个过程。
-
以
tripleo-admin
用户身份登录 overcloud Controller 节点。 -
使用
sudo cephadm shell
命令启动 Ceph shell。 使用
ceph osd tree
命令识别要被服务器移除的 OSD。在以下示例中,我们希望识别
ceph-2
主机的 OSD。[ceph: root@oc0-controller-0 /]# ceph osd tree ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -1 0.58557 root default -7 0.19519 host ceph-2 5 hdd 0.04880 osd.5 up 1.00000 1.00000 7 hdd 0.04880 osd.7 up 1.00000 1.00000 9 hdd 0.04880 osd.9 up 1.00000 1.00000 11 hdd 0.04880 osd.11 up 1.00000 1.00000
将 Ceph 集群规格导出到 YAML 文件。
[ceph: root@oc0-controller-0 /]# ceph orch ls --export > spec.yml
-
编辑导出的规格文件,使适用的主机从
service-type: osd hosts
列表中删除,适用的主机具有placement: hosts
值被删除。 - 保存编辑的文件。
应用修改后的 Ceph 规范文件。
[ceph: root@oc0-controller-0 /]# ceph orch apply -i spec.yml
重要如果在删除 OSD 前没有导出和导入 Ceph 规格文件,Ceph 管理器将尝试重新创建 OSD。
使用
ceph orch osd rm --zap <osd_list>
; 命令来移除 OSD。[ceph: root@oc0-controller-0 /]# ceph orch osd rm --zap 5 7 9 11 Scheduled OSD(s) for removal [ceph: root@oc0-controller-0 /]# ceph orch osd rm status OSD_ID HOST STATE PG_COUNT REPLACE FORCE DRAIN_STARTED_AT 7 ceph-2 draining 27 False False 2021-04-23 21:35:51.215361 9 ceph-2 draining 8 False False 2021-04-23 21:35:49.111500 11 ceph-2 draining 14 False False 2021-04-23 21:35:50.243762
使用
ceph orch osd status
命令检查 OSD 移除的状态。[ceph: root@oc0-controller-0 /]# ceph orch osd rm status OSD_ID HOST STATE PG_COUNT REPLACE FORCE DRAIN_STARTED_AT 7 ceph-2 draining 34 False False 2021-04-23 21:35:51.215361 11 ceph-2 draining 14 False False 2021-04-23 21:35:50.243762
警告在此命令没有返回结果前,不要继续下一步。
使用
ceph orch host drain <HOST>
; 命令排空任何剩余的守护进程。[ceph: root@oc0-controller-0 /]# ceph orch host drain ceph-2
使用命令
ceph orch host rm <HOST&
gt; 删除主机。[ceph: root@oc0-controller-0 /]# ceph orch host rm ceph-2
- 结束 Ceph shell 会话。
-
注销
tripleo-admin
帐户。 -
以
stack
用户身份登录 undercloud 节点。 使用以下方法修改
~/overcloud-baremetal-deploy.yaml
:-
减少要缩减的角色中的
count
属性。 为被取消置备的每个节点添加一个
instances
条目。每个条目都必须包含以下内容:-
baremetal
节点的名称
。 -
分配给该节点的主机名
。 一个
provisioned: false
值。以下示例将移除节点
overcloud-compute-1
。- name: Compute count: 1 instances: - hostname: overcloud-compute-0 name: node10 # Removed from deployment due to disk failure provisioned: false - hostname: overcloud-compute-1 name: node11
-
baremetal
-
减少要缩减的角色中的
使用
openstack overcloud node delete
命令删除节点。openstack overcloud node delete \ --stack overcloud \ --baremetal-deployment ~/overcloud-baremetal-deploy.yaml
注意在删除节点前,要删除的节点列表将提供确认提示。
如果缩减 Ceph 集群是临时的,并且稍后删除的节点将恢复,扩展操作可以在之前设置 provisioned: false
的节点上增加计数和设置 provisioned: true
。如果节点永远不会重复使用,它可以无限期地设置
provision: false
,并且扩展操作可以指定新实例条目。
+ 以下示例提供了每个实例的一些示例。
+
- name: Compute count: 2 instances: - hostname: overcloud-compute-0 name: node10 # Removed from deployment due to disk failure provisioned: false - hostname: overcloud-compute-1 name: node11 - hostname: overcloud-compute-2 name: node12