10.3. 缩减裸机节点
若要缩减 overcloud 中的裸机节点数量,请标记您要从节点定义文件的堆栈中删除的节点,重新部署 overcloud,然后从 overcloud 中删除裸机节点。
先决条件
- 成功安装 undercloud。有关更多信息,请参阅在 undercloud 上安装 director。
- 成功部署 overcloud。如需更多信息,请参阅 使用预置备节点配置基本 overcloud。
如果要替换 Object Storage 节点,请将您要删除的节点中的数据复制到新替换节点。等待新节点上复制传递完成。在
/var/log/swift/swift.log文件中检查复制传递进度。传递完成后,Object Storage 服务(swift)会将条目添加到类似以下示例的日志中:Mar 29 08:49:05 localhost object-server: Object replication complete. Mar 29 08:49:11 localhost container-server: Replication run OVER Mar 29 08:49:13 localhost account-server: Replication run OVER
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭证文件:$ source ~/stackrc-
对于您要缩减的角色,减少
overcloud-baremetal-deploy.yaml文件中的count参数。 -
定义您要从堆栈中删除的每个节点的
主机名和名称(如果它们尚未在角色的instances属性中定义)。 将 attribute
provisioned: false添加到您要删除的节点。例如,要从堆栈中删除节点overcloud-objectstorage-1,请在overcloud-baremetal-deploy.yaml文件中包含以下代码片段:- name: ObjectStorage count: 3 instances: - hostname: overcloud-objectstorage-0 name: node00 - hostname: overcloud-objectstorage-1 name: node01 # Removed from cluster due to disk failure provisioned: false - hostname: overcloud-objectstorage-2 name: node02 - hostname: overcloud-objectstorage-3 name: node03重新部署 overcloud 后,堆栈中不再存在使用
provisioned: false属性定义的节点。但是,这些节点仍然以置备状态运行。注意如果要临时从堆栈中删除节点,在使用
provisioned: false属性部署 overcloud 后,您可以使用provisioned: true属性重新部署 overcloud,以将节点返回到堆栈。从 overcloud 删除节点:
$ openstack overcloud node delete \ --stack <stack> \ --baremetal-deployment \ /home/stack/templates/overcloud-baremetal-deploy.yaml将
<stack> 替换为置备裸机节点的堆栈名称。如果未指定,则默认为overcloud。注意不要将您要从堆栈中删除的节点作为命令参数包括在
openstack overcloud node delete命令中。
删除 ironic 节点:
$ openstack baremetal node delete <ironic_node_uuid>将
<ironic_node_uuid> 替换为节点的 UUID。删除已删除的节点的网络代理:
(overcloud)$ for AGENT in $(openstack network agent list \ --host <ironic_node_uuid> -c ID -f value) ; \ do openstack network agent delete $AGENT ; done置备 overcloud 节点以生成更新的 heat 环境文件,以包括在部署命令中:
$ openstack overcloud node provision \ --stack <stack> \ --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yaml-
将
<deployment_file>替换为用于部署命令生成的 heat 环境文件的名称,如/home/stack/templates/overcloud-baremetal-deployed.yaml。
-
将
将 provisioning 命令生成的
overcloud-baremetal-deployed.yaml文件添加到与其他环境文件的堆栈中,并部署 overcloud:$ openstack overcloud deploy \ ... -e /usr/share/openstack-tripleo-heat-templates/environments \ -e /home/stack/templates/overcloud-baremetal-deployed.yaml \ --disable-validations \ ...
10.3.1. 手动删除 Compute 节点 复制链接链接已复制到粘贴板!
如果因为无法访问的节点而导致 openstack overcloud node delete 命令失败,则必须从 overcloud 手动删除 Compute 节点。
先决条件
-
执行 缩减裸机节点 流程返回
UPDATE_FAILED状态。
流程
查找 undercloud 配置:
(overcloud)$ source ~/stackrc使用
openstack tripleo launch heat命令启动临时 heat 进程:(undercloud)$ openstack tripleo launch heat --heat-dir /home/stack/overcloud-deploy/overcloud/heat-launcher --restore-db命令在启动 heat 进程后退出。heat 进程将继续作为 podman pod 在后台运行。
使用
podman pod ps命令来验证ephemeral-heat进程是否正在运行:(undercloud)$ sudo podman pod ps POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS 958b141609b2 ephemeral-heat Running 2 minutes ago 44447995dbcf 3使用
export命令导出OS_CLOUD环境:(undercloud)$ export OS_CLOUD=heat使用
openstack stack list命令列出已安装的堆栈:(undercloud)$ openstack stack list +--------------------------------------+------------+---------+-----------------+----------------------+--------------+ | ID | Stack Name | Project | Stack Status | Creation Time | Updated Time | +--------------------------------------+------------+---------+-----------------+----------------------+--------------+ | 761e2a54-c6f9-4e0f-abe6-c8e0ad51a76c | overcloud | admin | CREATE_COMPLETE | 2022-08-29T20:48:37Z | None | +--------------------------------------+------------+---------+-----------------+----------------------+--------------+使用
export命令导出OS_CLOUD环境:(undercloud)$ export OS_CLOUD=undercloud识别您要删除的节点的 UUID:
(undercloud)$ openstack baremetal node list将要删除的节点移至维护模式:
(undercloud)$ openstack baremetal node maintenance set <node_uuid>- 等待 Compute 服务将其状态与 Bare Metal 服务同步。这最多可能需要 4 分钟。
查找 overcloud 配置:
(undercloud)$ source ~/overcloudrc删除已删除的节点的网络代理:
(overcloud)$ for AGENT in $(openstack network agent list --host <scaled_down_node> -c ID -f value) ; do openstack network agent delete $AGENT ; done-
将
<scaled_down_node>替换为要移除的节点的名称。
-
将
确认 overcloud 上已删除节点上禁用了 Compute 服务,以防止节点调度新实例:
(overcloud)$ openstack compute service list如果没有禁用 Compute 服务,请禁用它:
(overcloud)$ openstack compute service set <hostname> nova-compute --disable将删除的 Compute 服务作为资源提供商从放置服务中移除:
(overcloud)$ openstack resource provider list (overcloud)$ openstack resource provider delete <uuid>- 在您要删除的 Compute 节点上,以 root 用户身份登录。
删除在 Red Hat Subscription Management 中注册的系统配置文件:
# subscription-manager remove --all # subscription-manager unregister # subscription-manager clean注意如果无法访问 Compute 节点,您可以删除红帽客户门户网站中的系统配置文件。如需更多信息,请参阅 如何删除注册到 Red Hat Subscription Management (RHSM)的系统的系统 配置文件?
查找 undercloud 配置:
(overcloud)$ source ~/stackrc从堆栈中删除 Compute 节点:
(undercloud)$ openstack overcloud node delete --stack <overcloud> <node> --baremetal-deployment <baremetal_deployment_file>-
将
<overcloud>替换为 overcloud 堆栈的名称或 UUID。 -
将 &
lt;node> 替换为您要删除的 Compute 节点的 Compute 服务主机名或 UUID。 将
<baremetal_deployment_file> 替换为裸机部署文件的名称。注意如果节点已经关闭,这个命令会返回
WARNING信息:Ansible failed, check log at `~/ansible.log` WARNING: Scale-down configuration error. Manual cleanup of some actions may be necessary. Continuing with node removal.您可以忽略此消息。
-
将
- 等待 overcloud 节点删除。
使用
export命令导出OS_CLOUD环境:(undercloud)$ export OS_CLOUD=heat当节点删除完成后,检查 overcloud 栈的状态:
(undercloud)$ openstack stack listExpand 表 10.2. 结果 状态 描述 UPDATE_COMPLETEdelete 操作成功完成。
UPDATE_FAILED删除操作失败。
在处于维护模式时 overcloud 节点无法删除,则问题可能与硬件相关。
如果启用了 Instance HA,请执行以下操作:
为节点清理 Pacemaker 资源:
$ sudo pcs resource delete <scaled_down_node> $ sudo cibadmin -o nodes --delete --xml-text '<node id="<scaled_down_node>"/>' $ sudo cibadmin -o fencing-topology --delete --xml-text '<fencing-level target="<scaled_down_node>"/>' $ sudo cibadmin -o status --delete --xml-text '<node_state id="<scaled_down_node>"/>' $ sudo cibadmin -o status --delete-all --xml-text '<node id="<scaled_down_node>"/>' --force删除节点的 STONITH 设备:
$ sudo pcs stonith delete <device-name>
如果您没有替换 overcloud 上已删除的 Compute 节点,请减少包含节点数的环境文件中的
ComputeCount参数。此文件通常命名为overcloud-baremetal-deploy.yaml。例如,如果您删除了一个节点,将节点数从四个节点减小到三个节点:parameter_defaults: ... ComputeCount: 3 ...减少节点数可确保 director 在运行
openstack overcloud deploy时不置备任何新节点。注意要在从部署后替换 Compute 节点,请参阅 扩展裸机节点。