本页面介绍了如何在多个区域中恢复 Cassandra。
在多区域部署中,Apigee Hybrid 部署在不同数据中心之间的多个地理位置中。请务必注意,如果您的部署中有多个 Apigee 组织,则恢复过程将恢复所有组织的数据。在多组织设置中,不支持仅恢复特定组织。
恢复 Cassandra
在多区域部署中,可通过两种方法缓解故障区域的问题。本主题介绍了这两种方法:
恢复故障区域
如需从健康状况良好的区域恢复故障区域,请执行以下步骤:
- 将 API 流量从受影响的区域重定向到正常工作的区域。相应地规划容量,以支持从故障区域转移的流量。
- 停用受影响的区域。对于每个受影响的区域,请按照停用 Hybrid 区域中所述的步骤执行操作。等待停用完成,然后再继续执行下一步操作。
- 恢复受影响的区域。如需恢复,请创建一个新区域,如 GKE、GKE On-Prem 和 AKS 上的多区域部署中所述。
使用备份进行恢复
Cassandra 备份可以位于 Cloud Storage 或远程服务器上,具体取决于您的配置。如需从备份恢复 Cassandra,请执行以下步骤:
- 从所有区域中删除 Apigee Hybrid 部署:
apigeectl delete -f overrides.yaml
-
使用备份恢复所需区域。如需了解详情,请参阅从备份恢复区域。
- 移除已删除的区域引用,并在
KeySpaces
元数据中添加已恢复的区域引用。 - 使用
nodetool status
选项获取区域名称。kubectl exec -n apigee -it apigee-cassandra-default-0 -- bash nodetool -u ${APIGEE_JMX_USER} -pw ${APIGEE_JMX_PASSWORD} status |grep -i Datacenter
- 更新
KeySpaces
复制功能。- 创建客户端容器并通过 CQL 接口连接到 Cassandra 集群。
- 从 CQL 接口获取用户键空间列表:
cqlsh ${CASSANDRA_SEEDS} -u ${CASS_USERNAME} -p ${CASS_PASSWORD} --ssl -e "select keyspace_name from system_schema.keyspaces;"|grep -v system
- 对于每个键空间,请从 CQL 接口运行以下命令以更新复制设置:
ALTER KEYSPACE KEYSPACE_NAME WITH replication = {'class': 'NetworkTopologyStrategy', 'REGION_NAME':3};
其中:
- KEYSPACE_NAME 是上一步输出中列出的键空间的名称。
- REGION_NAME 是在第 4 步中获得的区域名称。