第 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 服务规格。
流程
创建 YAML Instance HA 服务清单文件,如
Instance-HA-service-0.yaml:-
定义 Instance HA 服务 pod 的规格
.spec和名称.metadata.name。如需更多信息 ,请参阅配置 Instance HA 服务规格。 -
配置
.spec.fencingSecret以指定 YAML 文件的名称,在其中配置了可撤离的所有 Compute 节点的隔离代理。在本例中,该文件名为fencing-0。如需更多信息,请参阅配置 Compute 节点的隔离。
-
定义 Instance HA 服务 pod 的规格
应用 Instance HA 服务清单和
fencingSecret文件:$ oc apply -f fencing-0.yaml $ oc apply -f Instance-HA-service-0.yaml在继续操作前,验证 Instance HA 服务 pod
Message字段是否显示Setup complete:$ oc get instanceha -w NAME STATUS MESSAGE instanceha-0 True Setup complete注意唯一的字符串会附加到清单文件中指定的
.metadata.name中。确定部署的 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-config的ConfigMap。此 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:
caBundleSecretName: combined-ca-bundle
fencingSecret: fencing-0
#instanceHaConfigMap:
#networkAttachments: ['internalapi']
#instanceHaKdumpPort:
#openStackCloud: "default"
#openStackConfigMap:
#openStackConfigSecret:
#nodeSelector:
- 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 的 YAML 文件示例,它提供了三个支持的隔离代理的示例配置。
fencing Secret
您必须使用 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
ipaddr: 192.168.111.9
ipport: 443
login: admin
passwd: password
compute-1:
agent: redfish
ipaddr: 192.158.12.3
ipport: 8000
tls: 'true'
login: admin
passwd: password
uuid: b7d32e6b-edbc-477d-80bf-4cda77ada8cb
compute-2:
agent: bmh
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 17hNAME列提供 BMH 资源主机,如edpm-compute-0。CONSUMER列提供 BMH 资源命名空间,如openstack-edpm-ipam。如果您已有打开和关闭 BMH 资源所需的特权的用户,您可以将其身份验证令牌作为 BMH 资源令牌提供。如果没有,您必须创建一个专用的 Red Hat OpenShift Container Platform (RHOCP)服务帐户,并提供此身份验证令牌。如需更多信息,请参阅: RHOCP 身份验证和授权。