第 2 章 为 Compute 实例服务部署和配置高可用性


Red Hat OpenStack Services on OpenShift (RHOSO)对于 Compute 实例(Instance HA)服务的高可用性由 infra-operator 管理,默认为 RHOSO 安装。

您必须部署 Instance HA 服务,以自动化监控哪些 Compute 节点失败的过程,如有必要,从失败的 Compute 节点撤离实例。如需更多信息,请参阅 部署实例 HA 服务

警告

您不能使用 Instance HA 服务撤离在 RHOSO 超融合基础架构(HCI)环境中托管存储的 Compute 节点。在 HCI 环境中,您必须标记计算节点的子集,这不托管 Red Hat Ceph Storage 服务。有关更多信息,请参阅 撤离的标记镜像、类别或主机聚合

2.1. 部署 Instance HA 服务

您必须在 OpenShift (RHOSO)上部署 Red Hat OpenStack Services for Compute 实例(Instance HA)服务,以便自动监控失败的 Compute 节点的过程,并在需要时撤离来自故障 Compute 节点的实例。

注意

如果定义了多个云,您可以创建一个单独的 Instance HA 服务 pod 来监控每个云。如需更多信息 ,请参阅配置 Instance HA 服务规格

流程

  1. 创建 YAML Instance HA 服务清单文件,如 Instance-HA-service-0.yaml

  2. 应用 Instance HA 服务清单和 fencingSecret 文件:

    $ oc apply -f fencing-0.yaml
    $ oc apply -f Instance-HA-service-0.yaml
  3. 在继续操作前,验证 Instance HA 服务 pod Message 字段是否显示 Setup complete

    $ oc get instanceha -w
    NAME        STATUS   MESSAGE
    instanceha-0   True     Setup complete
    注意

    唯一的字符串会附加到清单文件中指定的 .metadata.name 中。

  4. 确定部署的 Instance HA 服务 pod 的完全限定名称和状态:

    $ oc get pods |grep instanceha
    instanceha-0-54f865b6dd-w6h4t                                   1/1     Running     0       10h

    在本例中,完全限定名称为 instanceha-0-54f865b6dd-w6h4t

    警告

    每次 Instance HA 服务 pod 重启时都会创建一个新的、唯一的完全限定名称。与之前名称关联的所有日志条目都将被删除。如需更多信息,请参阅对 Instance HA 服务进行故障排除

后续步骤

  • 如果您在创建 Instance HA 服务 pod 规格时没有指定 .spec.instanceHaConfigMap,则 infra-operator 会自动创建一个名为 instanceha-configConfigMap。此 ConfigMap 提供您可以根据需要修改的 Instance HA 服务参数的默认值。如需更多信息,请参阅 Instance HA 服务参数和 编辑 Instance HA 服务参数
  • 您可以完全删除 Instance HA 服务。如需更多信息,请参阅 删除 Instance HA 服务

2.1.1. 配置 Instance HA 服务规格

当您将 Red Hat OpenStack Services 部署到 OpenShift (RHOSO)针对计算实例(Instance HA)服务的高可用性时,您必须创建一个 YAML Instance HA 服务清单文件来定义 Instance HA 服务 pod 的规格 .spec

在本例中,YAML Instance HA 服务清单文件为 Instance-HA-service-0.yaml

$ cat Instance-HA-service-0.yaml
---
apiVersion: instanceha.openstack.org/v1beta1
kind: InstanceHa
metadata:
  name: instanceha-0
spec: 
1

  caBundleSecretName: combined-ca-bundle 
2

  fencingSecret: fencing-0 
3


  #instanceHaConfigMap: 
4


  #networkAttachments: ['internalapi'] 
5

  #instanceHaKdumpPort:

  #openStackCloud: "default" 
6

  #openStackConfigMap:
  #openStackConfigSecret:

  #nodeSelector: 
7
1
在定义 Instance HA 服务 pod 的 spec .spec 时,您必须指定以下值:
2
您必须使用 .spec.caBundleSecretName 指定包含 RHOSO 部署期间使用的 CA 证书 Bundle 的 secret 名称。默认情况下,.spec.caBundleSecretName 设置为 combined-ca-bundle,但如果实施自定义 TLS 证书,则此值可能会改变。如需更多信息,请参阅配置安全服务 中的 为 OpenShift 上的 Red Hat OpenStack 服务添加自定义 TLS 证书
3
您必须使用 .spec.fencingSecret 指定 YAML 文件的名称,该文件配置了可撤离的所有 Compute 节点的隔离代理。在本例中,该文件名为 fencing-0。如需更多信息,请参阅配置 Compute 节点的隔离
注意

定义 Instance HA 服务 pod 规格的所有其他值都是可选的,这为什么本例中被注释掉了。

4
可选:您可以创建并命名包含提供配置的 Instance HA 服务参数的 ConfigMap 的 YAML 文件。在这种情况下,您必须使用 .spec.instanceHaConfigMap 指定此 YAML 文件的名称。如果没有创建此文件,则名为 instanceha-config 的 YAML 文件会在安装 Instance HA 服务时自动创建,从而提供 Instance HA 服务参数的默认值。
5
可选: 如果您将 Instance HA 服务配置为检测 Compute 节点是否捕获内核转储,则:
  • 您必须使用 .spec.networkAttachments 指定从 kdump 服务接收 kdump 通知的网络。
  • 如果不使用 7410 的默认 UDP 端口,则必须使用 .spec.instanceHaKdumpPort 指定从 kdump 服务接收 kdump 通知的 UDP 端口。如需更多信息,请参阅 检测计算节点是否捕获内核转储
6
可选:如果您定义了多个云,您可以创建一个单独的 Instance HA 服务 pod 来监控每个云。在这种情况下,您可以使用以下设置来指定每个云所需的身份验证详情:
  • 您可以使用 .spec.openStackCloud 指定 clouds.yaml 文件中详述的云名称。如果没有指定值,则使用 default
  • 您可以使用 .spec.openStackConfigMap 指定包含 clouds.yaml 文件的 ConfigMap 名称。
  • 您可以使用 .spec.openStackConfigSecret 指定包含 admin 密码的 secret 的名称。
7
可选: 您可以使用 .spec.nodeSelector 指定运行 Instance HA 服务 pod 的 Red Hat OpenShift Container Platform (RHOCP) worker 节点的标签。如需更多信息,请参阅使用 RHOCP 节点 中的节点选择器将 pod 放置到特定的节点上

2.1.2. 配置 Compute 节点的隔离

您必须隔离每个有资格撤离的 Compute 节点。在 fence Secret YAML 文件中配置它们的隔离代理,您可以在 OpenShift (RHOSO)上为 Compute 实例(Instance HA)服务 pod 部署 Red Hat OpenStack Services 时指定。

注意

除非配置了隔离代理,否则您无法撤离 Compute 节点。

支持的隔离代理有:IPMI、Redfish 或 BareMetalHost (BMH),这是 Metal³ 的隔离代理。

以下是名为 fence -0.yaml 的 fencing Secret YAML 文件示例,它提供了三个支持的隔离代理的示例配置。

注意

您必须使用 Compute 服务(nova)主机名来识别每个 Compute 节点,如 compute-0。您可以使用以下命令获取这些主机名 :$ openstack compute service list

$ cat fencing-0.yaml
---
apiVersion: v1
kind: Secret
metadata:
  name: fencing-0
stringData:
  fencing.yaml: |
    FencingConfig:
     compute-0:
        agent: ipmi  
1

        ipaddr: 192.168.111.9
        ipport: 443
        login: admin
        passwd: password
     compute-1:
        agent: redfish  
2

        ipaddr: 192.158.12.3
        ipport: 8000
        tls: 'true'
        login: admin
        passwd: password
        uuid: b7d32e6b-edbc-477d-80bf-4cda77ada8cb
     compute-2:
       agent: bmh  
3

       host: edpm-compute-0
       namespace: openstack-edpm-ipam
       token: $2a$10$yc9Q.eHLiQmCdS0/LzxJ5.V5/lrmx8JxwFbU5X4Hdr1albfDl7wtm
1
您必须提供 IPMI 隔离代理代理: 使用智能平台管理接口(IPMI)的 IP 连接和用户身份验证详情。
2
您必须提供 Redfish 隔离代理代理: redfish,并带有 Redfish 主机接口的 IP 连接和用户身份验证详情。

当 Redfish Host Interface 不使用默认的 443 端口时,您必须指定 ipport 参数。您必须在引号中将 tls 参数的值指定为 'true'uuid 参数对于 标准 服务器是可选的,在这种情况下,Instance HA 服务使用 System.Embedded.1 的默认值来指定 Redfish 节点 UUID。

3
您必须为 Metal³ 代理提供 BareMetalHost (BMH) 隔离代理: bmh,其中包含关联的 BMH 资源的详细信息。

您可以使用这个命令获取 BMH 资源 的主机 和命名空间

$ oc get bmh
NAME            STATE       CONSUMER            ONLINE   ERROR   AGE
edpm-compute-0   provisioned   openstack-edpm-ipam   true           17h
edpm-compute-1   provisioned   openstack-edpm-ipam   true           17h

NAME 列提供 BMH 资源 主机,如 edpm-compute-0CONSUMER 列提供 BMH 资源 命名空间,如 openstack-edpm-ipam。如果您已有打开和关闭 BMH 资源所需的特权的用户,您可以将其身份验证令牌作为 BMH 资源 令牌 提供。如果没有,您必须创建一个专用的 Red Hat OpenShift Container Platform (RHOCP)服务帐户,并提供此身份验证令牌。如需更多信息,请参阅: RHOCP 身份验证和授权

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部