En este tema, se describen los pasos que debes seguir a fin de configurar el componente de base de datos de Cassandra para una instalación de producción de Apigee Hybrid.
Garantizar 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 falla, las zonas restantes continuarán respondiendo las solicitudes, mientras que la zona restante vuelve a estar en línea. Si dos o más zonas fallan, Cassandra no podrá responder a las solicitudes hasta que al menos dos zonas estén en línea. Apigee recomienda que las zonas vuelvan a estar en línea en un plazo de tres horas para minimizar el riesgo de actualizaciones de datos faltantes.
Establece la configuración de almacenamiento de Cassandra
Para una instalación de producción de Apigee Hybrid, Google recomienda que agregues la siguiente configuración de almacenamiento y montón a tu archivo de anulación y la apliques 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
Aplica los cambios a Cassandra con el siguiente comando:
helm upgrade datastore apigee-datastore/ \ --namespace apigee \ --atomic \ -f OVERRIDES_FILE.yaml
replicaCount
El valor de replicaCount
debe ser un múltiplo de 3
. Para determinar el valor replicaCount
deseado, ten en cuenta lo siguiente:
- Estima las demandas de tráfico para tus proxies.
- Realiza una prueba de carga y haz predicciones razonables sobre el uso de CPU.
- Puedes especificar diferentes valores
replicaCount
en diferentes regiones. - Puedes expandir el
replicaCount
en el futuro en el archivo de anulación.
storageclass
Para la producción, el almacenamiento de Cassandra debe ser una StorageClass SSD. Establece el valor de storageclass
si no usas la StorageClass predeterminada de Kubernetes para tu clúster. Puedes verificar la StorageClass predeterminada con el siguiente comando.
kubectl get storageclass
Deberías obtener un resultado similar al siguiente:
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 en Configuración de StorageClass si quieres cambiar la StorageClass de Kubernetes predeterminada.
Para verificar la configuración storageclass
actual, ejecuta el siguiente comando en tu clúster:
kubectl get pvc -n NAMESPACE cassandra-data-apigee-cassandra-default-0 -o=jsonpath="{['.spec.storageClassName', '.metadata.annotations.volume\.beta\.kubernetes\.io/storage-class']}"
capacity
Para las instalaciones de producción, Google recomienda una capacidad de almacenamiento de al menos 500Gi (gibibytes). Puedes cambiar la capacidad de almacenamiento en respuesta a las necesidades de almacenamiento de tu clúster. Consulta las instrucciones en Expande volúmenes persistentes de Cassandra para cambiar la capacidad de almacenamiento.
Para verificar la configuración 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 CPU y un mínimo de 15Gi (gibibytes) por Pod. Cuando especifiques cassandra.resources.requests.cpu
y cassandra.resources.requests.memory
, considera el volumen de tráfico y las demandas de CPU y memoria de tus proxies.
Para verificar la configuración de CPU actual, 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 verificar 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ón se especifican en megabytes, no en mebibytes). Para entornos de producción, Google recomienda los siguientes valores:
maxHeapSize: 8192M
heapNewSize: 1200M
Consulta la documentación de tu proveedor de plataformas de Kubernetes para obtener valores de tamaño de montón óptimos.
Para verificar la configuración maxHeapSize
actual, 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 verificar la configuración heapNewSize
actual, 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 estas opciones de configuración, consulta la referencia sobre las propiedades de la configuración.
Usa almacenamiento SSD para implementaciones de producción
Para la base de datos Cassandra, el entorno de ejecución híbrido solo admite volúmenes persistentes creados de forma dinámica para almacenar datos. Las unidades de disco de estado sólido (SSD) locales no son compatibles.
Si actualmente no tienes un SSD configurado para Cassandra, debes configurar una definición de StorageClass respaldada por una unidad de estado sólido (SSD) y hacer que sea la clase predeterminada. Consulta Configuración de StorageClass para obtener pasos detallados.
Sigue las instrucciones en Configuración de StorageClass si quieres cambiar la StorageClass de Kubernetes predeterminada.