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
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:source ~/stackrc
$ source ~/stackrc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
对于您要缩减的角色,减少
overcloud-baremetal-deploy.yaml
文件中的count
参数。 -
定义您要从堆栈中删除的每个节点的
主机名和
名称
(如果它们尚未在角色的instances
属性中定义)。 将 attribute
provisioned: false
添加到您要删除的节点。例如,要从堆栈中删除节点overcloud-objectstorage-1
,请在overcloud-baremetal-deploy.yaml
文件中包含以下代码片段:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新部署 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
$ openstack overcloud node delete \ --stack <stack> \ --baremetal-deployment \ /home/stack/templates/overcloud-baremetal-deploy.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
&
lt;stack> 替换为置备裸机节点的堆栈名称。如果未指定,则默认为overcloud
。注意不要将您要从堆栈中删除的节点作为命令参数包括在
openstack overcloud node delete
命令中。
删除 ironic 节点:
openstack baremetal node delete <ironic_node_uuid>
$ openstack baremetal node delete <ironic_node_uuid>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<ironic_node_uuid
> 替换为节点的 UUID。删除已删除的节点的网络代理:
for AGENT in $(openstack network agent list \ --host <ironic_node_uuid> -c ID -f value) ; \ do openstack network agent delete $AGENT ; done
(overcloud)$ for AGENT in $(openstack network agent list \ --host <ironic_node_uuid> -c ID -f value) ; \ do openstack network agent delete $AGENT ; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 置备 overcloud 节点以生成更新的 heat 环境文件,以包括在部署命令中:
openstack overcloud node provision \ --stack <stack> \ --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yaml
$ openstack overcloud node provision \ --stack <stack> \ --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<deployment_file>
替换为用于部署命令生成的 heat 环境文件的名称,如/home/stack/templates/overcloud-baremetal-deployed.yaml
。
-
将
将 provisioning 命令生成的
overcloud-baremetal-deployed.yaml
文件添加到与其他环境文件的堆栈中,并部署 overcloud:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.3.1. 手动删除 Compute 节点 复制链接链接已复制到粘贴板!
如果因为无法访问的节点而导致 openstack overcloud node delete
命令失败,则必须从 overcloud 手动删除 Compute 节点。
先决条件
-
执行 缩减裸机节点 流程返回
UPDATE_FAILED
状态。
流程
查找 undercloud 配置:
source ~/stackrc
(overcloud)$ source ~/stackrc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
openstack tripleo launch heat
命令启动临时 heat 进程:openstack tripleo launch heat --heat-dir /home/stack/overcloud-deploy/overcloud/heat-launcher --restore-db
(undercloud)$ openstack tripleo launch heat --heat-dir /home/stack/overcloud-deploy/overcloud/heat-launcher --restore-db
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 命令在启动 heat 进程后退出。heat 进程将继续作为 podman pod 在后台运行。
使用
podman pod ps
命令来验证ephemeral-heat
进程是否正在运行:sudo podman pod ps
(undercloud)$ sudo podman pod ps POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS 958b141609b2 ephemeral-heat Running 2 minutes ago 44447995dbcf 3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
export
命令导出OS_CLOUD
环境:export OS_CLOUD=heat
(undercloud)$ export OS_CLOUD=heat
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
openstack stack list
命令列出已安装的堆栈:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
export
命令导出OS_CLOUD
环境:export OS_CLOUD=undercloud
(undercloud)$ export OS_CLOUD=undercloud
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 识别您要删除的节点的 UUID:
openstack baremetal node list
(undercloud)$ openstack baremetal node list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将要删除的节点移至维护模式:
openstack baremetal node maintenance set <node_uuid>
(undercloud)$ openstack baremetal node maintenance set <node_uuid>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 等待 Compute 服务将其状态与 Bare Metal 服务同步。这最多可能需要 4 分钟。
查找 overcloud 配置:
source ~/overcloudrc
(undercloud)$ source ~/overcloudrc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除已删除的节点的网络代理:
for AGENT in $(openstack network agent list --host <scaled_down_node> -c ID -f value) ; do openstack network agent delete $AGENT ; done
(overcloud)$ for AGENT in $(openstack network agent list --host <scaled_down_node> -c ID -f value) ; do openstack network agent delete $AGENT ; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<scaled_down_node>
替换为要移除的节点的名称。
-
将
确认 overcloud 上已删除节点上禁用了 Compute 服务,以防止节点调度新实例:
openstack compute service list
(overcloud)$ openstack compute service list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果没有禁用 Compute 服务,请禁用它:
openstack compute service set <hostname> nova-compute --disable
(overcloud)$ openstack compute service set <hostname> nova-compute --disable
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将删除的 Compute 服务作为资源提供商从放置服务中移除:
openstack resource provider list openstack resource provider delete <uuid>
(overcloud)$ openstack resource provider list (overcloud)$ openstack resource provider delete <uuid>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在您要删除的 Compute 节点上,以 root 用户身份登录。
删除在 Red Hat Subscription Management 中注册的系统配置文件:
subscription-manager remove --all subscription-manager unregister subscription-manager clean
# subscription-manager remove --all # subscription-manager unregister # subscription-manager clean
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果无法访问 Compute 节点,您可以删除红帽客户门户网站中的系统配置文件。如需更多信息,请参阅 如何删除注册到 Red Hat Subscription Management (RHSM)的系统的系统 配置文件?
查找 undercloud 配置:
source ~/stackrc
(overcloud)$ source ~/stackrc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从堆栈中删除 Compute 节点:
openstack overcloud node delete --stack <overcloud> <node> --baremetal-deployment <baremetal_deployment_file>
(undercloud)$ openstack overcloud node delete --stack <overcloud> <node> --baremetal-deployment <baremetal_deployment_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<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.
Ansible failed, check log at `~/ansible.log` WARNING: Scale-down configuration error. Manual cleanup of some actions may be necessary. Continuing with node removal.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以忽略此消息。
-
将
- 等待 overcloud 节点删除。
使用
export
命令导出OS_CLOUD
环境:export OS_CLOUD=heat
(undercloud)$ export OS_CLOUD=heat
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当节点删除完成后,检查 overcloud 栈的状态:
openstack stack list
(undercloud)$ openstack stack list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Expand 表 10.2. 结果 状态 描述 UPDATE_COMPLETE
delete 操作成功完成。
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
$ 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除节点的 STONITH 设备:
sudo pcs stonith delete <device-name>
$ sudo pcs stonith delete <device-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果您没有替换 overcloud 上已删除的 Compute 节点,请减少包含节点数的环境文件中的
ComputeCount
参数。此文件通常命名为overcloud-baremetal-deploy.yaml
。例如,如果您删除了一个节点,将节点数从四个节点减小到三个节点:parameter_defaults: ... ComputeCount: 3 ...
parameter_defaults: ... ComputeCount: 3 ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 减少节点数可确保 director 在运行
openstack overcloud deploy
时不置备任何新节点。注意要在从部署后替换 Compute 节点,请参阅 扩展裸机节点。