OpenShift Red Hat OpenShift on IBM Cloud 集群上的 Data Foundation 區域災難復原
Virtual Private Cloud 4.17 and later
區域災難復原可確保在某個地理區域無法使用時業務的連續性。 您可以使用 Red Hat 進階叢集管理 (ACM),為 OpenShift 資料基礎 (ODF) 叢集設定區域性災難復原解決方案。
每個步驟都標示了應在哪个叢集上執行。 請參考以下圖例。
| 標籤 | 叢集 |
|---|---|
| Hub cluster | 在樞紐叢集 (即安裝了 ACM 的叢集)上需執行的步驟。 |
| Managed cluster | 在每個受管叢集 (主 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. 建立樞紐叢集
Hub cluster
這是您用來安裝 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.31_openshift --workers 3 --cos-instance COS_CRN --disable-outbound-traffic-protection --cni OVNKubernetes -
請從輸出結果中記下叢集 ID。 你會在後續步驟中用到它。
步驟 2. 為匯流排叢集建立受信任的設定檔
Hub cluster
-
建立受信任的設定檔。
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替換為您的集線器叢集 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 運算子。
-
在樞紐叢集的 OpenShift 網頁控制台中,以 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. 建立受管叢集
Managed cluster
-
在
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.31_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.31_openshift --workers 3 --cos-instance COS_CRN --disable-outbound-traffic-protection --cni OVNKubernetes
步驟 4. 在樞紐叢集中安裝 ACM 附加元件
Hub cluster
使用 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 cluster Managed cluster
將兩個受管叢集都匯入 ACM,以便樞紐叢集能夠管理它們。
-
開啟匯聚叢集的 OpenShift 網頁控制台。
-
從「車隊管理」的角度來看,請點選「匯入叢集」。
-
輸入第一個受管叢集的名稱,如有需要,請選擇叢集集,並在必要時輸入其他標籤。
-
在「匯入模式」中,請選取「手動執行匯入指令」,然後按一下「下一步」。
-
可選擇選取一個自動化範本,然後按一下「下一步」。
-
檢視詳細資訊,然後按一下「產生指令」。 請複製螢幕上顯示的指令。
-
請登入第一個受管叢集,並執行已複製的指令,同時將
kubectl設定為該叢集的值。 -
針對第二個受管叢集,請重複步驟 2 至 7。
-
從 「叢集管理」 的角度來看,請在繼續之前確認兩個受管叢集均已列出,且狀態顯示為「就緒」。
步驟 6. 設定 Submariner 附加元件
Managed cluster
按照步驟安裝和設定 Submariner 附加元件,以建立兩個受管群集之間的連線。 這些步驟使用 ACM 主控台。 如需更詳細的資訊,請參閱《 Red Hat 》文件中的 「使用控制台部署 Submariner」。
- 導覽到 ACM 主控台。 接著點選 「機隊管理」 >「叢集」> 「叢集集」。
- 按一下「建立叢集集」。 按照提示將您的兩個受管群集新增至群集集。
- 按一下選項,將 Submariner 附加元件安裝至群集。
- 選擇受管群集作為安裝附加元件的目標群集。
- 檢視兩個群集的設定時,請變更下列設定,如圖所示,其餘設定保留為預設值。 接著點擊「安裝」。
globalnetEnabled: true (checked) gateways: 2 NATTEnable: false (unchecked) cableDriver: vxlan - 等待 Submariner 附加元件狀態顯示為健康(綠色)。 此過程可能需要長達 20 分鐘。
步驟 7. 安裝和設定 OpenShift Data Foundation
Managed cluster
在 2 個受管群集上安裝和設定 ODF。 確保在主要和次要受管群集上都完成這些步驟。
在執行本節中的任何 oc 指令之前,請確保您的執行環境已設定為您正在配置的受管叢集。 執行 ibmcloud oc cluster config --cluster MANAGED_CLUSTER_NAME_OR_ID --admin 來切換上下文,然後使用 oc config current-context`` 進行驗證。
-
對於每個受管叢集,請從 IBM Cloud 控制台 安裝「OpenShift Data Foundation」附加元件。
- 請前往您叢集的「概覽」頁面,並向下捲動至「附加元件」區段。
- 在「OpenShift Data Foundation」下,按下「安裝」。
- 請勾選「部署 NooBaa 多雲端物件閘道」旁的方塊。
- 再次按一下「安裝」以確認。
- 請等待 ODF 附加元件的狀態從「啟用中」變更為「正常」(綠色勾號)後,再繼續操作。
-
請確認 ODF 已成功安裝。 在輸出中,檢查狀態是否顯示
Ready。「UI Normal」狀態表示該附加元件已部署,但 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. 如需詳細資訊,請參閱 在受管群集上建立 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. 設定區域性災難復原政策
Hub cluster
請在您的樞紐叢集中安裝 ODF 多叢集協調器,並建立災難復原 (DR) 政策,以啟用兩個受管叢集之間的鏡像功能。
-
在樞紐叢集上安裝 ODF 多叢集協調器。
- 若尚未安裝,請在樞紐叢集中安裝 OpenShift GitOps 操作員。 有關安裝步驟,請參閱 第 2 步驟 的末段。 為樞紐叢集 建立受信任的設定檔。
- 在樞紐叢集的 OpenShift 網頁控制台中,以 Core 平台視角為出發點,導航至「生態系統」>「軟體目錄」,並搜尋「ODF 多叢集協調器」。
- 點擊「ODF 多叢集協調器」磁磚。 請務必選擇與前一節中安裝至受管叢集的 ODF 版本相同的版本號。 請保留所有其他預設設定,然後按一下「安裝」。
- 請確保操作員資源已安裝於「
openshift-operators」專案中,並可供所有命名空間使用。 再次點擊「安裝」以確認。
ODF 多叢集協調器還會將「OpenShift」DR Hub 操作員作為依賴項安裝至樞紐叢集上。
-
檢查操作員 pod 是否正在運行,以驗證安裝。 在執行此指令之前,請確保您的 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 分鐘的災難復原 (DR) 政策,並在參數中指定每個受管叢集。 此操作會在兩個受管叢集中建立 NooBaa 物件儲存桶,並啟用 ODF Ceph 區塊池鏡像功能,以進行卷宗複製。
-
在樞紐叢集的 OpenShift 網頁控制台中,從「車隊管理」視角出發,依序導航至「資料服務」>「災難復原」>「政策」>「建立 DRPolicy」。
-
建立包含下列參數的 DR 政策。
- 已連線的叢集:PRIMARY_MANAGED_CLUSTER_NAME、SECONDARY_MANAGED_CLUSTER_NAME
- 複製政策:非同步
- 複製間隔:5m
- 若適用,請在「進階設定」下選取「為還原及克隆的 PersistentVolumeClaims 啟用災難復原支援(僅限 Data Foundation)」。
Red Hat 明確指出,此選項僅應適用於已偵測到的應用程式,以及積極支援克隆/還原 RBD 卷的環境。
-
-
在樞紐叢集中,執行以下指令以確認災難復原 (DR) 政策已建立,並已套用至受管叢集。 在執行這些指令之前,請確保您的 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 -
請在每個受管理的叢集中,確認災難復原 (DR) 政策已套用,且處於正常狀態。 在執行這些指令之前,請將您的 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 政策指定給此應用程式。
-
驗證應用程式 Pod 是否在主要群集上執行。
-
在應用程式頁面上,移至動作 > 故障移轉應用程式。 選擇您的次要 ODF 群集為目標群集。 按一下啟動。
-
確認應用程式 Pod 已移至次要群集。
-
在應用程式頁面上,移至行動 > 重新定位應用程式。 選擇您的主要 ODF 群集為目標群集。 按一下啟動。
-
確認應用程式 Pod 已移回主要群集。
升級您的 ODF 區域災難復原環境
有關何時以及如何升級 ODF-RDR 環境中各組件的資訊,請參閱《 升級您的 ODF 區域災難復原環境 》。
疑難排解
若您在 ODF 區域災難復原設定方面遇到問題,請參閱 《驗證您的 OpenShift 資料基礎架構區域災難復原設定》,以檢查設定中各組件的運作狀態。
支援的應用程式與工作負載
完成設定後,請檢視可套用「區域性災難復原」的應用程式類型和工作負載。
- 訂閱型式
- 應用程式從外部來源部署,例如 GitHub, a Helm repo,或 Object Storage。
- 如需詳細資訊,請參閱 Red Hat 文件中的「建立 Subscription-based 應用程式範例」。
- ApplicationSet-based
- 透過 GitOps 運算子(該運算子負責管理持續交付)從 GitHub 儲存庫部署應用程式。 這包括兩個子類型:
-
- GitOps 拉取模式 ( ArgoCD pull): 受管叢集使用 GitOps 操作員從 GitHub 拉取應用程式。
-
- GitOps 推送模式 ( ArgoCD push): GitOps 操作員在部署和更新時,會將應用程式推送至受管理的群集。
- 如需詳細資訊,請參閱 Red Hat 文件中的「建立以應用程式集為基礎的應用程式」。
- 有關 GitOps 子類型的詳細資訊,請參閱 Red Hat 文件中的 使用 Push and Pull 模型部署 Argo CD。
- 發現的應用
- 應用程式預先部署在管理式群集中,但未使用 ACM。 在這種情況下,您可以針對預先安裝的應用程式使用 ACM 發現,並且仍然可以設定 DR 政策。
- 如需詳細資訊,請參閱 Red Hat 文件中 已發現應用程式的災難復原保護。
- 包含 VM 部署的應用程式
- 從 ACM 主控台將基於 VM 的應用程式部署到受管群集。 如前所述,這些 VM 應用程式可以是訂閱制、ApplicationSet-based, 或可被發現的。 針對此類應用程式,可透過 ACM 控制台執行「VM」操作的啟動、停止、暫停及刪除等選項。
- 如需詳細資訊,請參閱 Red Hat 文件中的 Red Hat Advanced Cluster Management for Virtualization。