Cassandra 恢复概览

本页面简要介绍如何在 Apigee Hybrid 中恢复 Cassandra。

为何使用恢复功能?

在发生灾难性故障时(例如灾难导致 Apigee Hybrid 实例中不可恢复的数据丢失),您可以使用备份彻底恢复 Apigee 基础架构。恢复功能会从备份位置获取数据,并将其恢复到具有相同节点数的新 Cassandra 集群中。不会从旧的 Cassandra 集群获取集群数据。恢复过程的目标是使用快照中的备份数据将 Apigee Hybrid 安装恢复到之前的正常运行状态。

在以下情况下,不建议使用备份进行恢复:

  • Cassandra 节点故障。
  • 意外删除 appsdevelopersapi_credentials 等数据。
  • 多区域 Hybrid 部署中的一个或多个区域出现故障。

Apigee Cassandra 部署和运营架构负责处理单个区域的冗余和容错。在大多数情况下,建议的 Hybrid 多区域生产实现意味着可以使用区域停用和扩展步骤通过另一个活动区域恢复区域故障,而不是从备份中恢复。

在开始实现从 Cassandra 备份恢复之前,请注意以下事项:

  • 停用时间:在恢复期间会有停用时间。
  • 数据丢失:上次有效备份与恢复完成之间存在数据丢失问题。
  • 恢复时间:恢复时间取决于数据和集群的大小。
  • 择优挑选数据:您无法仅选择要恢复的特定数据。恢复操作会恢复您选择的整个备份。

多区域恢复

如果您将 Apigee Hybrid 安装到多个区域,则必须检查要恢复的区域的替换文件,以确保将 cassandra:hostNetwork 设置为 false,然后再执行恢复。如需了解详情,请参阅在多个区域中恢复

前提条件

检查是否满足以下所有前提条件。在继续恢复之前,请调查任何不满足前提条件的情况。

  1. 使用以下命令验证所有 Cassandra pod 是否已启动并运行。
    kubectl get pods -n APIGEE_NAMESPACE -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 %
          
  2. 使用以下命令验证 Cassandra 有状态集是否显示所有 pod 正在运行。
    kubectl get sts -n APIGEE_NAMESPACE -l app=apigee-cassandra

    输出内容应如下所示:

    NAME                       READY   AGE
    apigee-cassandra-default   3/3     15m
        
  3. 使用以下命令验证 ApigeeDatastore 资源是否处于“正在运行”状态。
    kubectl get apigeeds -n APIGEE_NAMESPACE

    输出内容应如下所示:

    NAME      STATE     AGE
    default   running   16m
        
  4. 使用以下命令验证所有 Cassandra PVC 是否都处于“绑定”状态。
    kubectl get pvc -n APIGEE_NAMESPACE -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
        
  5. 使用以下命令验证所有 Cassandra PV 是否都处于“绑定”状态。
    kubectl get pv -n APIGEE_NAMESPACE

    输出内容应如下所示:

    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
        
  6. 使用以下命令验证 Apigee 控制器资源是否处于“正在运行”状态。
    kubectl get pods -n APIGEE_NAMESPACE-system -l app=apigee-controller

    输出内容应如下所示:

    NAME                                         READY   STATUS    RESTARTS   AGE
    apigee-controller-manager-856d9bb7cb-cfvd7   2/2     Running   0          20m
        

如何恢复?

Cassandra 的恢复步骤略有不同,具体取决于您的 Apigee Hybrid 是部署在单个区域中还是多个区域中。如需了解详细的恢复步骤,请参阅以下文档: