Configurar Cassandra para el entorno de producción

En este tema se describen los pasos que debe seguir para configurar el componente de la base de datos Cassandra para una instalación de producción de Apigee Hybrid.

Asegurar la alta disponibilidad

Los clústeres de Cassandra necesitan tres zonas de disponibilidad para mantener la disponibilidad en un entorno de producción. Si una zona deja de funcionar, las demás seguirán respondiendo a las solicitudes mientras la zona que ha fallado vuelve a estar online. Si se caen dos o más zonas, Cassandra no podrá responder a las solicitudes hasta que al menos dos zonas vuelvan a estar online. Apigee recomienda que las zonas vuelvan a estar online en un plazo de tres horas para minimizar el riesgo de que falten actualizaciones de datos.

Aplicar ajustes de almacenamiento de Cassandra

Para aplicar los cambios en los ajustes de almacenamiento de Cassandra en el archivo de anulaciones, ejecuta los siguientes comandos:

$APIGEECTL_HOME/apigeectl init -f overrides/OVERRIDES_FILE
$APIGEECTL_HOME/apigeectl apply -f overrides/OVERRIDES_FILE

Configurar los ajustes de almacenamiento de Cassandra

Para una instalación de producción de Apigee hybrid, Google recomienda que añada los siguientes ajustes de almacenamiento y de montículo al archivo de anulaciones y que los aplique al clúster:

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

replicaCount

El valor de replicaCount debe ser un múltiplo de 3. Para determinar el valor de replicaCount que quieres, ten en cuenta lo siguiente:

  • Estima las demandas de tráfico de tus proxies.
  • Realiza pruebas de carga y haz predicciones razonables sobre el uso de la CPU.
  • Puedes especificar diferentes valores de replicaCount en distintas regiones.
  • Puedes ampliar el replicaCount en el futuro en tu archivo de anulaciones.

Para comprobar la configuración actual de replicaCount, ejecuta el siguiente comando en tu clúster:

kubectl get sts -n NAMESPACE apigee-cassandra-default -o=jsonpath='{.spec.replicas}'
  

storageclass

En el entorno de producción, el almacenamiento de Cassandra debe ser un StorageClass SSD. Define el valor de storageclass si no utilizas la clase de almacenamiento de Kubernetes predeterminada para tu clúster. Puedes comprobar la StorageClass predeterminada con el siguiente comando.

kubectl get storageclass

La salida debería tener un aspecto similar a este:

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

Sigue las instrucciones de la sección Configuración de StorageClass si quieres cambiar la clase de almacenamiento predeterminada de Kubernetes.

Para comprobar la configuración actual de storageclass, ejecuta el siguiente comando en tu clúster:

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

capacity

Para las instalaciones de producción, Google recomienda una capacidad de almacenamiento de al menos 500 Gi (gibibytes). Puedes cambiar la capacidad de almacenamiento en función de las necesidades de almacenamiento de tu clúster. Consulta las instrucciones de Ampliar volúmenes persistentes de Cassandra para cambiar la capacidad de almacenamiento.

Para comprobar el ajuste de capacidad actual, ejecuta el siguiente comando en tu clúster:

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

cpu y memory

Para las instalaciones de producción, Google recomienda al menos 7 CPUs y un mínimo de 15 Gi (gibibytes) por pod. Al especificar cassandra.resources.requests.cpu y cassandra.resources.requests.memory, ten en cuenta el volumen de tráfico y las demandas de CPU y memoria de tus proxies.

Para comprobar la configuración actual de la CPU, ejecuta el siguiente comando en tu clúster:

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

Para comprobar la configuración de memoria actual, ejecuta el siguiente comando en tu clúster:

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

maxHeapSize y heapNewSize

Estas propiedades determinan la cantidad máxima de memoria asignada a los procesos de Cassandra y la cantidad en la que se aumenta la memoria, respectivamente, en megabytes (los tamaños del montículo se especifican en megabytes, no en mebibytes). En los entornos de producción, Google recomienda los siguientes valores:

  • maxHeapSize: 8192M
  • heapNewSize: 1200M

Consulta la documentación de tu proveedor de la plataforma de Kubernetes para obtener los valores óptimos del tamaño del montículo.

Para comprobar la configuración actual de maxHeapSize, ejecuta el siguiente comando en tu clúster:

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

Para comprobar la configuración actual de heapNewSize, ejecuta el siguiente comando en tu clúster:

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

Para obtener más información sobre estos ajustes de propiedad, consulta la referencia de la propiedad de configuración.

Usar el almacenamiento SSD para las implementaciones de producción

En el caso de la base de datos Cassandra, el runtime híbrido solo admite el uso de volúmenes persistentes creados dinámicamente para almacenar datos. No se admiten unidades de disco de estado sólido (SSD) locales.

Si no tienes configurada una unidad SSD para Cassandra, debes configurar una definición de StorageClass que esté respaldada por una unidad de estado sólido (SSD) y convertirla en la clase predeterminada. Para obtener instrucciones detalladas, consulta la configuración de StorageClass.

Sigue las instrucciones de la sección Configuración de StorageClass si quieres cambiar la clase de almacenamiento predeterminada de Kubernetes.