Configurazione di Cassandra per la produzione

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

Garantire l'alta disponibilità

I cluster Cassandra richiedono tre zone di disponibilità per mantenere la disponibilità in un ambiente di produzione. Se una zona non è più attiva, le zone rimanenti continueranno a rispondere alle richieste mentre la zona rimanente torna online. Se due o più zone non funzionano, Cassandra verrà non è in grado di rispondere alle richieste finché non sono online almeno due zone. Apigee consiglia ripristinare le zone online entro tre ore per ridurre al minimo il rischio di perdita di aggiornamenti dei dati.

Configurare le impostazioni di archiviazione di Cassandra

Per un'installazione di produzione di Apigee Hybrid, Google consiglia di aggiungere le seguenti impostazioni di archiviazione e heap al file delle sostituzioni 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

Applica le modifiche a cassandra con il seguente comando:

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

replicaCount

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

  • Stima le richieste di traffico per i proxy.
  • Esegui un test di carico e fai previsioni ragionevoli sull'utilizzo della CPU.
  • Puoi specificare valori replicaCount diversi in regioni diverse.
  • Puoi espandere replicaCount in futuro nel file degli override.

storageclass

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

kubectl get storageclass

L'output dovrebbe avere il seguente aspetto:

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 riportate in Configurazione di StorageClass se vuoi modificare la risorsa StorageClass di Kubernetes predefinita.

Per controllare l'impostazione storageclass corrente, esegui il seguente comando sul cluster:

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

capacity

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

Per controllare l'impostazione della capacità corrente, esegui il seguente 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 in 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 richieste 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 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 massimo di memoria allocato ai processi Cassandra e la quantità di aumento della memoria in megabyte (le dimensioni heap sono specificate in megabyte, non 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 avere valori ottimali per le dimensioni heap.

Per controllare l'impostazione maxHeapSize corrente, esegui il seguente comando sul cluster:

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

Per controllare l'impostazione heapNewSize corrente, esegui il seguente comando sul cluster:

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

Per ulteriori informazioni su queste impostazioni delle proprietà, consulta la Guida di riferimento per le proprietà di configurazione.

Usa l'archiviazione SSD per i deployment di produzione

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

Se al momento non hai configurato un'unità SSD per Cassandra, devi configurare un'istanza StorageClass supportata da un'unità a stato solido (SSD) e impostala come predefinita . Per la procedura dettagliata, consulta la sezione Configurazione di StorageClass.

Segui le istruzioni riportate in Configurazione di StorageClass se vuoi modificare la risorsa StorageClass di Kubernetes predefinita.