Configurazione di Cassandra per la produzione

Questo argomento descrive i passaggi da seguire per configurare il componente di database Cassandra per un'installazione di produzione ibrida Apigee.

Garantisci una disponibilità elevata

I cluster Cassandra hanno bisogno di tre zone di disponibilità per mantenere la disponibilità in un ambiente di produzione. Se una zona non funziona, le zone rimanenti continueranno a rispondere alle richieste mentre la zona rimanente tornerà online. Se due o più zone non sono attive, Cassandra non potrà rispondere alle richieste fino a quando almeno due zone non saranno online. Apigee consiglia di riportare le zone online entro tre ore per ridurre al minimo il rischio di perdere aggiornamenti dei dati.

Applicare le impostazioni di archiviazione Cassandra

Per applicare modifiche alle impostazioni di archiviazione Cassandra nel file di override, esegui questi comandi:

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

Configura le impostazioni di archiviazione Cassandra

Per un'installazione in produzione di Apigee hybrid, Google consiglia di aggiungere le seguenti impostazioni di archiviazione e heap al file di override e di applicarle al 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

Il valore di replicaCount deve essere un multiplo di 3. Per determinare il valore di replicaCount che preferisci, considera quanto segue:

  • Stima la domanda di traffico per i proxy.
  • Esegui un test di carico ed effettua previsioni ragionevoli sull'utilizzo della CPU.
  • Puoi specificare valori replicaCount diversi a seconda dell'area geografica.
  • In futuro potrai espandere replicaCount nel file di override.

Per verificare l'impostazione attuale di replicaCount, esegui questo comando sul cluster:

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

storageclass

Per la produzione, l'archiviazione Cassandra deve essere un oggetto StorageClass SSD. Imposta il valore di storageclass se non utilizzi il valore predefinito di StorageClass di Kubernetes per il cluster. Puoi controllare il valore predefinito di StorageClass con il comando seguente.

kubectl get storageclass

L'output dovrebbe essere simile al seguente:

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

Segui le istruzioni in Configurazione di StorageClass se vuoi modificare il valore predefinito di StorageClass di Kubernetes.

Per verificare l'impostazione attuale di storageclass, esegui questo comando sul cluster:

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

capacity

Per le installazioni di produzione, Google consiglia una capacità di archiviazione di almeno 500 Gi (gibibyte). Puoi modificare la capacità di archiviazione in risposta alle esigenze di archiviazione del tuo cluster. Consulta le istruzioni in Espandi i volumi permanenti Cassandra per modificare la capacità di archiviazione.

Per verificare l'impostazione attuale della capacità, esegui questo comando sul cluster:

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

cpu e memory

Per le installazioni di produzione, Google consiglia almeno 7 CPU e un minimo di 15 Gi (gibibyte) per pod. Quando specifichi cassandra.resources.requests.cpu e cassandra.resources.requests.memory, tieni conto del volume di traffico e delle esigenze di CPU e memoria dei tuoi proxy.

Per verificare l'impostazione attuale della CPU, esegui questo comando sul cluster:

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

Per verificare l'impostazione della memoria attuale, esegui questo comando sul tuo cluster:

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

maxHeapSize e heapNewSize

Queste proprietà determinano l'heap di memoria massimo allocato ai processi cassandra e la quantità di memoria aumentata, rispettivamente, in megabyte (le dimensioni heap sono specificate in megabyte, non in mebibyte). Per gli ambienti di produzione, Google consiglia i seguenti valori:

  • maxHeapSize: 8192M
  • heapNewSize: 1200M

Consulta la documentazione del provider della tua piattaforma Kubernetes per ottenere valori ottimali per le dimensioni dell'heap.

Per verificare l'impostazione attuale di maxHeapSize, esegui questo comando sul cluster:

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

Per verificare l'impostazione attuale di heapNewSize, esegui questo comando sul cluster:

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

Per maggiori informazioni su queste impostazioni delle proprietà, consulta la pagina Guida di riferimento alle proprietà di configurazione.

Usa l'archiviazione SSD per i deployment di produzione

Per il database Cassandra, il runtime ibrido supporta solo l'utilizzo di volumi permanenti creati dinamicamente per archiviare i dati. Le unità a stato solido (SSD) locali non sono supportate.

Se al momento non hai configurato SSD per Cassandra, devi configurare una definizione di StorageClass supportata da un'unità a stato solido (SSD) e impostarla come classe predefinita. Per la procedura dettagliata, vedi Configurazione di StorageClass.

Segui le istruzioni in Configurazione di StorageClass se vuoi modificare il valore predefinito di StorageClass di Kubernetes.