OpenStack + Ceph 融合架构计算节点安全下线操作指南
1. 适用场景与核心原则
适用场景:Kolla-Ansible 容器化部署的 OpenStack 融合架构,需要永久下线一台兼具 Compute (计算)、Network (网络代理) 与 Ceph OSD (存储) 角色的服务器。
核心原则:先让 Ceph 数据安全搬迁,同时在控制面隔离该节点,最后再物理关停并清理数据。
危险警告:永久剔除节点时,严禁执行 ceph osd set norecover / nobackfill / norebalance。必须保证集群具备数据自愈能力。
2. 操作前置检查
确认虚拟机已清空:目标节点 ty1-z1-2cpu-computer110 上没有任何运行中的业务虚拟机。
确认 Ceph 剩余容量:执行 docker exec ceph_mon ceph df,确认集群剩余空间足够接纳该节点释放的数据。
3. 完整操作步骤
阶段一:触发 Ceph 数据重平衡 (数据搬迁)
执行位置:Ceph Mon 节点或 OpenStack 控制节点
docker exec ceph_mon ceph osd out 53
docker exec ceph_mon ceph osd out 56
docker exec ceph_mon ceph osd out 82
docker exec ceph_mon ceph osd out 96
# 观察集群状态
docker exec ceph_mon ceph -w阶段二:OpenStack 控制面服务剥离
执行位置:OpenStack 控制节点 (需加载 admin-openrc.sh 环境变量)
1. 剥离 Nova 计算服务
openstack compute service list --host ty1-z1-2cpu-computer110
openstack compute service set --disable ty1-z1-2cpu-computer110 nova-compute
openstack compute service delete <ID>2. 剥离 Cinder 块存储服务
openstack volume service set --disable ty1-z1-2cpu-computer110@rbd-1 cinder-volume
openstack volume service set --disable ty1-z1-2cpu-computer110 cinder-backup
# 彻底清理 cinder-volume 记录
docker exec -it cinder_api cinder-manage service remove cinder-volume ty1-z1-2cpu-computer110@rbd-1
# 彻底清理 cinder-backup 记录
docker exec -it cinder_api cinder-manage service remove cinder-backup ty1-z1-2cpu-computer1103. 剥离 Neutron 网络服务
openstack network agent list --host ty1-z1-2cpu-computer110
openstack network agent delete <Agent_ID_1> <Agent_ID_2> <Agent_ID_3>阶段三:计算节点 OpenStack 容器关停
执行位置:目标下线节点 (ty1-z1-2cpu-computer110)
警告:仅关停OpenStack组件,绝不能关停 ceph_osd_* 容器!
docker stop nova_compute nova_libvirt nova_ssh neutron_metadata_agent neutron_l3_agent neutron_openvswitch_agent openvswitch_vswitchd openvswitch_db cinder_backup cinder_volume ceilometer_compute cron kolla_toolbox fluentd
docker rm nova_compute nova_libvirt nova_ssh neutron_metadata_agent neutron_l3_agent neutron_openvswitch_agent openvswitch_vswitchd openvswitch_db cinder_backup cinder_volume ceilometer_compute cron kolla_toolbox fluentd阶段四:等待 Ceph 数据搬迁完毕
执行位置:Ceph Mon 节点
执行 docker exec ceph_mon ceph -s,必须满足以下条件:
1. 集群健康状态恢复为 HEALTH_OK
2. PG 状态全部为 active+clean
3. degraded 和 misplaced 对象归零
阶段五:Ceph OSD 物理停机与彻底剔除
1. 关停 OSD 容器 (目标下线节点执行)
docker stop ceph_osd_53 ceph_osd_56 ceph_osd_82 ceph_osd_96
docker rm ceph_osd_53 ceph_osd_56 ceph_osd_82 ceph_osd_962. 清除 Ceph 注册信息 (Mon 节点执行)
docker exec ceph_mon ceph osd purge 53 --yes-i-really-mean-it
docker exec ceph_mon ceph osd purge 56 --yes-i-really-mean-it
docker exec ceph_mon ceph osd purge 82 --yes-i-really-mean-it
docker exec ceph_mon ceph osd purge 96 --yes-i-really-mean-it阶段六:更新 Ansible 部署资产清单
执行位置:Kolla-Ansible 部署节点
编辑主机清单文件,在各个组件及存储组中删除 ty1-z1-2cpu-computer110 这一行。
4. 剔除完成的全局检查确认命令
完成上述所有步骤后,执行以下命令进行最终确认。如果以下命令均符合预期,则说明节点彻底且干净地下线。
检查 1:确认 Ceph 集群状态健康
docker exec ceph_mon ceph -s
预期结果:显示 health: HEALTH_OK,并且 osd 总数减少 4 个,没有任何降级 (degraded) 或错位 (misplaced) 信息。检查 2:确认 Nova 计算服务已清理
openstack compute service list | grep ty1-z1-2cpu-computer110
预期结果:无任何输出(说明该节点的计算服务已彻底从数据库中删除)。检查 3:确认 Neutron 网络代理已清理
openstack network agent list | grep ty1-z1-2cpu-computer110
预期结果:无任何输出(说明该节点的所有网络组件已彻底删除)。检查 4:确认 Cinder 存储服务已清理
openstack volume service list | grep ty1-z1-2cpu-computer110
预期结果:无任何输出。如果仍能看到服务记录,其 Status 必须是 disabled 且 State 必须是 down。5.下线实例被开机自动拉入了集群问题处理
一、现象
root@ty1-controller001:/opt/xunjian_log# cat xunjianlog20260827.txt | grep ty1-z1-2cpu-computer105
| 79d908f3-df33-42bb-9465-377e2d110798 | nova-compute | ty1-z1-2cpu-computer105 | nova | enabled | down | - | - | False |
| cinder-backup | ty1-z1-2cpu-computer105 | nova | enabled | down | 2026-08-27T08:27:30.000000 | - | - | |
| cinder-volume | ty1-z1-2cpu-computer105@rbd-1 | nova | enabled | down | 2026-08-27T08:27:31.000000 | - | - | - |
| 15616f62-de03-4888-b2f6-b14e53278356 | Metadata agent | ty1-z1-2cpu-computer105 | None | XXX | UP | neutron-metadata-agent |
| 8b10acdc-606c-4b23-9973-10f6d16154a7 | L3 agent | ty1-z1-2cpu-computer105 | nova | XXX | UP | neutron-l3-agent |二、清理
1、清理nova-compute
root@c9c20f67dc0c:/# openstack compute service set --disable ty1-z1-2cpu-computer105 nova-compute
root@c9c20f67dc0c:/# openstack compute service list | grep 105
| 79d908f3-df33-42bb-9465-377e2d110798 | nova-compute | ty1-z1-2cpu-computer105 | nova | disabled | down | 2026-08-27T09:48:13.000000 |
root@c9c20f67dc0c:/# openstack compute service delete 79d908f3-df33-42bb-9465-377e2d110798
Failed to delete compute service with ID '79d908f3-df33-42bb-9465-377e2d110798': HttpException: 500: Server Error for url: http://10.8.12.8:8774/v2.1/os-services/79d908f3-df33-42bb-9465-377e2d110798, Unexpected API Error. Please report this at http://bugs.launchpad.net/nova/ and attach the Nova API log if possible.
<class 'nova.exception.ComputeHostNotFound'>
1 of 1 compute services failed to delete.
#解决方式在数据库中收到清理:
#1、查询残留数据
MariaDB [nova]> SELECT id, host, `binary`, deleted, uuid
-> FROM services
-> WHERE uuid = '79d908f3-df33-42bb-9465-377e2d110798';
+-----+-------------------------+--------------+---------+--------------------------------------+
| id | host | binary | deleted | uuid |
+-----+-------------------------+--------------+---------+--------------------------------------+
| 208 | ty1-z1-2cpu-computer105 | nova-compute | 0 | 79d908f3-df33-42bb-9465-377e2d110798 |
+-----+-------------------------+--------------+---------+--------------------------------------+
1 row in set (0.001 sec)
#2、删除残留数据
UPDATE services
SET deleted = id, deleted_at = NOW()
WHERE uuid = '79d908f3-df33-42bb-9465-377e2d110798';
#3、清理 Placement 记录:
openstack resource provider list | grep ty1-z1-2cpu-computer105
# 复制上面查出来的 UUID,然后删除它
openstack resource provider delete <UUID>
#4、清理 Cell 映射:
nova-manage cell_v2 delete_host --host ty1-z1-2cpu-computer1052、清理cinder
#清理 cinder-volume 服务:
docker exec -it cinder_api cinder-manage service remove cinder-volume ty1-z1-2cpu-computer105@rbd-1
#清理 cinder-backup 服务:
docker exec -it cinder_api cinder-manage service remove cinder-backup ty1-z1-2cpu-computer1053、清除neutron
openstack network agent list --host ty1-z1-2cpu-computer110
openstack network agent delete <Agent_ID_1> <Agent_ID_2> <Agent_ID_3>
评论