將機構遷移至其他叢集

本頁說明如何將 Apigee Hybrid 機構從一個 Kubernetes 叢集遷移至另一個叢集。您可能需要將機構遷移至其他叢集的情況包括:

  • 現有叢集所在的資料中心容量不足,或即將停用。
  • 叢集執行的是舊版基礎架構或舊版 Kubernetes,您想遷移至採用新版基礎架構的叢集。
  • 您想將機構從多機構叢集移至個別叢集。

請注意,將機構遷移至其他混合式叢集時,可能會遇到風險和限制。 執行遷移作業前,請先詳閱「限制」一節。

限制

將混合式機構遷移至其他 Kubernetes 叢集時,有下列限制:

  • 將機構資料移至新的 Kubernetes 叢集時,可能會遺失資料。 遷移機構前,請先按照混合備份說明,備份 Kubernetes 叢集中所有機構的資料。
  • 機構遷移支援的資料大小上限為 5 GB,適用於機構的所有鍵空間,但快取和配額除外。
  • 快取資料不會遷移。Hybrid 會重建快取資料。
  • 配額資料不會遷移。Hybrid 會重設配額資料。
  • 您只能將機構遷移至不含現有混合式部署的 Kubernetes 叢集。系統不支援遷移至現有混合式部署的叢集。
  • 要遷移的機構只能移至單一區域部署的新叢集。 單一區域部署作業完成並開始運作後,您可以按照多區域部署一文所述的區域擴展程序,擴展至其他區域。
  • Cassandra 叢集在所有區域都應正常運作。

遷移機構

請按照下列操作說明,將混合式機構從一個 Kubernetes 叢集遷移至另一個叢集:

  1. 如果尚未啟用,請在包含要遷移混合式機構的 Kubernetes 叢集上啟用備份功能。如需混合備份的相關資訊,請參閱「Cassandra 備份總覽」。
  2. 使用下列指令啟動混合備份工作:
    kubectl create job -n apigee --from=cronjob/apigee-cassandra-backup <backup job name>

    <backup job name> 可以是任何有效的容器名稱。

  3. 備份作業完成後,請按照「監控備份作業」一節中的操作說明,確認備份作業已順利完成:
    • 「檢查備份工作的狀態」
    • 「檢查備份記錄」
  4. 確認備份成功後,請記下備份記錄結尾的 ID 號碼。 舉例來說,備份成功的記錄應包含類似下列的行:
    INFO: completed upload for 20230207004250
    記下該行結尾的多位數。稍後會需要用到這個號碼。
  5. 將 Kubernetes 內容切換至目的地 Kubernetes 叢集:
    kubectl config use-context <destination cluster name> # <destination cluster name>

    其中 <destination cluster name> 是目標 Kubernetes 叢集的名稱。

  6. 按照「 在單一地區還原」一節的說明,將備份資料還原至目標 Kubernetes 叢集。
    • 針對要遷移至目的地混合式部署的機構,使用 overrides.yaml 檔案。
    • 請記得將 restore:snapshotTimestamp 值設為備份記錄在步驟 4 中顯示的多位數號碼。請參閱「 在單一區域還原」。
  7. 還原完成後,請從目標 Kubernetes 叢集中刪除所有機構資料,但要遷移的機構資料除外。混合備份檔案包含所有機構的資料,包括您可能不想遷移的機構。還原目的地混合式部署作業後,請按照下列步驟,移除複製到部署作業中的任何額外機構資料:
    1. 確認目前的環境是目標 Kubernetes 叢集的正確環境:
      kubectl config current-context
    2. 執行進入 apigee-cassandra-default-0 Pod 的指令:
      kubectl exec -it -n apigee apigee-cassandra-default-0 -- /bin/bash
    3. 執行下列指令:
      find /opt/apigee/data/apigee-cassandra/ -iname '*_hybrid' -not -iname '*<migrated org name>*' -type d -maxdepth 2 -printf "%f\n"

      如要瞭解如何找出 <migrated org name>,請參閱「取得已遷移機構的名稱」。

      複製輸出內容中顯示的所有名稱清單。您會在步驟 7.f 中需要這份清單。

    4. 結束 apigee-cassandra-default-0 pod。
    5. 按照「 建立用於偵錯的用戶端容器」一文中的操作說明,建立 Cassandra 偵錯用戶端 Pod。收到 cqlsh 提示後,請繼續執行下一個步驟。
    6. cqlsh 提示字元中執行下列指令:
      • desc keyspaces;

        確認這項指令未傳回任何錯誤。

      • 針對步驟 7. c. 中建立的清單中的每個名稱,執行下列指令:
        drop keyspace <name>
    7. 結束 Cassandra 偵錯用戶端 Pod。
    8. 執行 cqlsh 指令後,在目標 Kubernetes 叢集中的所有 Cassandra Pod 上執行下列指令:
      • kubectl exec -it -n apigee  -- /bin/bash
      • find /opt/apigee/data/apigee-cassandra/ -iname '*_hybrid' -not -iname '*<migrated org name>*' -type d -maxdepth 2

        如需尋找 <migrated org name> 的操作說明,請參閱「取得已遷移機構的名稱」。

      • find /opt/apigee/data/apigee-cassandra/ -iname '*_hybrid' -not -iname '**' -type d -maxdepth 2 -exec rm -rf {} +
    9. 結束 Cassandra Pod。
  8. 將 Kubernetes 內容切換至來源 Kubernetes 叢集:
    kubectl config use-context <source cluster name>

    其中 <source cluster name> 是來源 Kubernetes 叢集的名稱。

  9. 從來源 Kubernetes 叢集刪除已遷移的機構。請務必在刪除指令中使用機構的 overrides.yaml 檔案:
    1. 確認目前的內容是來源 Kubernetes 叢集的正確內容:
      kubectl config current-context
    2. apigeectl delete --settings virtualhost -f <overrides.yaml>
    3. apigeectl delete --all-envs -f <overrides.yaml>
    4. apigeectl delete -f <overrides.yaml> --org
    5. 執行 apigee-cassandra-default-0 Pod:
      kubectl exec -it -n apigee apigee-cassandra-default-0 -- /bin/bash
    6. 執行下列指令:
      find /opt/apigee/data/apigee-cassandra/ -iname '*<migrated org name>_hybrid' -type d -maxdepth 2 -printf "%f\n"

      如要瞭解如何找出 <migrated org name>,請參閱「取得已遷移機構的名稱」。

      複製輸出內容中顯示的所有名稱清單。您會在步驟 9.j 中需要這份清單。

    7. 結束 apigee-cassandra-default-0 pod。
    8. 按照「 建立用於偵錯的用戶端容器」一文中的操作說明,建立 Cassandra 偵錯用戶端 Pod。收到 cqlsh 提示後,請繼續下一個步驟。
    9. cqlsh 提示中執行下列指令:
      desc keyspaces;

      確認這項指令未傳回任何錯誤。

    10. 針對步驟 10. f. 中建立的清單中的每個名稱,執行下列指令:
      drop keyspace <name>;
    11. 結束 Cassandra 偵錯用戶端 Pod。
    12. 執行 cqlsh 指令後,在來源 Kubernetes 叢集中的所有 Cassandra Pod 上執行下列指令:
      • kubectl exec -it -n apigee <cassandra pod name> -- /bin/bash
      • find /opt/apigee/data/apigee-cassandra/ -iname '*<migrated org name>_hybrid' -type d -maxdepth 2

        如需尋找 <migrated org name> 的操作說明,請參閱「取得已遷移機構的名稱」。

      • find /opt/apigee/data/apigee-cassandra/ -iname '*<migrated org name>_hybrid' -type d -maxdepth 2 -exec rm -rf {} +
    13. 結束 Cassandra Pod。

取得已遷移機構的名稱

上一節所述程序中的幾個步驟需要遷移機構的名稱。如要取得遷移後的機構名稱,請按照下列步驟操作:

  1. 從機構的 overrides.yaml 檔案取得機構名稱。請務必檢查要遷移的機構專用的 overrides.yaml 檔案。
  2. 如果機構名稱包含任何破折號「-」,請將所有破折號「-」替換為底線「_」。