OpenShift Red Hat OpenShift on IBM Cloud 集群上的区域灾难恢复数据基础
虚拟私有云 4.17 及更高版本
区域灾难恢复功能可在某个地区无法使用时确保业务连续性。 您可以使用 Red Hat 高级集群管理(ACM)为 OpenShift 数据基础(ODF)集群配置区域灾难恢复解决方案。
每个步骤都标有标签,以指示应在哪个集群上运行该步骤。 请参考以下图例。
| 标记 | 集群 |
|---|---|
| 集线器集群 | 在中心集群 (即安装了 ACM 的集群)上需要完成的步骤。 |
| 托管集群 | 在每个受管集群 (主 ODF 集群和备用 ODF 集群)上需要完成的步骤。 |
以下是该解决方案的详细步骤:
- 创建中心集群。
- 为集线器集群创建一个受信任的配置文件。
- 创建托管集群。
- 在集线器集群上安装 ACM 附加组件。
- 将托管集群导入 ACM。
- 在受管集群上安装 Submariner,以建立集群之间的连接。
- 在受管集群上安装 ODF。
- 配置区域灾难恢复策略。
通过这种设置,您安装 ACM 的集线器群集将管理 ODF 群集。 如果主 ODF 集群无法使用,中心集群会将主 ODF 集群中的应用程序和数据迁移到备用 ODF 集群。
ODF 区域灾难恢复支持基于订阅的、由 ApplicationSet-based, 发现的以及基于 VM 的应用程序。 有关详细信息,请参阅本页底部的“支持的应用程序和工作负载”。
准备工作
在创建集群之前,请收集需要填入集群创建命令中的VPC和 Cloud Object Storage 详细信息。
-
获取您的 VPC ID。 请记下每个集群要使用的 VPC 的 ID。
ibmcloud is vpcs -
检索特定 VPC 的子网详细信息。 请记下您希望为每个集群使用的子网 ID。
ibmcloud is subnets --vpc VPC_ID -
列出您的 Cloud Object Storage 实例。
ibmcloud resource service-instances --service-name cloud-object-storage -
获取您要使用的实例的 CRN。 请记下“
ID”字段中的数值。ibmcloud resource service-instance SERVICE_INSTANCE
步骤 1. 创建中心集群
集线器集群
这是您用于安装 ACM 以管理主 ODF 集群和辅助 ODF 集群的集群。 请确保您的集线器集群至少拥有 16 vCPU x 64 GB 的可用计算能力。
对于每个群集,确保通过在 CLI 中加入 --disable-outbound-traffic-protection 参数或在用户界面中选择禁用出站流量保护选项来允许出站流量。
-
在
us-east中 创建一个 VPC 集群 来安装 ACM。 这是中心集群,您可以用它来管理 ODF 集群。 请确保您的集线器集群至少包含 3 个运行 RHCOS 的工作节点,可用计算容量至少为 16 个 vCPU 和 64 GB,已禁用出站流量,并满足所有 ACM的先决条件 中的要求。 以下示例命令在us-east中为 ACM 创建一个群集。ibmcloud ks cluster create vpc-gen2 --flavor bx2.16x64 --name acm-hub-cluster-dr-odf --subnet-id SUBNET_ID --vpc-id VPC_ID --zone us-east-2 --version 4.21.27_openshift --workers 3 --cos-instance COS_CRN --disable-outbound-traffic-protection --cni OVNKubernetes -
请从输出中记下集群 ID。 在后续步骤中你会用到它。
步骤 2. 为集线器集群创建受信任的配置文件
集线器集群
-
创建受信任的配置文件。
ibmcloud iam trusted-profile-create acm-operator-profile -
创建计算资源信任规则,其作用域限定在 Red Hat OpenShift 计算资源上的
kube-system命名空间内。ibmcloud iam trusted-profile-rule-create acm-operator-profile \ --name kube-system-rule \ --type Profile-CR \ --conditions claim:namespace,operator:EQUALS,value:kube-system \ --cr-type ROKS_SA -
将 IAM 访问策略分配给该配置文件。 请将
CLUSTER_ID替换为您的 Hub 集群 ID。ibmcloud iam trusted-profile-policy-create acm-operator-profile \ --roles Reader,Viewer,Operator,Editor \ --service-name containers-kubernetes \ --service-instance CLUSTER_ID -
将受信任的配置文件分配给集线器集群。 将受信任的配置文件分配给集群后,便无法将其移除。
ibmcloud oc experimental trusted-profile set --cluster CLUSTER_NAME_OR_ID --trusted-profile TRUSTED_PROFILE_ID -
请确认已在集群中创建了受信任配置文件的密钥。 该命令的执行可能需要长达10分钟。 请等待密钥出现后再继续安装 ACM 插件。 如果在密钥创建之前继续操作,ACM 插件的安装将会失败。
oc get secrets -n kube-system | grep ibm-cloud-credentials -
如果您使用的是 ODF 4.21 或更高版本,请在集线器集群上安装 OpenShift GitOps 操作员。
-
在 Hub 集群的 OpenShift Web 控制台的 Core 平台视图中,导航至“生态系统”>“软件目录”,然后搜索 Red Hat OpenShift GitOps。
-
点击该 Red Hat OpenShift GitOps 图块。
-
在 “安装操作员”页面上,选择一个更新通道和一个要安装的 GitOps 版本。
-
选择一个已安装的命名空间。 默认的安装命名空间为
openshift-gitops-operator。对于 GitOps 的 1.10 及更高版本,默认命名空间已从
openshift-operators更改为openshift-gitops-operator。 -
选中 “在此命名空间上启用操作员推荐的集群监控”复选框,以启用集群监控。
-
单击安装。 Red Hat OpenShift GitOps 已安装在集群的所有命名空间中。
-
请确认“Red Hat OpenShift”GitOps 操作员是否列在 “操作员 > 已安装的操作员”中,且 “状态” 显示为 “成功”。
安装完成后,OpenShift GitOps 会在
openshift-gitops命名空间中自动配置一个可立即使用的 Argo CD 实例,并且控制台工具栏中会显示一个 Argo CD 图标。 -
步骤 3. 创建托管集群
托管集群
-
在
us-east中 创建一个VPC集群,该集群应包含至少3个运行RHCOS的工作节点,可用计算容量至少为16个 vCPU 和64 GB,且出站流量保护功能已禁用。 这将是主要受管 ODF 群集。 以下示例命令用于在us-east中创建一个集群。ibmcloud ks cluster create vpc-gen2 --flavor bx2.16x64 --name managed-cluster-1-dr-odf --subnet-id SUBNET_ID --vpc-id VPC_ID --zone us-east-2 --version 4.21.27_openshift --workers 3 --cos-instance COS_CRN --disable-outbound-traffic-protection --cni OVNKubernetes -
在
jp-tok中 创建一个VPC集群,该集群应包含至少3个运行RHCOS的工作节点,可用计算容量至少为16个 vCPU 和64 GB,且出站流量保护功能已禁用。 这将是二级受管 ODF 群集。 为实现高可用性,请确保辅助群集的网络不与主群集的网络重叠。 以下示例命令用于在jp-tok中创建一个集群。ibmcloud ks cluster create vpc-gen2 --flavor bx2.16x64 --name managed-cluster-2-dr-odf --subnet-id SUBNET_ID --vpc-id VPC_ID --zone jp-tok --version 4.21.27_openshift --workers 3 --cos-instance COS_CRN --disable-outbound-traffic-protection --cni OVNKubernetes
步骤 4. 在集线器集群上安装 ACM 附加组件
集线器集群
使用 CLI 在集线器集群上安装 ACM 附加组件。
-
查找 ACM 插件的默认版本。
ibmcloud oc cluster addon versions -
查看 ACM 的附加选项。 在该命令中,请指定上一步中找到的默认版本。 请记录下安装该插件时希望包含的任何选项。
ibmcloud oc cluster addon options --addon acm --version DEFAULT_VERSION -
运行该命令以启用该插件。 请务必指定
billingPlan和isLicenseAccepted这两个参数。ibmcloud oc cluster addon enable acm --cluster HUB_CLUSTER_ID --param 'billingPlan=PLAN' --param 'isLicenseAccepted=BOOLEAN'命令参数。 请参阅下面的示例命令,了解每种参数类型的示例。
--cluster- 必需。 要安装 ACM 附加组件的集线器集群的 ID。
--param 'billingPlan='- 必需。 您要为 ACM 选择的计费方案。 请为“ACM 用于 Kubernetes”套餐指定
KUBERNETES。 --param 'isLicenseAccepted='- 必需。 将此选项设置为“
true”,即表示接受所选计费方案的许可协议。 除非接受许可协议,否则该插件无法成功安装。 接受本许可即表示您同意相关条款和条件,并确认您已了解所选套餐中包含的服务内容。
以下是使用 “Kubernetes”计费方案安装 ACM 附加组件的示例命令。
ibmcloud oc cluster addon enable acm --cluster a5bcde982dfer2nwxq73 --param 'billingPlan=KUBERNETES' --param 'isLicenseAccepted=true' -
请确认该附加组件已安装。 该附加组件可能需要几分钟时间才会出现在以下输出中。
- 在集线器集群上,请检查
acmhub资源是否已创建。
oc get acmhub ``` 示例输出。 ```sh {: screen} NAME AGE acm-auto 1h ``` 1. 在集线器集群上,检查 `acmhub` 的状态。 ```sh {: pre} oc describe acmhub ``` 示例输出。 ```sh {: screen} Status Message: ACM installed successfully ``` - 在集线器集群上,请检查
步骤 5. 将托管集群导入 ACM
Hub 集群 托管集群
将这两个托管集群导入 ACM,以便中心集群能够对其进行管理。
-
打开该集线器集群的 OpenShift Web 控制台。
-
在 “车队管理”视图下,点击“导入集群”。
-
输入第一个受管集群的名称,如有必要,请选择一个集群集,并输入其他标签 (如有)。
-
在 “导入”模式下,选择“手动运行导入命令”,然后单击“下一步”。
-
可选:选择一个自动化模板,然后单击 “下一步”。
-
查看详细信息,然后点击“生成命令”。 复制显示的命令。
-
登录到第一个托管集群,并运行已复制的命令,同时将
kubectl配置为该集群的值。 -
对第二个托管集群重复步骤 2–7。
-
从 “集群管理” 的角度来看,在继续操作之前,请确认两个受管集群均已列出且状态显示为 “就绪”。
步骤 6. 配置潜航者插件
托管集群
按照步骤安装和配置 Submariner 附加组件,它可以在两个受管群集之间建立连接。 这些步骤使用 ACM 控制台。 如需了解更多详细信息,请参阅《 Red Hat 》文档中的 “使用控制台部署 Submariner”一节。
- 导航至 ACM 控制台。 然后点击 “车队管理” > “集群” > “集群集”。
- 单击 “创建集群集”。 按照提示将两个托管群集添加到群集集。
- 单击将 Submariner 附加组件安装到群集的选项。
- 选择受管群集作为安装附加组件的目标群集。
- 在检查两个集群的配置时,请按以下所示更改以下设置,其余设置保持默认。 然后点击 “安装”。
globalnetEnabled: true (checked) gateways: 2 NATTEnable: false (unchecked) cableDriver: vxlan - 等待Submariner附加状态显示为健康(绿色)。 这可能需要长达20分钟。
步骤 7. 安装和配置 OpenShift Data Foundation
托管集群
在 2 个托管群集上安装和配置 ODF。 确保在主托管群集和辅助托管群集上都完成这些步骤。
在本节中执行任何 oc 命令之前,请确保您的上下文已设置为正在配置的托管集群。 运行 ibmcloud oc cluster config --cluster MANAGED_CLUSTER_NAME_OR_ID --admin 以切换上下文,然后使用 oc config current-context 进行验证。
-
对于每个受管集群,请通过 IBM Cloud 控制台安装“OpenShift Data Foundation”附加组件。
- 转到您集群的 “概览” 页面,然后向下滚动至 “附加组件”部分。
- 在 “OpenShift 数据基础”下,单击“安装”。
- 勾选“部署 NooBaa 多云对象网关”复选框。
- 再次单击 “安装”以确认。
- 请等待 ODF 插件状态从 “启用中”变为 “正常” (绿色勾号)后再继续操作。
-
请确认 ODF 已成功安装。 在输出中,检查状态是否显示为
Ready。“UI 正常”状态表明该附加组件已部署,但 ODF 操作员可能仍需几分钟才能完成资源的初始化和注册。
oc get storagecluster -n openshift-storage ocs-storagecluster -o jsonpath='{.status.phase}{"\n"}'
必须在每个受管集群上完成以下步骤。 使用 ibmcloud oc cluster config --cluster MANAGED_CLUSTER_NAME_OR_ID --admin`` 将上下文切换到第一个托管集群,完成本节所有步骤直至结束,然后切换到第二个托管集群并重复上述操作。
-
运行该命令,以更新
storageCluster资源中multiClusterService部分的ACM Managed Cluster Name。 这样,ODF 就可以使用 GlobalNet.NET Framework。 有关详细信息,请参阅 在托管群集上创建 OpenShift Data Foundation 群集。将
MANAGED_CLUSTER_NAME替换为当前上下文所指向的集群名称。kubectl patch storagecluster -n openshift-storage ocs-storagecluster --type merge -p'{"spec":{"network":{"multiClusterService":{"clusterID":"MANAGED_CLUSTER_NAME","enabled":true}}}}'示例输出。
storagecluster.ocs.openshift.io/ocs-storagecluster patched -
验证服务输出。 这可能需要几分钟才能在输出中显示出来。
oc get serviceexport -n openshift-storage示例输出:
NAME AGE rook-ceph-mon-d 4d14h rook-ceph-mon-e 4d14h rook-ceph-mon-f 4d14h rook-ceph-osd-0 4d14h rook-ceph-osd-1 4d14h rook-ceph-osd-2 4d14h -
为
ocs-provider-server创建一个服务导出。oc apply -f - <<EOF apiVersion: multicluster.x-k8s.io/v1alpha1 kind: ServiceExport metadata: name: ocs-provider-server namespace: openshift-storage EOF示例输出。
serviceexport.multicluster.x-k8s.io/ocs-provider-server created -
运行命令更新
storageCluster资源,以使用您创建的ocs-provider-server服务导出。oc annotate storagecluster ocs-storagecluster -n openshift-storage ocs.openshift.io/api-server-exported-address=MANAGED_CLUSTER_NAME.ocs-provider-server.openshift-storage.svc.clusterset.local:50051.示例输出。
storagecluster.ocs.openshift.io/ocs-storagecluster annotated -
验证
storageCluster资源是否准备就绪。oc get storagecluster -n openshift-storage示例输出。
NAME PHASE ocs-storagecluster Ready
第 8 步。 配置区域灾难恢复策略
集线器集群
在您的中心集群上安装 ODF 多集群协调器,并创建灾难恢复(DR)策略,以实现两个受管集群之间的镜像同步。
-
在中心集群上安装 ODF 多集群协调器。
- 如果尚未安装,请在集线器集群上安装 OpenShift GitOps 操作员。 有关安装步骤,请参阅 第 2 步的末尾部分。 为集线器集群 创建一个受信任的配置文件。
- 在中心集群的 OpenShift Web 控制台的 Core 平台视图中,导航至 “生态系统” >“软件目录”,然后搜索“ODF 多集群编排器”。
- 单击 “ODF 多集群协调器”磁贴。 请务必选择 相同的版本号 作为上一节中安装到受管集群上的ODF版本。 保留所有其他默认设置,然后单击“安装”。
- 请确保操作员资源已安装在“
openshift-operators”项目中,并且所有命名空间均可访问这些资源。 再次单击 “安装”以确认。
ODF 多集群协调器还会将 OpenShift DR Hub Operator 作为依赖项安装在集线器集群上。
-
通过检查操作员舱是否运行来验证安装。 在运行此命令之前,请确保您的 CLI 上下文已设置为 hub 集群。
oc get pods -n openshift-operators示例输出。
NAME READY STATUS RESTARTS AGE odf-multicluster-console-6845b795b9-blxrn 1/1 Running 0 4d20h odfmo-controller-manager-f9d9dfb59-jbrsd 1/1 Running 0 4d20h ramen-hub-operator-6fb887f885-fss4w 2/2 Running 0 4d20h -
在集线器集群上,创建一个同步间隔为 5 分钟的灾难恢复策略,并在参数中指定每个受管集群。 这将在两个托管集群上创建 NooBaa 对象存储桶,并启用ODF Ceph块池镜像功能以实现卷复制。
-
在枢纽集群的 OpenShift Web控制台的 “车队管理”视图中,导航至 “数据服务” > “灾难恢复” > “策略” > “创建DRPolicy”。
-
创建 DR 策略,其中包括以下参数。
- 已连接的集群:PRIMARY_MANAGED_CLUSTER_NAME、SECONDARY_MANAGED_CLUSTER_NAME
- 复制策略:异步
- 复制间隔:5m
- 如果适用,请在 “高级设置”下选择 “为已还原和克隆的 PersistentVolumeClaims 启用灾难恢复支持”(仅限Data Foundation)。
Red Hat 明确指出,此选项仅应用于已发现的应用程序以及积极支持克隆/还原 RBD 卷的环境中。
-
-
在集线器集群上,运行以下命令,以验证灾难恢复策略是否已创建并应用到受管集群。 在运行这些命令之前,请确保您的 CLI 上下文已设置为 hub 集群。
ibmcloud oc cluster config --cluster HUB_CLUSTER_NAME --adminoc get drpolicy DRPOLICY_NAME -o jsonpath='{.status.conditions[].reason}{"\n"}'示例输出。
Succeededoc get drclusters示例输出。
NAME AGE managed-cluster1 4m42s managed-cluster2 4m42s -
在每个受管集群上,请确认灾难恢复策略已应用且处于正常状态。 在运行这些命令之前,请将 CLI 上下文切换到各个受管集群。
ibmcloud oc cluster config --cluster MANAGED_CLUSTER_NAME --adminoc get csv,pod -n openshift-dr-system示例输出。
NAME DISPLAY VERSION REPLACES PHASE clusterserviceversion.operators.coreos.com/odr-cluster-operator.v4.15.0 Openshift DR Cluster Operator 4.15.0 Succeeded clusterserviceversion.operators.coreos.com/volsync-product.v0.8.0 VolSync 0.8.0 Succeeded NAME READY STATUS RESTARTS AGE pod/ramen-dr-cluster-operator-6467cf5d4c-cc8kz 2/2 Running 0 3d12hoc get cephblockpool ocs-storagecluster-cephblockpool -n openshift-storage -o jsonpath='{.status.mirroringStatus.summary}{"\n"}'示例输出。
{"daemon_health":"OK","health":"OK","image_health":"OK","states":{}} -
可选:查看您可以安装的 操作员,以增强 ODF 区域灾难恢复功能。
-
可选:测试灾难恢复配置。
ODF 地区灾难恢复的可选操作员
查看您可以在 ACM 集线器或托管集群上安装的可选操作员,以增强 ODF 区域灾难恢复功能。 请注意,IBM 不负责管理这些操作员。
您有责任管理这些操作员,包括但不限于更新、监控、恢复和重新安装。
| 运算符 | 描述 | 其他信息 |
|---|---|---|
| OpenShift 数据保护 API ( OADP ) 操作员 |
|
用于数据保护的 OpenShift API 简介 |
测试您的灾难恢复配置
创建一个示例应用程序来测试您的灾难恢复解决方案。 更多信息,请参见 创建测试灾难恢复应用的示例应用程序。
-
从ACM控制台部署基于订阅的应用程序。 当所有应用程序资源成功部署后,应用程序的拓扑选项卡将显示为绿色。
-
在应用程序页面,点击 “操作” >“管理数据政策”。
-
将之前创建的DR策略分配给此应用程序。
-
确认应用程序容器正在主集群上运行。
-
在应用程序页面,点击 “操作” >“故障转移应用程序”。 选择您的辅助ODF集群作为目标集群。 点击“启动”。
-
确认应用程序容器已移动到辅助集群。
-
在应用程序页面,点击 “操作” >“重新定位应用程序”。 选择您的主ODF集群作为目标集群。 点击“启动”。
-
确认应用程序容器已移回主集群。
升级您的 ODF 区域灾难恢复环境
有关何时以及如何升级 ODF-RDR 环境组件的信息,请参阅《 升级您的 ODF 区域灾难恢复环境 》。
故障诊断
如果您在 ODF 区域灾难恢复配置中遇到问题,请参阅 《验证您的 OpenShift 数据基础架构区域灾难恢复配置》,以检查设置中各个组件的状态。
支持的应用程序和工作负载
完成设置后,请查看可应用“区域灾难恢复”功能的应用程序和工作负载类型。
- 订阅式
- 应用程序是从外部来源部署的,如 GitHub, Helm repo 或 Object Storage。
- 有关详细信息,请参阅 Red Hat 文档中的 创建基于订阅的应用程序示例。
- ApplicationSet-based
- 通过 GitOps 操作符从 GitHub 仓库部署应用程序,该操作符负责管理持续交付。 这包括两个亚型:
-
- GitOps 拉动模式 ( ArgoCD pull): 托管群集使用 GitOps 操作符从 GitHub 拉取应用程序。
-
- GitOps 推送模式 ( ArgoCD push): GitOps 操作员在部署和更新过程中将应用程序推送到托管群集。
- 更多信息,请参阅 Red Hat 文档中的 创建基于应用程序集的应用程序。
- 有关 GitOps 子类型的更多信息,请参阅 Red Hat 文档中的 使用推拉模式部署 Argo CD。
- 发现的应用
- 在托管群集中预先部署了一个应用程序,但未使用 ACM。 在这种情况下,您可以对预装的应用程序使用 ACM 发现,并仍然配置 DR 策略。
- 更多信息,请参阅 Red Hat 文档中的“已发现应用程序的灾难恢复保护”。
- 包括 VM 部署的应用
- 从 ACM 控制台将基于 VM 的应用程序部署到托管群集上。 如前所述,这些 VM 应用程序可以是订阅型、ApplicationSet-based, 或可发现的。 对于此类应用程序,可通过 ACM 控制台使用启动、停止、暂停和删除“VM”操作的选项。
- 有关详细信息,请参阅 Red Hat 文档中的 Red Hat Advanced Cluster Management for Virtualization。