Configurer Cassandra pour la production

Cet article décrit la procédure à suivre pour configurer le composant de base de données Cassandra pour une installation Apigee hybride en production.

Assurer la haute disponibilité

Les clusters Cassandra nécessitent trois zones de disponibilité pour maintenir la disponibilité dans un environnement de production. Si une zone tombe en panne, les zones restantes continueront de répondre aux requêtes pendant sa remise en ligne. Si deux zones ou plus tombent en panne, Cassandra ne pourra pas répondre aux requêtes tant qu'au moins deux zones ne seront pas en ligne. Apigee recommande de remettre les zones en ligne dans les trois heures afin de minimiser le risque de mises à jour de données manquantes.

Appliquer les paramètres de stockage Cassandra

Pour appliquer les modifications aux paramètres de stockage Cassandra dans votre fichier de remplacement, exécutez les commandes suivantes :

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

Configurer les paramètres de stockage Cassandra

Pour une installation Apigee hybride en production, Google vous recommande d'ajouter les paramètres de stockage et de segment de mémoire suivants à votre fichier de remplacement et de les appliquer au cluster :

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

La valeur de replicaCount doit être un multiple de 3. Pour déterminer la valeur replicaCount souhaitée, tenez compte des éléments suivants :

  • Estimez la demande de trafic pour vos proxys.
  • Effectuez des tests de charge et effectuez des prédictions raisonnables sur votre utilisation du processeur.
  • Vous pouvez spécifier différentes valeurs replicaCount dans différentes régions.
  • Vous pouvez développer replicaCount dans le fichier de remplacement.

Pour vérifier le paramètre replicaCount actuel, exécutez la commande suivante sur votre cluster :

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

storageclass

Pour la production, le stockage Cassandra doit être une StorageClass SSD. Définissez la valeur de storageclass si vous n'utilisez pas la StorageClass Kubernetes par défaut pour votre cluster. Vous pouvez vérifier la StorageClass par défaut à l'aide de la commande suivante.

kubectl get storageclass

Le résultat doit se présenter sous la forme suivante :

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

Suivez les instructions de la page Configuration de StorageClass si vous souhaitez modifier la StorageClass Kubernetes par défaut.

Pour vérifier le paramètre storageclass actuel, exécutez la commande suivante sur votre cluster :

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

capacity

Pour les installations de production, Google recommande une capacité de stockage d'au moins 500 Gi (gibioctets). Vous pouvez modifier la capacité de stockage en réponse aux besoins de stockage de votre cluster. Consultez les instructions de la section Développer des volumes persistants Cassandra pour modifier la capacité de stockage.

Pour vérifier le paramètre de capacité actuel, exécutez la commande suivante sur votre cluster :

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

cpu et memory

Pour les installations de production, Google recommande au moins sept processeurs et un minimum de 15 Gi (gibioctets) par pod. Lorsque vous spécifiez cassandra.resources.requests.cpu et cassandra.resources.requests.memory, tenez compte du volume de trafic et des exigences de vos proxys en termes de processeur et de mémoire.

Pour vérifier le paramètre de processeur actuel, exécutez la commande suivante sur votre cluster :

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

Pour vérifier le paramètre de mémoire actuel, exécutez la commande suivante sur votre cluster :

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

maxHeapSize et heapNewSize

Ces propriétés déterminent le segment de mémoire maximal alloué aux processus Cassandra et la quantité par laquelle la mémoire est augmentée, respectivement, en mégaoctets (les tailles des segments de mémoire sont spécifiées en mégaoctets, et non en mébioctets). Pour les environnements de production, Google recommande les valeurs suivantes :

  • maxHeapSize: 8192M
  • heapNewSize: 1200M

Consultez la documentation de votre fournisseur de plate-forme Kubernetes pour connaître les valeurs de taille de segments de mémoire optimales.

Pour vérifier le paramètre maxHeapSize actuel, exécutez la commande suivante sur votre cluster :

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

Pour vérifier le paramètre heapNewSize actuel, exécutez la commande suivante sur votre cluster :

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

Pour en savoir plus sur ces paramètres de propriété, consultez la documentation de référence sur les propriétés de configuration.

Utiliser le stockage SSD pour les déploiements de production

Pour la base de données Cassandra, l'environnement d'exécution hybride accepte uniquement l'utilisation de volumes persistants créés de manière dynamique pour stocker les données. Les disques durs SSD (Solid-State Disk) locaux ne sont pas compatibles.

Si vous n'avez pas encore configuré de disque SSD pour Cassandra, vous devez configurer une définition StorageClass reposant sur un disque dur SSD et en faire la classe par défaut. Pour connaître la procédure détaillée, consultez la page Configuration de StorageClass.

Suivez les instructions de la page Configuration de StorageClass si vous souhaitez modifier la StorageClass Kubernetes par défaut.