管理 Cassandra 永久性卷大小

通过此过程,您可以扩展 Apigee Hybrid Cassandra 数据库使用的永久性卷,以满足更大的存储需求,而无需创建新节点来提供更多存储空间。

概览

Apigee Hybrid cassandra 组件使用永久性卷存储数据。永久性卷大小是在安装和初始配置期间定义的。该初始存储空间大小是不可变值,无法更改。因此,添加到集群的任何新节点都将使用相同的永久性卷大小。

您可以通过直接对永久性卷声明进行更改来增加现有永久性卷的大小。新节点仍将使用较小的初始永久性卷大小。

如果您的 Hybrid Cassandra 数据库即将达到其存储容量,您也可以通过此过程扩展现有永久性卷并允许新节点扩展其永久性卷。

扩展 Cassandra 永久性卷

  1. 将卷大小更新为所需大小:
    kubectl -n APIGEE_NAMESPACE edit pvc
  2. 查看更新后的卷容量:
     kubectl get pvc -n APIGEE_NAMESPACE
    NAME                                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    cassandra-data-apigee-cassandra-default-0   Bound    pvc-92234ba7-941b-4dab-82c6-8a5288a2c8d4   100Gi      RWO            standard       21m
    cassandra-data-apigee-cassandra-default-1   Bound    pvc-6be911fc-91f7-465d-a02e-933428ee10b2   100Gi      RWO            standard       20m
    cassandra-data-apigee-cassandra-default-2   Bound    pvc-14ba34e4-fd5c-4d59-8413-a331dcad3404   100Gi      RWO            standard       19m
  3. 使用新存储空间大小备份、删除和重新创建 Statefulset。以下命令会创建配置文件 apigee-cassandra-default.yaml,可用于捕获当前的 Cassandra 配置。然后,修改并应用此配置:
    1. kubectl -n APIGEE_NAMESPACE get sts apigee-cassandra-default -o yaml > apigee-cassandra-default.yaml
    2. kubectl -n apiAPIGEE_NAMESPACEgee delete sts --cascade=orphan apigee-cassandra-default
    3. 检查 delete 操作是否已完成:
      kubectl get sts -n APIGEE_NAMESPACE

      您的输出应如下所示:

      No resources found in apigee namespace.
    4. 使用新的存储大小更新 apigee-cassandra-default.yaml 文件中的存储空间大小。该值必须与您想要在 overrides.yaml 中应用的大小一致。例如:
           resources:
              requests:
                storage: 100Gi
    5. 使用更新后的存储空间大小重新应用 StatefulSet 配置:
      kubectl apply -f apigee-cassandra-default.yaml
    6. 验证是否已正确重新创建 StatefulSet:
      kubectl get sts -n APIGEE_NAMESPACE

      输出应如下所示:

      NAME                       READY   AGE
      apigee-cassandra-default   3/3     6m56s
  4. 使用您在修改 pvc 时指定的新卷大小更新替换文件:
    cassandra:
      storage:
        capacity: 100Gi
  5. 将更新后的配置应用到集群:
    helm upgrade datastore apigee-datastore/ \
    --namespace APIGEE_NAMESPACE \
    --atomic \
    -f OVERRIDES_FILE.yaml
    
  6. 检查新创建的 sts 是否具有更新后的存储空间大小:
    kubectl get sts -n APIGEE_NAMESPACE apigee-cassandra -o yaml |grep storage
    storage: 100Gi
  7. 检查 C* Pod 数据卷是否已更新为新的大小:

    kubectl exec -n APIGEE_NAMESPACE -it apigee-cassandra-default-0 -- df -h|grep "/opt/apigee/data"
    /dev/sdb         99G   69M   99G   1% /opt/apigee/data