在多個區域中還原

本頁說明如何在多個區域中復原還原 Cassandra。

在多區域部署作業中,Apigee hybrid 會在不同資料中心的多個地理位置部署。如果有一或多個區域發生錯誤,但仍有正常運作的區域,您可以使用正常運作的區域,復原發生錯誤的 Cassandra 區域,並取得最新資料。

如果所有混合雲區域都發生重大故障,Cassandra 可以還原。請注意,如果部署中有多個 Apigee 機構,還原程序會還原所有機構的資料。在多機構設定中,不支援只還原特定機構。

本主題說明如何救援失敗的區域:

  • 復原失敗的區域:說明如何根據正常運作的區域,復原失敗的區域。
  • 還原失敗的區域:說明從備份還原失敗的區域的步驟。只有在所有混合區域都受到影響時,才需要採用這種方法。

復原失敗的區域

如要從正常運作的區域復原失敗的區域,請執行下列步驟:

  1. 將 API 流量從受影響的區域重新導向至正常運作的區域。並據此規劃容量,以支援從故障區域轉移的流量。
  2. 停用受影響的區域。針對每個受影響的區域,請按照「停用混合型區域」一節所述的步驟操作。請等待停用作業完成,再繼續進行下一個步驟。

  3. 還原受影響的區域。如要還原,請按照「GKE、GKE On-Prem 和 AKS 的多區域部署」一文所述建立新區域。

從備份還原

Cassandra 備份可以儲存在 Cloud Storage 中,也可以儲存在遠端伺服器中,這取決於您的設定。如要從備份還原 Cassandra,請執行下列步驟:

  1. 開啟要還原的區域的覆寫檔案。
  2. cassandra:hostNetwork 設為 false
  3. 套用覆寫檔案:
    helm upgrade datastore apigee-datastore/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      -f OVERRIDES_FILE
    
  4. 繼續操作前,請確認 hostNetwork 已設為 false
    kubectl -n APIGEE_NAMESPACE get apigeeds -o=jsonpath='{.items[].spec.components.cassandra.hostNetwork}'
  5. 從要還原的區域中刪除混合型:
    helm delete DATASTORE_RELEASE_NAME \
      --namespace APIGEE_NAMESPACE
    

    其中 DATASTORE_RELEASE_NAME 是您在該區域安裝 Cassandra 的資料儲存庫版本名稱,例如 datastore-region1

  6. 從備份還原所需的區域。詳情請參閱「從備份還原區域」。

  7. KeySpaces 中繼資料中移除已刪除的區域參照,並新增已還原的區域參照。
  8. 使用 nodetool status 選項取得 Cassandra 資料中心名稱。
    kubectl exec -n APIGEE_NAMESPACE -it apigee-cassandra-default-0 -- bash
          nodetool  -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status |grep -i Datacenter

    其中:

  9. 更新 KeySpaces 複製作業。
    1. 建立用戶端容器,並透過 CQL 介面連線至 Cassandra 叢集。
    2. 從 CQL 介面取得使用者鍵值空間清單:
      cqlsh CASSANDRA_SEED_HOST -u APIGEE_DDL_USER -p APIGEE_DDL_PASSWORD
            --ssl -e "select keyspace_name from system_schema.keyspaces;"|grep -v system

      其中:

      • CASSANDRA_SEED_HOST 是 Cassandra 多區域種子主機。對於大多數的多區域安裝作業,請使用第一個區域中主機的 IP 位址。請參閱「為多區域設定 Apigee Hybrid」和 cassandra:externalSeedHost
      • APIGEE_DDL_USERAPIGEE_DDL_PASSWORD 是 Cassandra 資料定義語言 (DDL) 使用者的管理員使用者名稱和密碼。預設值為「ddl_user」和「iloveapis123」。

        請參閱設定屬性參考資料中的 cassandra.auth.ddl.password,以及 Apache Cassandra cqlsh 說明文件中的指令列選項

    3. 針對每個鍵值空間,請透過 CQL 介面執行下列指令,以更新複寫設定:
      ALTER KEYSPACE KEYSPACE_NAME WITH replication = {'class': 'NetworkTopologyStrategy', 'DATACENTER_NAME':3};

      其中:

      • KEYSPACE_NAME 是前一個步驟輸出內容中列出的鍵空間名稱。
      • DATACENTER_NAME 是您在步驟 8 中使用 nodetool status 選項取得的 Cassandra 資料中心名稱。