本頁說明如何在多個區域復原或還原 Cassandra。
在多區域部署中,Apigee Hybrid 會部署在不同資料中心的多個地理位置。如果有一或多個區域發生故障,但仍有正常運作的區域,您可以使用正常運作的區域,以最新資料復原發生故障的 Cassandra 區域。
如果所有混合區域都發生災難性故障,可以還原 Cassandra。 請注意,如果部署作業中有多個 Apigee 機構,還原程序會還原所有機構的資料。在多機構設定中,不支援只還原特定機構。
本主題說明這兩種方法,協助您從失敗的區域中復原:
復原失敗的區域
如要從正常運作的區域復原失敗的區域,請按照下列步驟操作:
- 將受影響區域的 API 流量重新導向至運作正常的區域。請相應規劃容量,以支援來自故障區域的轉移流量。
- 停用受影響的區域。針對每個受影響的區域,請按照「停用混合型區域」一文中的步驟操作。請等待停用程序完成,再進行下一個步驟。
- 還原受影響的區域。如要還原,請按照「GKE、GKE On-Prem 和 AKS 的多區域部署」一文所述,建立新區域。
從備份還原
根據設定,Cassandra 備份可以位於 Cloud Storage 或遠端伺服器。 如要從備份還原 Cassandra,請按照下列步驟操作:
- 開啟要還原區域的覆寫檔案。
- 將
cassandra:hostNetwork設為false。 - 套用覆寫檔案:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
- 繼續操作前,請確認
hostNetwork已設為false:kubectl -n APIGEE_NAMESPACE get apigeeds -o=jsonpath='{.items[].spec.components.cassandra.hostNetwork}'
- 從要還原的區域中刪除混合式設定:
helm delete DATASTORE_RELEASE_NAME \ --namespace APIGEE_NAMESPACE
其中 DATASTORE_RELEASE_NAME 是您在該區域安裝 Cassandra 的資料儲存庫發布名稱,例如
datastore-region1。 -
從備份還原所需區域。詳情請參閱「從備份還原區域」。
- 從已刪除的區域中移除無效節點:
- 使用
nodetool status指令,找出已刪除區域中所有狀態為DN的節點:kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status
其中:
- APIGEE_JMX_USER 是 Cassandra JMX 作業的使用者名稱。用於驗證 Cassandra JMX 介面並與其通訊。請參閱
cassandra:auth:jmx:username。 - APIGEE_JMX_PASSWORD 是 Cassandra JMX 作業使用者的密碼。
請參閱
cassandra:auth:jmx:password。
- APIGEE_JMX_USER 是 Cassandra JMX 作業的使用者名稱。用於驗證 Cassandra JMX 介面並與其通訊。請參閱
- 移除已刪除區域中狀態為
DN的每個節點:kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD removenode NODE_HOST_ID
將 NODE_HOST_ID 替換為您在上一個步驟中識別的每個節點的 ID 主機。 例如:
kubectl exec apigee-cassandra-default-0 -n apigee -- nodetool -u my-jmx-id -pw my-jmx-pwd removenode abcdef-f202-438a-8a77-40636317b7c9
- 再次執行
nodetool status指令,確認已刪除區域中狀態為DN的節點。kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status
- 使用
- 移除已刪除區域的參照,並在
KeySpaces中繼資料中新增已還原區域的參照。- 使用
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其中:
- APIGEE_JMX_USER 是 Cassandra JMX 作業的使用者名稱。用於驗證 Cassandra JMX 介面並與其通訊。請參閱
cassandra:auth:jmx:username。 - APIGEE_JMX_PASSWORD 是 Cassandra JMX 作業使用者的密碼。
請參閱
cassandra:auth:jmx:password。
- APIGEE_JMX_USER 是 Cassandra JMX 作業的使用者名稱。用於驗證 Cassandra JMX 介面並與其通訊。請參閱
- 更新
KeySpaces複寫。- 建立用戶端容器,並透過 CQL 介面連線至 Cassandra 叢集。
- 透過 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_USER 和 APIGEE_DDL_PASSWORD 是 Cassandra 資料定義語言 (DDL) 使用者的管理員使用者名稱和密碼。預設值為「
ddl_user」和「iloveapis123」。請參閱 Apache Cassandra cqlsh 說明文件中的「Configuration properties reference」(設定屬性參考資料) 和「Command Line Options」(指令列選項)。
cassandra.auth.ddl.password
- CASSANDRA_SEED_HOST 是 Cassandra 多區域種子主機。對於大多數多區域安裝作業,請使用第一個區域中主機的 IP 位址。請參閱「設定 Apigee Hybrid 多區域」和「
- 針對每個鍵空間,從 CQL 介面執行下列指令,更新複寫設定:
ALTER KEYSPACE KEYSPACE_NAME WITH replication = {'class': 'NetworkTopologyStrategy', 'DATACENTER_NAME':3};其中:
- KEYSPACE_NAME 是上一步輸出內容中列出的鍵空間名稱。
- DATACENTER_NAME 是您在步驟 8 中使用
nodetool status選項取得的 Cassandra 資料中心名稱。
- 使用