针对生产环境配置 Cassandra

本主题介绍了为进行 Apigee Hybrid 生产安装配置 Cassandra 数据库组件而必须执行和建议执行的步骤。

必需的配置

需要进行以下配置。

确保高可用性

Cassandra 集群需要三个可用区来维持生产环境中的可用性。如果一个可用区发生故障,则在该可用区恢复在线状态的过程中,其余可用区将继续响应请求。如果两个或更多可用区发生故障,则至少有两个可用区处于在线状态后,Cassandra 才能响应请求。Apigee 建议在三小时内使可用区恢复在线状态,以最大限度地降低数据更新丢失的风险。

配置 Cassandra 存储设置

对于 Apigee Hybrid 的生产环境安装,Google 建议您将以下存储空间和堆设置添加到替换文件中,并将其应用于集群:

cassandra:
  ...
  replicaCount: 3
  storage:
    storageclass: your-preferred-ssd-storage #If not using default storage for your cluster
    capacity: 500Gi
  resources:
    requests:
      cpu: 7
      memory: 15Gi
  maxHeapSize: 8192M
  heapNewSize: 1200M

使用以下命令将更改应用于 cassandra:

helm upgrade datastore apigee-datastore/ \
--namespace apigee \
--atomic \
-f OVERRIDES_FILE.yaml

replicaCount

replicaCount 的值必须是 3 的倍数。如需确定所需的 replicaCount 值,请考虑以下事项:

  • 估算代理的流量需求。
  • 对负载进行测试,并对 CPU 利用率进行合理预测。
  • 您可以在不同区域中指定不同的 replicaCount 值。
  • 将来,您可以在替换文件中扩展 replicaCount

storageclass

对于生产环境,Cassandra 存储必须是 SSD StorageClass。如果您未将默认 Kubernetes StorageClass 用于集群,请设置 storageclass 的值。您可以使用以下命令检查默认 StorageClass。

kubectl get storageclass

输出应如下所示:

NAME                     PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
premium-rwo              pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   6d23h
standard                 kubernetes.io/gce-pd    Delete          Immediate              true                   6d23h
standard-rwo (default)   pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   6d23h

如果您要更改默认 Kubernetes StorageClass,请按照 StorageClass 配置中的说明操作。

如需检查当前 storageclass 设置,请在集群上执行以下命令:

kubectl get pvc -n NAMESPACE cassandra-data-apigee-cassandra-default-0 -o=jsonpath="{['.spec.storageClassName', '.metadata.annotations.volume\.beta\.kubernetes\.io/storage-class']}"
  

storageSize

对于生产安装,Google 建议存储空间容量至少为 500 GiB。 您可以根据集群的存储需求更改存储容量。如需更改存储容量,请参阅扩展 Cassandra 永久性卷中的说明。

如需检查当前大小设置,请在集群上执行以下命令:

kubectl get pvc -n NAMESPACE cassandra-data-apigee-cassandra-default-0 -o=jsonpath='{.spec.resources.requests.storage}'
  

cpu”和“memory

对于生产安装,Google 建议每个 Pod 至少 7 个 CPU 和至少 15 GiB。指定 cassandra.resources.requests.cpucassandra.resources.requests.memory 时,请考虑代理的流量需求以及 CPU 和内存需求。

如需检查当前 CPU 设置,请在集群上执行以下命令:

kubectl get pods -n NAMESPACE apigee-cassandra-default-0 -o=jsonpath='{.spec.containers[].resources.requests.cpu}'
  

如需检查当前内存设置,请在集群上执行以下命令:

kubectl get pods -n NAMESPACE apigee-cassandra-default-0 -o=jsonpath='{.spec.containers[].resources.requests.memory}'
  

maxHeapSizeheapNewSize

这些属性分别确定了分配给 cassandra 进程的最大内存堆以及内存增加量(以 MB 为单位)(堆大小是以 MB 为单位指定的,而不是以 MiB 为单位指定的)。对于生产环境,Google 建议使用以下值:

  • maxHeapSize: 8192M
  • heapNewSize: 1200M

请参阅 Kubernetes 平台提供商的文档,了解最佳堆大小值。

如需检查当前 maxHeapSize 设置,请在集群上执行以下命令:

kubectl get sts -n NAMESPACE apigee-cassandra-default -o=jsonpath='{.spec.template.spec.containers[].env[?(@.name=="MAX_HEAP_SIZE")]}'
  

如需检查当前 heapNewSize 设置,请在集群上执行以下命令:

kubectl get sts -n NAMESPACE apigee-cassandra-default -o=jsonpath='{.spec.template.spec.containers[].env[?(@.name=="HEAP_NEWSIZE")]}'
  

如需详细了解这些属性设置,请参阅配置属性参考

将 SSD 存储空间用于生产部署

对于 Cassandra 数据库,混合运行时仅支持使用动态创建的永久性卷来存储数据。不支持本地固态磁盘 (SSD) 驱动器。

如果您目前没有为 Cassandra 配置 SSD,则必须配置由固态硬盘 (SSD) 支持的 StorageClass 定义,并将其设为默认类。如需了解详细步骤,请参阅 StorageClass 配置

如果您要更改默认 Kubernetes StorageClass,请按照 StorageClass 配置中的说明操作。

本部分介绍了 Cassandra 的建议配置。

配置每日备份时间表

如果配置错误导致多区域 Cassandra 出现问题,Google 将无法恢复运行时数据,这将导致数据永久丢失。

为防止数据丢失,请配置每日备份时间表。 监控备份大小和频率,并确保在备份流水线失败时收到通知。

遵守 Cassandra 最低集群要求

请遵循 Cassandra 的最低集群配置

将所有面向客户的环境都视为生产环境

即使您的混合安装被视为“非生产环境”,您可能仍需要使用可用于生产环境的设置。例如,用户接受测试 (UAT) 安装中断应触发高优先级的突发事件。

即使是面向客户的“非生产”Hybrid 安装,也应使用可用于生产环境的设置。 我们建议您对所有面向客户的环境遵循与生产服务器相同的原则,如本文所述。具体而言,请遵循使用 replicaCount 和区域的灾难恢复原则。 如需了解详情,请参阅配置 Cassandra 存储设置