4.6. 为计划维护准备 Compute 节点
使用带有 主机维护策略的 Optimize 服务(watcher)将 Red Hat OpenStack Services on OpenShift (RHOSO)环境中的所有实例从您的 Red Hat OpenStack Services (RHOSO)环境中迁移,以便在用户中断的情况下执行主机维护。如果没有提供备份节点,则 Optimize 服务通过依赖 nova-scheduler 来迁移所有实例。在这两种用例中,计算维护节点将被禁用。
在计划维护窗口中使用主机维护策略,其中负载较低,以最大程度降低对工作负载的影响。运行审计时,请确保不会更改默认的 audit_type 值 ONESHOT。
| 目标 | 策略 |
|---|---|
|
|
|
先决条件
- 您有一个可正常工作的 RHOSO 18.0,在其上运行 Optimize 服务(watcher)。
您至少有两个 Compute 节点:
- 一个 Compute 节点,至少有一个实例正在运行。
- 充当备份节点的第二个 Compute 节点。
-
在工作站上安装了
oc命令行工具。 -
以具有
cluster-admin权限的用户身份登录到可访问 RHOSO 控制平面的工作站。
步骤
从您的工作站访问 OpenStackClient pod 的远程 shell:
$ oc rsh -n openstack openstackclient验证至少有两个计算节点和至少一个实例。
$ openstack server list --long输出示例
在本例中,一个实例在
compute1上运行,一个实例在compute2上运行。compute1节点计划进行维护,因此我们希望使用带有主机维护策略的 Optimize 服务,将实例从compute1迁移到compute2,而无需用户中断:+--------+-------------------------------+ | Name | Host | +--------+-------------------------------+ | test02 | compute2.ctlplane.localdomain | | test01 | compute1.ctlplane.localdomain | +--------+-------------------------------+创建使用 strategy、
host_maintenance和目标cluster_maintaining的审计模板。Example
在本例中,审计模板名为
HostMaintenance:$ openstack optimize audittemplate create -s host_maintenance \ HostMaintenance cluster_maintaining输出示例
+-------------+--------------------------------------+ | Field | Value | +-------------+--------------------------------------+ | UUID | 96c46352-352d-43eb-97ef-4bf3235d9574 | | Created At | 2025-07-04T14:52:19.919765+00:00 | | Updated At | None | | Deleted At | None | | Description | None | | Name | HostMaintenance | | Goal | cluster_maintaining | | Strategy | host_maintenance | | Audit Scope | [] | +-------------+--------------------------------------+确认已创建了 audit 模板:
$ openstack optimize audittemplate list输出示例
+----------------------+------------------+ | Goal | Strategy | +----------------------+------------------+ | cluster_maintaining | host_maintenance | +----------------------+------------------+运行基于策略、
host_maintenance和目标cluster_maintaining的审计,它使用审计模板。使用适合您环境的值更新策略参数。Example
本例中使用
HostMaintenanceaudit 模板,同时为维护计划提供compute1主机:$ openstack optimize audit create -a HostMaintenance \ -p maintenance_node=compute1.ctlplane.localdomain有关此策略使用的参数的更多信息,请参阅 主机维护策略。
输出示例
+---------------+-------------------------------------------------------+ | Field | Value | +---------------+-------------------------------------------------------+ | UUID | 8cfb4abe-3720-4af2-a8a9-fba8fff1f442 | | Name | host_maintenance-2025-07-04T14:54:58.410413 | | Created At | 2025-07-04T14:54:58.419668+00:00 | | Updated At | None | | Deleted At | None | | State | PENDING | | Audit Type | ONESHOT | | Parameters | {'maintenance_node': 'compute1.ctlplane.localdomain'} | | Interval | None | | Goal | cluster_maintaining | | Strategy | host_maintenance | | Audit Scope | [] | | Auto Trigger | False | | Next Run Time | None | | Hostname | None | | Start Time | None | | End Time | None | | Force | False | +---------------+-------------------------------------------------------+确认 Optimize 服务创建了审计:
$ openstack optimize audit list输出示例
如果
State的值为SUCCEEDED,则审计运行并创建了操作计划:+--------------------------------------+-----------+------------------+ | UUID | State | Strategy | +--------------------------------------+-----------+------------------+ | 8cfb4abe-3720-4af2-a8a9-fba8fff1f442 | SUCCEEDED | host_maintenance | +--------------------------------------+-----------+------------------+检查操作计划。
Example
$ openstack optimize actionplan list \ --audit 8cfb4abe-3720-4af2-a8a9-fba8fff1f442输出示例
+--------------------------------------+-------------+-----------------+ | UUID | State | Global efficacy | +--------------------------------------+-------------+-----------------+ | 40017617-7698-4ce7-b5ce-2917ec522a08 | RECOMMENDED | | +--------------------------------------+-------------+-----------------+列出操作计划中包含的操作。
Example
$ openstack optimize action list \ --action-plan 40017617-7698-4ce7-b5ce-2917ec522a08输出示例
在本例中,操作计划包含两个操作:
+--------------------------------------+---------+---------------------------+ | UUID | State | Action | +--------------------------------------+---------+---------------------------+ | 19afe53e-4cf4-4b67-b910-92bca5f40186 | PENDING | change_nova_service_state | | 6e3154ac-279a-4b26-b993-9a6eea70309b | PENDING | migrate | +--------------------------------------+---------+---------------------------+您可以查看更多有关操作的详细信息。
Example
$ openstack optimize action show \ 6e3154ac-279a-4b26-b993-9a6eea70309b输出示例
在本例中,操作计划会将当前在
compute1节点上运行的实例迁移到compute2节点:+-------------+--------------------------------------------------------+ | Field | Value | +-------------+--------------------------------------------------------+ | UUID | 6e3154ac-279a-4b26-b993-9a6eea70309b | | Created At | 2025-07-04T14:54:58+00:00 | | Updated At | None | | Deleted At | None | | Parents | ['19afe53e-4cf4-4b67-b910-92bca5f40186'] | | State | PENDING | | Action Plan | 40017617-7698-4ce7-b5ce-2917ec522a08 | | Action | migrate | | Parameters | {'migration_type': 'live', 'source_node': | | | '87254b5a-257b-48ea-aee0-0d4189d84fc7', | | | 'resource_name': 'test01', 'resource_id': | | | '19bb7593-1b6d-43aa-a0a1-f88921fb4b42'} | | Description | Moving a VM instance from source_node to | | | destination_node | +-------------+--------------------------------------------------------+Example
$ openstack optimize action show \ 19afe53e-4cf4-4b67-b910-92bca5f40186输出示例
在本例中,操作计划会将
compute1节点状态更改为disabled。+-------------+--------------------------------------------------------+ | Field | Value | +-------------+--------------------------------------------------------+ | UUID | 19afe53e-4cf4-4b67-b910-92bca5f40186 | | Created At | 2025-07-04T14:54:58+00:00 | | Updated At | None | | Deleted At | None | | Parents | [] | | State | PENDING | | Action Plan | 40017617-7698-4ce7-b5ce-2917ec522a08 | | Action | change_nova_service_state | | Parameters | {'state': 'disabled', 'disabled_reason': | | | 'watcher_maintaining', 'resource_name': | | | 'compute1.ctlplane.localdomain', 'resource_id': | | | '87254b5a-257b-48ea-aee0-0d4189d84fc7'} | | Description | Disables or enables the nova-compute service.A | | | disabled nova-compute service can not be selected by | | | the nova for future deployment of new server. | +-------------+--------------------------------------------------------+执行操作计划。
Example
$ openstack optimize actionplan start \ 40017617-7698-4ce7-b5ce-2917ec522a08输出示例
+---------------------+--------------------------------------+ | Field | Value | +---------------------+--------------------------------------+ | UUID | 40017617-7698-4ce7-b5ce-2917ec522a08 | | Created At | 2025-07-04T14:54:58+00:00 | | Updated At | 2025-07-04T15:04:47+00:00 | | Deleted At | None | | Audit | 8cfb4abe-3720-4af2-a8a9-fba8fff1f442 | | Strategy | host_maintenance | | State | PENDING | | Efficacy indicators | [] | | Global efficacy | [] | | Hostname | None | +---------------------+--------------------------------------+确认操作是否成功。
Example
$ openstack optimize action list \ --action-plan 40017617-7698-4ce7-b5ce-2917ec522a08有关此策略使用的参数的更多信息,请参阅 主机维护策略。
输出示例
在本例中,实例从
compute1节点迁移,compute1的状态被设置为 disabled :+--------------------------------------+-----------+---------------------------+ | UUID | State | Action | +--------------------------------------+-----------+---------------------------+ | 19afe53e-4cf4-4b67-b910-92bca5f40186 | SUCCEEDED | change_nova_service_state | | 6e3154ac-279a-4b26-b993-9a6eea70309b | SUCCEEDED | migrate | +--------------------------------------+-----------+---------------------------+确认在维护节点上运行的所有实例都已迁移:
$ openstack server list --long输出示例
在本例中,在
compute1节点上运行的实例,test01现在在compute2节点上运行:+--------+-------------------------------+ | Name | Host | +--------+-------------------------------+ | test02 | compute2.ctlplane.localdomain | | test01 | compute2.ctlplane.localdomain | +--------+-------------------------------+确认维护节点已被禁用。
$ openstack compute service list输出示例
在本例中,
compute1节点的Status为disabled:+-------------------------------+----------+ | Host | Status | +-------------------------------+----------+ | nova-cell0-conductor-0 | enabled | | nova-scheduler-0 | enabled | | nova-cell1-conductor-0 | enabled | | compute2.ctlplane.localdomain | enabled | | compute1.ctlplane.localdomain | disabled | +-------------------------------+----------+退出
openstackclientpod:$ exit