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 叢集)上需執行的步驟。

以下是此解決方案的高階步驟:

  1. 建立樞紐叢集。
  2. 為匯流排叢集建立一個受信任的設定檔。
  3. 建立受管叢集。
  4. 在樞紐叢集中安裝 ACM 附加元件。
  5. 將受管叢集匯入 ACM。
  6. 在受管叢集中安裝 Submariner,以建立叢集之間的連線。
  7. 在受管叢集上安裝 ODF。
  8. 設定區域災難復原政策。

在此設定下,您安裝 ACM 的集線器群集會管理 ODF 群集。 若您的主要 ODF 叢集無法正常運作,樞紐叢集會將主要 ODF 叢集中的應用程式和資料轉移至次要 ODF 叢集。

ODF 區域災難復原功能支援訂閱制、透過 ApplicationSet-based, 發現,以及基於 VM 的應用程式。 如需完整詳情,請參閱本頁底部的「受支援的應用程式與工作負載」。

開始之前

在建立叢集之前,請先彙整您需要填入叢集建立指令中的 VPC 和 Cloud Object Storage 相關詳細資訊。

  1. 請取得您的 VPC ID。 請記錄每個叢集要使用的 VPC 的 ID。

    ibmcloud is vpcs
    
  2. 擷取特定 VPC 的子網詳細資訊。 請記錄您要為每個叢集使用的子網 ID。

    ibmcloud is subnets --vpc VPC_ID
    
  3. 列出您的 Cloud Object Storage 實例。

    ibmcloud resource service-instances --service-name cloud-object-storage
    
  4. 取得您要使用的執行個體的 CRN。 請記下「ID」欄位的數值。

    ibmcloud resource service-instance SERVICE_INSTANCE
    

步驟 1. 建立樞紐叢集

Hub cluster

這是您用來安裝 ACM 以管理主 ODF 叢集與備用 ODF 叢集的叢集。 請確保您的樞紐叢集至少具備 16 vCPU x 64 GB 的可用運算容量。

對於每個群集,請確保透過在 CLI 中加入 --disable-outbound-traffic-protection 參數,或在使用者介面中選擇停用出站流量保護的選項,允許出站流量。

  1. 在 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
    
  2. 請從輸出結果中記下叢集 ID。 你會在後續步驟中用到它。

步驟 2. 為匯流排叢集建立受信任的設定檔

Hub cluster

  1. 建立受信任的設定檔。

    ibmcloud iam trusted-profile-create acm-operator-profile
    
  2. 建立運算資源信任規則,其作用範圍限於 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
    
  3. 將 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
    
  4. 將受信任的設定檔指派給樞紐叢集。 將受信任的設定檔指派給叢集後,便無法再移除該設定檔。

    ibmcloud oc experimental trusted-profile set --cluster CLUSTER_NAME_OR_ID --trusted-profile TRUSTED_PROFILE_ID
    
  5. 請確認已於叢集中建立受信任的設定檔機密。 此指令的執行時間最長可能需要 10 分鐘。 請等待密鑰出現後,再繼續安裝 ACM 附加元件。 若在建立密鑰之前繼續進行,ACM 附加元件的安裝將會失敗。

    oc get secrets -n kube-system | grep ibm-cloud-credentials
    
  6. 若您使用的是 ODF 4.21 或更新版本,請在樞紐叢集中安裝「OpenShift」GitOps 運算子。

    1. 在樞紐叢集的 OpenShift 網頁控制台中,以 Core 平台視角為準,導航至「生態系統」>「軟體目錄」,並搜尋 Red Hat OpenShift GitOps。

    2. 點擊該 Red Hat OpenShift GitOps 磁磚。

    3. 在「安裝操作員」頁面上,請選擇一個更新通道以及要安裝的「GitOps」版本。

    4. 選擇一個已安裝的命名空間。 預設的安裝命名空間為 openshift-gitops-operator。

      對於 GitOps 的 1.10 及後續版本,預設命名空間已從 openshift-operators 變更為 openshift-gitops-operator。

    5. 選取「在此命名空間上啟用運維人員建議的叢集監控」核取方塊,以啟用叢集監控。

    6. 按一下安裝。 Red Hat OpenShift GitOps 已安裝於叢集的所有命名空間中。

    7. 請確認「Red Hat OpenShift」GitOps 運算子是否列於「運算子 > 已安裝的運算子」中,且「狀態」顯示為「成功」。

    安裝完成後,OpenShift GitOps 會自動在 openshift-gitops 命名空間中設定好一個可立即使用的 Argo CD 實例,且控制台工具列上會顯示一個 Argo CD 圖示。

步驟 3. 建立受管叢集

Managed cluster

  1. 在 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
    
  2. 在 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 附加元件。

  1. 找出 ACM 附加元件的預設版本。

    ibmcloud oc cluster addon versions
    
  2. 檢視 ACM 的附加功能選項。 在指令中,請指定前一步驟中找到的預設版本。 請註明您在安裝此附加元件時希望包含的任何選項。

    ibmcloud oc cluster addon options --addon acm --version DEFAULT_VERSION
    
  3. 執行此指令以啟用此附加元件。 請務必指定 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'
    
  4. 請確認該附加元件已安裝。 該附加元件可能需要幾分鐘才會出現在以下輸出結果中。

    1. 在樞紐叢集中,請確認已建立「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,以便樞紐叢集能夠管理它們。

  1. 開啟匯聚叢集的 OpenShift 網頁控制台。

  2. 從「車隊管理」的角度來看,請點選「匯入叢集」。

  3. 輸入第一個受管叢集的名稱,如有需要,請選擇叢集集,並在必要時輸入其他標籤。

  4. 在「匯入模式」中,請選取「手動執行匯入指令」,然後按一下「下一步」。

  5. 可選擇選取一個自動化範本,然後按一下「下一步」。

  6. 檢視詳細資訊,然後按一下「產生指令」。 請複製螢幕上顯示的指令。

  7. 請登入第一個受管叢集,並執行已複製的指令,同時將 kubectl 設定為該叢集的值。

  8. 針對第二個受管叢集,請重複步驟 2 至 7。

  9. 從 「叢集管理」 的角度來看,請在繼續之前確認兩個受管叢集均已列出,且狀態顯示為「就緒」。

步驟 6. 設定 Submariner 附加元件

Managed cluster

按照步驟安裝和設定 Submariner 附加元件,以建立兩個受管群集之間的連線。 這些步驟使用 ACM 主控台。 如需更詳細的資訊,請參閱《 Red Hat 》文件中的 「使用控制台部署 Submariner」。

  1. 導覽到 ACM 主控台。 接著點選 「機隊管理」 >「叢集」> 「叢集集」。
  2. 按一下「建立叢集集」。 按照提示將您的兩個受管群集新增至群集集。
  3. 按一下選項,將 Submariner 附加元件安裝至群集。
  4. 選擇受管群集作為安裝附加元件的目標群集。
  5. 檢視兩個群集的設定時,請變更下列設定,如圖所示,其餘設定保留為預設值。 接著點擊「安裝」。
    globalnetEnabled: true (checked)
    gateways: 2
    NATTEnable: false (unchecked)
    cableDriver: vxlan
    
  6. 等待 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`` 進行驗證。

  1. 對於每個受管叢集,請從 IBM Cloud 控制台 安裝「OpenShift Data Foundation」附加元件。

    1. 請前往您叢集的「概覽」頁面,並向下捲動至「附加元件」區段。
    2. 在「OpenShift Data Foundation」下,按下「安裝」。
    3. 請勾選「部署 NooBaa 多雲端物件閘道」旁的方塊。
    4. 再次按一下「安裝」以確認。
    5. 請等待 ODF 附加元件的狀態從「啟用中」變更為「正常」(綠色勾號)後,再繼續操作。
  2. 請確認 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`` 將執行環境切換至第一個受管叢集,完成本節所有步驟,然後切換至第二個受管叢集並重複上述操作。

  1. 執行此指令,以更新「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
    
  2. 驗證服務輸出。 這可能需要幾分鐘才能顯示在輸出中。

    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
    
  3. 為 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
    
  4. 執行指令更新 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
    
  5. 確認 storageCluster 資源已就緒。

    oc get storagecluster -n openshift-storage
    

    輸出範例。

    NAME                    PHASE  
    ocs-storagecluster      Ready   
    

步驟 8. 設定區域性災難復原政策

Hub cluster

請在您的樞紐叢集中安裝 ODF 多叢集協調器,並建立災難復原 (DR) 政策,以啟用兩個受管叢集之間的鏡像功能。

  1. 在樞紐叢集上安裝 ODF 多叢集協調器。

    1. 若尚未安裝,請在樞紐叢集中安裝 OpenShift GitOps 操作員。 有關安裝步驟,請參閱 第 2 步驟 的末段。 為樞紐叢集 建立受信任的設定檔。
    2. 在樞紐叢集的 OpenShift 網頁控制台中,以 Core 平台視角為出發點,導航至「生態系統」>「軟體目錄」,並搜尋「ODF 多叢集協調器」。
    3. 點擊「ODF 多叢集協調器」磁磚。 請務必選擇與前一節中安裝至受管叢集的 ODF 版本相同的版本號。 請保留所有其他預設設定,然後按一下「安裝」。
    4. 請確保操作員資源已安裝於「openshift-operators」專案中,並可供所有命名空間使用。 再次點擊「安裝」以確認。

    ODF 多叢集協調器還會將「OpenShift」DR Hub 操作員作為依賴項安裝至樞紐叢集上。

  2. 檢查操作員 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
    
  3. 在樞紐叢集中,建立一項同步間隔為 5 分鐘的災難復原 (DR) 政策,並在參數中指定每個受管叢集。 此操作會在兩個受管叢集中建立 NooBaa 物件儲存桶,並啟用 ODF Ceph 區塊池鏡像功能,以進行卷宗複製。

    1. 在樞紐叢集的 OpenShift 網頁控制台中,從「車隊管理」視角出發,依序導航至「資料服務」>「災難復原」>「政策」>「建立 DRPolicy」。

    2. 建立包含下列參數的 DR 政策。

      • 已連線的叢集:PRIMARY_MANAGED_CLUSTER_NAME、SECONDARY_MANAGED_CLUSTER_NAME
      • 複製政策:非同步
      • 複製間隔:5m
      • 若適用,請在「進階設定」下選取「為還原及克隆的 PersistentVolumeClaims 啟用災難復原支援(僅限 Data Foundation)」。

      Red Hat 明確指出,此選項僅應適用於已偵測到的應用程式,以及積極支援克隆/還原 RBD 卷的環境。

  4. 在樞紐叢集中,執行以下指令以確認災難復原 (DR) 政策已建立,並已套用至受管叢集。 在執行這些指令之前,請確保您的 CLI 環境已設定為 hub 叢集。

    ibmcloud oc cluster config --cluster HUB_CLUSTER_NAME --admin
    
    oc get drpolicy DRPOLICY_NAME -o jsonpath='{.status.conditions[].reason}{"\n"}'
    

    輸出範例。

    Succeeded
    
    oc get drclusters
    

    輸出範例。

    NAME               AGE
    managed-cluster1   4m42s
    managed-cluster2   4m42s
    
  5. 請在每個受管理的叢集中,確認災難復原 (DR) 政策已套用,且處於正常狀態。 在執行這些指令之前,請將您的 CLI 執行環境切換至各受管叢集。

    ibmcloud oc cluster config --cluster MANAGED_CLUSTER_NAME --admin
    
    oc 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          3d12h
    
    oc get cephblockpool ocs-storagecluster-cephblockpool -n openshift-storage -o jsonpath='{.status.mirroringStatus.summary}{"\n"}'
    

    輸出範例。

    {"daemon_health":"OK","health":"OK","image_health":"OK","states":{}}
    
  6. 選購:檢視您可以安裝的 操作員,以增強 ODF 區域災難復原功能。

  7. 選購:測試您的災難復原設定。

ODF 區域災難復原的可選操作員

檢視您可以安裝在 ACM 集線器或受管集群上的選購操作員,以增強 ODF 區域災難復原功能。 請注意,IBM 不負責管理這些操作員。

您有責任管理這些操作員,包括但不限於更新、監控、復原和重新安裝。

ODF 區域災難復原的可選操作員
操作員 說明 其他資訊
OpenShift 資料保護 API ( OADP ) 操作員
  • 用於為 OpenShift 集群建立備份和還原 API。
  • 安裝於受管理的群集。
OpenShift API 資料保護簡介

測試您的災難復原配置

建立範例應用程式以測試您的災難復原解決方案。 如需詳細資訊,請參閱 建立樣本應用程式以測試災難復原應用程式。

  1. 從 ACM 主控台部署基於訂閱的應用程式。 成功部署所有應用程式資源時,應用程式的拓樸索引標籤會顯示綠色。

  2. 在應用程式頁面上,移至行動 > 管理資料原則。

  3. 將之前建立的 DR 政策指定給此應用程式。

  4. 驗證應用程式 Pod 是否在主要群集上執行。

  5. 在應用程式頁面上,移至動作 > 故障移轉應用程式。 選擇您的次要 ODF 群集為目標群集。 按一下啟動。

  6. 確認應用程式 Pod 已移至次要群集。

  7. 在應用程式頁面上,移至行動 > 重新定位應用程式。 選擇您的主要 ODF 群集為目標群集。 按一下啟動。

  8. 確認應用程式 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。