针对生产环境配置 Cassandra

本主题介绍了为进行 Apigee 混合生产安装配置 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

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

apigeectl

$APIGEECTL_HOME/apigeectl init -f OVERRIDES_FILE.yaml

$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml --datastore

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']}"
  

capacity

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

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

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

cpumemory

对于生产安装,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 配置中的说明操作。