Compute 实例的高可用性
为 Compute 实例配置高可用性
摘要
使开源包含更多
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
第 1 章 简介和规划实例 HA 部署
Compute 实例(Instance HA)的高可用性是一个用于从故障 Compute 节点撤离实例的工具,并在不同的 Compute 节点上重新创建实例。
实例 HA 可以与共享存储或本地存储环境配合使用,这意味着撤离的实例维护相同的网络配置,如静态 IP 地址和浮动 IP 地址。重新创建的实例也会在新的 Compute 节点中维护相同的特征。
1.1. 实例 HA 的工作原理
当 Compute 节点出现故障时,overcloud 隔离代理会隔离该节点,那么 Instance HA 代理会将实例从故障 Compute 节点撤离到不同的 Compute 节点。
当 Compute 节点失败并触发 Instance HA 时,会出现以下事件:
-
在出现故障时,
IPMI
代理执行第一层隔离,其中包括物理重置节点,以确保它关闭并防止 overcloud 上的数据崩溃或多个相同实例。当节点离线时,它被视为被隔离。 在物理 IPMI 隔离后,
fence-nova
代理会自动执行第二个层隔离,并通过运行以下命令来使用"evacuate=yes"
集群标记隔离的节点:$ attrd_updater -n evacuate -A name="evacuate" host="FAILEDHOST" value="yes"
FAILEDHOST
是故障 Compute 节点的名称。-
nova-evacuate
代理持续在后台运行,并使用"evacuate=yes"
属性定期检查集群是否有节点。当nova-evacuate
检测到隔离的节点包含此属性时,代理会启动撤离节点。撤离过程与可随时执行的手动实例撤离过程类似。 -
当失败的节点在 IPMI 重置后重新启动时,该节点上的
nova-compute
进程也会自动启动。因为该节点之前被隔离,所以它不会运行任何新实例,直到 Pacemaker 取消隔离节点为止。 -
当 Pacemaker 检测到 Compute 节点在线时,它会在节点上启动
compute-unfence-trigger
资源代理,这会释放该节点,以便可以再次运行实例。
其他资源
1.2. 规划您的实例 HA 部署
在部署 Instance HA 前,请查看资源名称是否合规,并根据您的环境配置存储和网络。
- Compute 节点主机名和 Pacemaker 远程资源名称必须符合 W3C 命名约定。如需更多信息,请参阅 W3C 文档中的 Declaring Namespaces 和 Names and Tokens。
通常,instance HA 要求您为实例的磁盘镜像配置共享存储。因此,如果您尝试使用
no-shared-storage
选项,您可能会在撤离过程中收到InvalidSharedStorage
错误,且实例不会在另一个 Compute 节点上启动。但是,如果所有实例都被配置为从 OpenStack Block Storage (
cinder
)卷引导,则不需要为实例的磁盘镜像配置共享存储,您可以使用no-shared-storage
选项驱除所有实例。在撤离过程中,如果您的实例被配置为从块存储卷引导,则任何撤离的实例都从另一个 Compute 节点上的同一卷启动。因此,撤离的实例会立即重新启动其作业,因为 OS 镜像和应用程序数据存储在 OpenStack Block Storage 卷上。
-
如果在 Spine-Leaf 环境中部署 Instance HA,您必须为 Controller 和 Compute 节点定义一个
internal_api
网络。然后,您可以为每个叶定义一个子网。有关配置 Spine-Leaf 网络的更多信息,请参阅 Spine Leaf Networking 指南中的创建角色数据文件。 - 从 Red Hat OpenStack Platform 13 及更高版本,您可以使用 director 升级实例 HA 作为 overcloud 升级的一部分。有关升级 overcloud 的更多信息,请参阅 Red Hat OpenStack Platform Updated 指南。
在安装后,不支持使用 director 禁用实例 HA。有关从部署中手动删除实例 HA 组件的临时解决方案,请参阅 如何从控制器节点中删除 Instance HA 组件?。
重要在生产环境中不会验证这个临时解决方案。您必须在生产环境中实施测试环境中前验证测试环境中的步骤。
1.3. 实例 HA 资源代理
实例 HA 使用 fence_compute
、NovaEvacuate
,以及 comput-unfence-trigger
资源代理在 Compute 节点失败时撤离和重新创建实例。
代理名称 | 集群内的名称 | 角色 |
---|---|---|
|
| 当节点不可用时,标记 Compute 节点以进行撤离。 |
|
| 从故障节点撤离实例。此代理在其中一个 Controller 节点上运行。 |
|
| 释放隔离的节点,并让节点再次运行实例。 |
第 2 章 安装和配置实例 HA
您可以使用 Red Hat OpenStack Platform (RHOSP) director 部署实例高可用性(HA)。但是,您必须执行额外的步骤,以在新的 overcloud 上配置新的实例 HA 部署。完成这些步骤后,instance HA 将运行在具有自定义角色的 Compute 节点的子集。
要在不同的环境中启用实例 HA,如使用标准或自定义角色的现有 overcloud,请仅执行与部署相关的步骤并相应地调整模板。
2.1. 配置 Instance HA 角色和配置集
在部署 Instance HA 之前,将 Instance HA 角色添加到 roles-data.yaml
文件中,使用 Instance HA 配置集标记您要管理的每个 Compute 节点,并将它们添加到 overcloud-baremetal-deploy.yaml
文件中或等同的。有关为特定角色设计 overcloud 节点的更多信息,请参阅: 通过匹配配置文件为角色指定 overcloud 节点。例如,您可以使用 computeiha
配置集来配置节点。
流程
检查每个注册的节点的现有功能:
(undercloud)$ openstack baremetal node show <node> -f json -c properties | jq -r .properties.capabilities
通过将
profile:computeiha
添加到节点的现有功能,为您要与角色配置集匹配的每个裸机节点分配配置集功能:(undercloud)$ openstack baremetal node set <node> --property capabilities="profile:computeiha,<capability_1>,...,<capability_n>"
- 将 <node> 替换为裸机节点的 ID。
- 将 <capability_1> 以及所有功能(直到 <capability_n>)替换为您在第 1 步中检查的每个功能。
-
将角色添加到
overcloud-baremetal-deploy.yaml
文件中(如果尚未定义)。 编辑
overcloud-baremetal-deploy.yaml
,以定义您要分配给角色节点的配置集:- name: ComputeInstanceHA count: 2 hostname_format: compute-%index% defaults: profile: computeiha network_config: template: /home/stack/composable_roles/network/nic-configs/compute.j2 networks: - network: ctlplane vif: true - network: internal_api - network: tenant - network: storage
置备 overcloud 节点:
(undercloud)$ openstack overcloud node provision \ --stack <stack> \ --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yaml
-
将 <stack> 替换为您要置备的裸机节点的堆栈的名称。默认值为
overcloud
。 -
将 <deployment_file> 替换为您为生成的 heat 环境文件选择使用部署命令的名称,如
/home/stack/templates/overcloud-baremetal-deployed.yaml
。
-
将 <stack> 替换为您要置备的裸机节点的堆栈的名称。默认值为
2.2. 隔离在带有实例 HA 的 overcloud 上启用隔离
通过创建带有隔离信息的环境文件,在 overcloud 中的所有 Controller 和 Compute 节点上启用隔离。
流程
在可访问的位置创建环境文件,如 ~/templates,并包含以下内容:
parameter_defaults: EnableFencing: true FencingConfig: devices: - agent: fence_ipmilan host_mac: 00:ec:ad:cb:3c:c7 params: login: admin ipaddr: 192.168.24.1 ipport: 6230 passwd: password lanplus: 1 - agent: fence_ipmilan host_mac: 00:ec:ad:cb:3c:cb params: login: admin ipaddr: 192.168.24.1 ipport: 6231 passwd: password lanplus: 1 - agent: fence_ipmilan host_mac: 00:ec:ad:cb:3c:cf params: login: admin ipaddr: 192.168.24.1 ipport: 6232 passwd: password lanplus: 1 - agent: fence_ipmilan host_mac: 00:ec:ad:cb:3c:d3 params: login: admin ipaddr: 192.168.24.1 ipport: 6233 passwd: password lanplus: 1 - agent: fence_ipmilan host_mac: 00:ec:ad:cb:3c:d7 params: login: admin ipaddr: 192.168.24.1 ipport: 6234 passwd: password lanplus: 1
如果没有将共享存储用于 Compute 实例,请在您创建的环境文件中添加以下参数:
parameter_defaults: ExtraConfig: tripleo::instanceha::no_shared_storage: true
2.3. 使用实例 HA 部署 overcloud
如果您已经部署了 overcloud,您可以使用您创建的额外实例 HA 文件再次运行 openstack overcloud deploy
命令。您可以在创建 undercloud 后随时为 overcloud 配置实例 HA。
先决条件
- 已配置了一个 Instance HA 角色和配置集。
- 您在 overcloud 上启用了隔离。
流程
使用带有
-e
选项的openstack overcloud deploy
命令,使其包含compute-instanceha.yaml
环境文件并包含额外的环境文件。$ openstack overcloud deploy --templates \ -e <fencing_environment_file> \ -r my_roles_data.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/compute-instanceha.yaml
将
<fencing_environment_file
> 替换为适合您的环境的文件名:
-
不要修改
compute-instanceha.yaml
环境文件。 - 包含您要包含在 overcloud 部署中的每个环境文件的完整路径。
部署后,每个 Compute 节点都包含一个 STONITH
设备和一个 pacemaker_remote
服务。
2.4. 测试实例 HA 撤离
要测试实例 HA 正确撤离实例,您可以在 Compute 节点上触发撤离,并检查实例 HA 代理是否成功撤离并重新创建实例。
以下流程涉及严重崩溃 Compute 节点,该节点会触发使用 Instance HA 自动清空实例。
前提条件
- 实例 HA 部署在 Compute 节点上。
流程
启动 overcloud 上的一个或多个实例。
stack@director $ . overcloudrc stack@director $ openstack server create --image cirros --flavor 2 test-failover stack@director $ openstack server list -c Name -c Status
登录托管实例的 Compute 节点,并更改到
root
用户。将compute-n
替换为 Compute 节点的名称:stack@director $ . stackrc stack@director $ ssh -l tripleo-admin compute-n tripleo-admin@compute-n $ su -
崩溃 Compute 节点。
root@compute-n $ echo c > /proc/sysrq-trigger
等待几分钟,以便节点重启,然后验证您在另一个 Compute 节点上重新创建您崩溃的 Compute 节点上的实例:
stack@director $ openstack server list -c Name -c Status stack@director $ openstack compute service list
2.5. 使用实例 HA 将实例设计为撤离
默认情况下,instance HA 从故障节点驱除所有实例。您可以将实例 HA 配置为仅撤离具有特定镜像或类别的实例。
前提条件
- 实例 HA 部署在 overcloud 上。
流程
-
以
stack
用户身份登录 undercloud。 获取
overcloudrc
文件:$ source ~/overcloudrc
使用以下选项之一:
标记镜像:
(overcloud) $ openstack image set --tag evacuable <image_id>
将
<image_id
> 替换为您要撤离的镜像 ID。标记类别:
(overcloud) $ openstack flavor set --property evacuable=true <flavor_id>
将
<flavor_id
> 替换为您要撤离的类别 ID。
2.6. 其他资源
第 3 章 使用实例 HA 对 undercloud 和 overcloud 执行维护
要对 undercloud 和 overcloud 执行维护,您必须按照特定顺序关闭并启动 undercloud 和 overcloud 节点,以确保启动 overcloud 时的最小问题。您还可以通过停止节点并禁用节点上的 Pacemaker 资源,在特定 Compute 或 Controller 节点上执行维护。
3.1. 前提条件
- 正在运行的 undercloud 和启用了实例 HA 的 overcloud。
3.2. undercloud 和 overcloud 关闭顺序
要关闭 Red Hat OpenStack Platform 环境,您必须按照以下顺序关闭 overcloud 和 undercloud:
- 关闭 overcloud Compute 节点上的实例
- 关闭 Compute 节点
- 停止 Controller 节点上的所有高可用性和 OpenStack Platform 服务
- 关闭 Ceph Storage 节点
- 关闭 Controller 节点
- 关闭 undercloud
3.2.1. 关闭 overcloud Compute 节点上的实例
作为关闭 Red Hat OpenStack Platform 环境的一部分,在关闭 Compute 节点之前关闭 Compute 节点上的所有实例。
先决条件
- 具有活跃 Compute 服务的 overcloud
步骤
-
以
stack
用户身份登录 undercloud。 提供 overcloud 的凭据文件:
$ source ~/overcloudrc
查看 overcloud 中运行的实例:
$ openstack server list --all-projects
停止 overcloud 中的每个实例:
$ openstack server stop <INSTANCE>
对每个实例重复这一步,直到停止 overcloud 中的所有实例。
3.2.2. 在 overcloud Compute 节点上停止实例 HA 服务
作为关闭 Red Hat OpenStack Platform 环境的一部分,您必须关闭在 Compute 节点上运行的所有实例 HA 服务,然后才能停止实例并关闭 Compute 节点。
前提条件
- 具有活跃 Compute 服务的 overcloud
- Compute 节点上启用了实例 HA
流程
-
以
root
用户身份登录运行 Pacemaker 的 overcloud 节点。 在每个 Compute 节点上禁用 Pacemaker 远程资源:
识别 Compute 节点上的 Pacemaker 远程资源:
# pcs resource status
这些资源使用
ocf::pacemaker:remote
代理,通常以 Compute 节点主机格式命名,如overcloud-novacomputeiha-0
。禁用每个 Pacemaker 远程资源。以下示例演示了如何禁用
overcloud-novacomputeiha-0
的资源:# pcs resource disable overcloud-novacomputeiha-0
禁用 Compute 节点 STONITH 设备:
确定 Compute 节点 STONITH 设备:
# pcs stonith status
禁用每个 Compute 节点 STONITH 设备:
# pcs stonith disable <STONITH_DEVICE>
3.2.3. 关闭 Compute 节点
作为关闭 Red Hat OpenStack Platform 环境的一部分,登录并关闭每个 Compute 节点。
先决条件
- 关闭 Compute 节点上的所有实例:
步骤
-
以
root
用户身份登录 Compute 节点。 关闭该节点:
# shutdown -h now
- 对每个 Compute 节点执行这些步骤,直到关闭所有 Compute 节点。
3.2.4. 停止 Controller 节点上的服务
作为关闭 Red Hat OpenStack Platform 环境的一部分,在关闭 Controller 节点前停止节点上的服务。这包括 Pacemaker 和 systemd 服务。
先决条件
- 具有活跃 Pacemaker 服务的 overcloud
步骤
-
以
root
用户身份登录 Controller 节点。 停止 Pacemaker 集群。
# pcs cluster stop --all
此命令停止所有节点上的集群。
等待 Pacemaker 服务停止并检查服务是否已停止。
检查 Pacemaker 状态:
# pcs status
检查 Podman 中没有 Pacemaker 服务在运行:
# podman ps --filter "name=.*-bundle.*"
停止 Red Hat OpenStack Platform 服务:
# systemctl stop 'tripleo_*'
等待服务停止,检查 Podman 中服务不再运行:
# podman ps
3.2.5. 关闭 Ceph Storage 节点
作为关闭 Red Hat OpenStack Platform 环境的一部分,禁用 Ceph Storage 服务,然后登录并关闭每个 Ceph Storage 节点。
先决条件
- 正常运行的 Ceph Storage 集群
- Ceph MON 服务在单机 Ceph MON 节点或 Controller 节点上运行
步骤
-
以
root
用户身份登录运行 Ceph MON 服务的节点,如 Controller 节点或单机 Ceph MON 节点。 检查集群的运行状况。在以下示例中,
podman
命令在 Controller 节点上的 Ceph MON 容器中运行状态检查:# sudo podman exec -it ceph-mon-controller-0 ceph status
确保状态为
HEALTH_OK
。为集群设置
noout
、norecover
、norebalance
、nobackfill
、nodown
和pause
标志。在以下示例中,podman
命令通过 Controller 节点上的 Ceph MON 容器设置这些标志:# sudo podman exec -it ceph-mon-controller-0 ceph osd set noout # sudo podman exec -it ceph-mon-controller-0 ceph osd set norecover # sudo podman exec -it ceph-mon-controller-0 ceph osd set norebalance # sudo podman exec -it ceph-mon-controller-0 ceph osd set nobackfill # sudo podman exec -it ceph-mon-controller-0 ceph osd set nodown # sudo podman exec -it ceph-mon-controller-0 ceph osd set pause
关闭每个 Ceph Storage 节点:
-
以
root
用户身份登录 Ceph Storage 节点。 关闭该节点:
# shutdown -h now
- 对每个 Ceph Storage 节点执行这些步骤,直到关闭所有 Ceph Storage 节点。
-
以
关闭任何单机 Ceph MON 节点:
-
以
root
用户身份登录单机 Ceph MON 节点。 关闭该节点:
# shutdown -h now
- 对每个单机 Ceph MON 节点执行这些步骤,直到关闭所有单机 Ceph MON 节点。
-
以
3.2.6. 关闭 Controller 节点
作为关闭 Red Hat OpenStack Platform 环境的一部分,登录并关闭每个 Controller 节点。
先决条件
- 停止 Pacemaker 集群
- 停止 Controller 节点上的所有 Red Hat OpenStack Platform 服务
步骤
-
以
root
用户身份登录 Controller 节点。 关闭该节点:
# shutdown -h now
- 对每个 Controller 节点执行这些步骤,直到关闭所有 Controller 节点。
3.2.7. 关闭 undercloud
作为关闭 Red Hat OpenStack Platform 环境的一部分,登录到 undercloud 节点并关闭 undercloud。
先决条件
- 正在运行的 undercloud
步骤
-
以
stack
用户身份登录 undercloud。 关闭 undercloud:
$ sudo shutdown -h now
3.3. 执行系统维护
在完全关闭 undercloud 和 overcloud 后,对环境中的系统执行任何维护,然后启动 undercloud 和 overcloud。
3.4. undercloud 和 overcloud 启动顺序
要启动 Red Hat OpenStack Platform 环境,您必须按照以下顺序启动 undercloud 和 overcloud:
- 启动 undercloud。
- 启动 Controller 节点。
- 启动 Ceph Storage 节点。
- 启动 Compute 节点。
- 启动 overcloud Compute 节点上的实例。
3.4.1. 启动 undercloud
作为启动 Red Hat OpenStack Platform 环境的一部分,启动 undercloud 节点,登录到 undercloud,再检查 undercloud 服务。
先决条件
- undercloud 已关机。
流程
- 打开 undercloud 并等待 undercloud 引导。
验证
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:$ source ~/stackrc
检查 undercloud 上的服务:
$ systemctl list-units 'tripleo_*'
验证名为
tripleo-ansible-inventory.yaml
的静态清单文件:$ validation run --group pre-introspection -i <inventory_file>
将
<inventory_file
> 替换为 Ansible 清单文件的名称和位置,如~/tripleo-deploy/undercloud/tripleo-ansible-inventory.yaml
。注意当您运行验证时,输出中的
Reasons
列仅限于 79 个字符。要查看验证结果已满,请查看验证日志文件。
检查所有服务和容器是否活跃且健康:
$ validation run --validation service-status --limit undercloud -i <inventory_file>
其他资源
3.4.2. 启动 Controller 节点
作为启动 Red Hat OpenStack Platform 环境的一部分,打开每个 Controller 节点电源,并检查节点上的非 Pacemaker 服务。
先决条件
- Controller 节点已关闭。
流程
- 打开每个 Controller 节点电源。
验证
-
以
root
用户身份登录每个 Controller 节点。 检查 Controller 节点上的服务:
$ systemctl -t service
只有基于非 Pacemaker 的服务正在运行。
等待 Pacemaker 服务启动并检查服务是否已启动:
$ pcs status
注意如果您的环境使用 Instance HA,Pacemaker 资源不会启动,直到您启动 Compute 节点,或使用
pcs stonith confirm <compute_node>
命令执行手动取消隔离操作。您必须在使用 Instance HA 的每个 Compute 节点上运行此命令。
3.4.3. 启动 Ceph Storage 节点
作为启动 Red Hat OpenStack Platform 环境的一部分,打开 Ceph MON 和 Ceph Storage 节点电源,并启用 Ceph Storage 服务。
先决条件
- 已关闭电源的 Ceph Storage 集群
- Ceph MON 服务在已关闭电源的单机 Ceph MON 节点或已打开电源的 Controller 节点上启用
步骤
- 如果您的环境有单机 Ceph MON 节点,请打开每个 Ceph MON 节点电源。
- 打开每个 Ceph Storage 节点电源。
-
以
root
用户身份登录运行 Ceph MON 服务的节点,如 Controller 节点或单机 Ceph MON 节点。 检查集群节点的状态:在以下示例中,
podman
命令在 Controller 节点上的 Ceph MON 容器中运行状态检查:# sudo podman exec -it ceph-mon-controller-0 ceph status
确保每个节点都已打开电源并连接。
为集群取消设置
noout
、norecover
、norebalance
、nobackfill
、nodown
和pause
标志。在以下示例中,podman
命令通过 Controller 节点上的 Ceph MON 容器取消设置这些标志:# sudo podman exec -it ceph-mon-controller-0 ceph osd unset noout # sudo podman exec -it ceph-mon-controller-0 ceph osd unset norecover # sudo podman exec -it ceph-mon-controller-0 ceph osd unset norebalance # sudo podman exec -it ceph-mon-controller-0 ceph osd unset nobackfill # sudo podman exec -it ceph-mon-controller-0 ceph osd unset nodown # sudo podman exec -it ceph-mon-controller-0 ceph osd unset pause
验证
检查集群的运行状况。在以下示例中,
podman
命令在 Controller 节点上的 Ceph MON 容器中运行状态检查:# sudo podman exec -it ceph-mon-controller-0 ceph status
确保状态为
HEALTH_OK
。
3.4.4. 启动 Compute 节点
作为启动 Red Hat OpenStack Platform 环境的一部分,打开每个 Compute 节点电源并检查节点上的服务。
先决条件
- 关闭 Compute 节点电源
步骤
- 打开每个 Compute 节点电源。
验证
-
以
root
用户身份登录每个 Compute。 检查 Compute 节点上的服务:
$ systemctl -t service
3.4.5. 启动 overcloud Compute 节点上的实例 HA 服务
作为启动 Red Hat OpenStack Platform 环境的一部分,启动 Compute 节点上的所有实例 HA 服务。
前提条件
- 具有运行 Compute 节点的 overcloud
- Compute 节点上启用了实例 HA
流程
-
以
root
用户身份登录运行 Pacemaker 的 overcloud 节点。 为 Compute 节点启用 STONITH 设备:
确定 Compute 节点 STONITH 设备:
# pcs stonith status
清除 Compute 节点的 STONITH 错误:
# pcs stonith confirm <COMPUTE_NODE>
这个命令将节点返回到干净的 STONITH 状态。
启用 Compute 节点 STONITH 设备:
# pcs stonith enable <STONITH_DEVICE>
- 使用 STONITH 为每个 Compute 节点执行这些步骤。
在每个 Compute 节点上启用 Pacemaker 远程资源:
识别 Compute 节点上的 Pacemaker 远程资源:
# pcs resource status
这些资源使用
ocf::pacemaker:remote
代理,通常以 Compute 节点主机格式命名,如overcloud-novacomputeiha-0
。启用每个 Pacemaker 远程资源。以下示例演示了如何为
overcloud-novacomputeiha-0
启用资源:# pcs resource enable overcloud-novacomputeiha-0
- 使用 Pacemaker 远程管理为每个 Compute 节点执行这些步骤。
等待 Pacemaker 服务启动并检查服务是否已启动:
# pcs status
如果任何 Pacemaker 资源在启动过程中无法启动,请重置资源的状态和失败计数:
# pcs resource cleanup
注意有些服务可能需要更长的时间才能启动,如
fence_compute
和fence_kdump
。
3.4.6. 启动 overcloud Compute 节点上的实例
作为启动 Red Hat OpenStack Platform 环境的一部分,启动 Compute 节点上的实例。
先决条件
- 具有活跃节点的活跃 overcloud
步骤
-
以
stack
用户身份登录 undercloud。 提供 overcloud 的凭据文件:
$ source ~/overcloudrc
查看 overcloud 中运行的实例:
$ openstack server list --all-projects
启动 overcloud 中的实例:
$ openstack server start <INSTANCE>
第 4 章 在 Compute 节点上通过 Instance HA 执行维护
要在 Compute 节点上或带有 Instance HA 的 Controller 节点上执行维护,请通过将其设置为 待机模式
并禁用节点上的 Pacemaker 资源来停止节点。完成维护工作后,您将启动该节点并检查 Pacemaker 资源是否健康。
前提条件
- 已启用实例 HA 的运行的 overcloud
流程
登录到 Controller 节点并停止 Compute 或 Controller 节点:
# pcs node standby <node UUID>
重要您必须从您要停止的节点登录到不同的节点。
在节点上禁用 Pacemaker 资源:
# pcs resource disable <ocf::pacemaker:remote on the node>
- 在节点上执行任何维护工作。
- 恢复 IPMI 连接并启动节点。在继续操作前,等待节点就绪。
在节点上启用 Pacemaker 资源并启动节点:
# pcs resource enable <ocf::pacemaker:remote on the node> # pcs node unstandby <node UUID>
如果将节点设置为维护模式,请提供 overcloud 的凭据文件,并从维护模式取消设置节点:
# source stackrc # openstack baremetal node maintenance unset <baremetal node UUID>
验证
检查 Pacemaker 资源是否活跃且健康:
# pcs status
-
如果任何 Pacemaker 资源在启动过程中无法启动,请运行
pcs resource cleanup
命令来重置资源的状态和故障计数。 如果您在停止节点前从 Compute 节点撤离实例,请检查实例是否已迁移到不同的节点:
# openstack server list --long # nova migration-list