本页面简要介绍如何在 Apigee Hybrid 中恢复 Cassandra。
为何使用恢复功能?
在发生灾难性故障时(例如灾难导致 Apigee Hybrid 实例中不可恢复的数据丢失),您可以使用备份彻底恢复 Apigee 基础架构。恢复功能会从备份位置获取数据,并将其恢复到具有相同节点数的新 Cassandra 集群中。不会从旧的 Cassandra 集群获取集群数据。恢复过程的目标是使用快照中的备份数据将 Apigee Hybrid 安装恢复到之前的正常运行状态。
在以下情况下,不建议使用备份进行恢复:
- Cassandra 节点故障。
- 意外删除
apps
、developers
和api_credentials
等数据。 - 多区域 Hybrid 部署中的一个或多个区域出现故障。
Apigee Cassandra 部署和运营架构负责处理单个区域的冗余和容错。在大多数情况下,建议的 Hybrid 多区域生产实现意味着可以使用区域停用和扩展步骤通过另一个活动区域恢复区域故障,而不是从备份中恢复。
在开始实现从 Cassandra 备份恢复之前,请注意以下事项:
- 停用时间:在恢复期间会有停用时间。
- 数据丢失:上次有效备份与恢复完成之间存在数据丢失问题。
- 恢复时间:恢复时间取决于数据和集群的大小。
- 择优挑选数据:您无法仅选择要恢复的特定数据。恢复操作会恢复您选择的整个备份。
多区域恢复
如果您将 Apigee Hybrid 安装到多个区域,则必须检查要恢复的区域的替换文件,以确保将 cassandra:hostNetwork
设置为 false
,然后再执行恢复。如需了解详情,请参阅在多个区域中恢复。
前提条件
检查是否满足以下所有前提条件。在继续恢复之前,请调查任何不满足前提条件的情况。
- 使用以下命令验证所有 Cassandra pod 是否已启动并运行。
kubectl get pods -n apigee -l app=apigee-cassandra
输出内容应如下所示:
NAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 1/1 Running 0 14m apigee-cassandra-default-1 1/1 Running 0 13m apigee-cassandra-default-2 1/1 Running 0 11m exampleuser@example hybrid-files %
- 使用以下命令验证 Cassandra 有状态集是否显示所有 pod 正在运行。
kubectl get sts -n apigee -l app=apigee-cassandra
输出内容应如下所示:
NAME READY AGE apigee-cassandra-default 3/3 15m
- 使用以下命令验证 ApigeeDatastore 资源是否处于“正在运行”状态。
kubectl get apigeeds -n apigee
输出内容应如下所示:
NAME STATE AGE default running 16m
- 使用以下命令验证所有 Cassandra PVC 是否都处于“绑定”状态。
kubectl get pvc -n apigee -l app=apigee-cassandra
输出内容应如下所示:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE cassandra-data-apigee-cassandra-default-0 Bound pvc-a14184e7-8745-4b30-8069-9d50642efe04 10Gi RWO standard-rwo 17m cassandra-data-apigee-cassandra-default-1 Bound pvc-ed129dcb-4706-4bad-a692-ac7c78bad64d 10Gi RWO standard-rwo 15m cassandra-data-apigee-cassandra-default-2 Bound pvc-faed0ad1-9019-4def-adcd-05e7e8bb8279 10Gi RWO standard-rwo 13m
- 使用以下命令验证所有 Cassandra PV 是否都处于“绑定”状态。
kubectl get pv -n apigee
输出内容应如下所示:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-a14184e7-8745-4b30-8069-9d50642efe04 10Gi RWO Delete Bound apigee/cassandra-data-apigee-cassandra-default-0 standard-rwo 17m pvc-ed129dcb-4706-4bad-a692-ac7c78bad64d 10Gi RWO Delete Bound apigee/cassandra-data-apigee-cassandra-default-1 standard-rwo 16m pvc-faed0ad1-9019-4def-adcd-05e7e8bb8279 10Gi RWO Delete Bound apigee/cassandra-data-apigee-cassandra-default-2 standard-rwo 14m
- 使用以下命令验证 Apigee 控制器资源是否处于“正在运行”状态。
kubectl get pods -n apigee-system -l app=apigee-controller
输出内容应如下所示:
NAME READY STATUS RESTARTS AGE apigee-controller-manager-856d9bb7cb-cfvd7 2/2 Running 0 20m
如何恢复?
Cassandra 的恢复步骤略有不同,具体取决于您的 Apigee Hybrid 是部署在单个区域中还是多个区域中。如需了解详细的恢复步骤,请参阅以下文档: