Configurazione di Cassandra per la produzione

Questo argomento descrive i passaggi obbligatori e consigliati per configurare il componente del database Cassandra per un'installazione di produzione di Apigee hybrid.

Configurazioni richieste

Sono necessarie le seguenti configurazioni.

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 è disponibile, le altre continueranno a rispondere alle richieste mentre la zona non disponibile torna online. Se due o più zone non sono disponibili, Cassandra non potrà rispondere alle richieste finché almeno due zone non saranno online. Apigee consiglia di rimettere le zone online entro tre ore per ridurre al minimo il rischio di perdere gli 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 spazio 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

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

apigeectl

$APIGEECTL_HOME/apigeectl init -f OVERRIDES_FILE.yaml

$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml --datastore

replicaCount

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

  • Stimare 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.
  • In futuro, potrai espandere replicaCount nel file delle sostituzioni.

storageclass

Per la produzione, lo spazio di archiviazione Cassandra deve essere un StorageClass SSD. Imposta il valore di storageclass se non utilizzi la classe di archiviazione Kubernetes predefinita per il cluster. 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']}"
  

storageSize/capacity

Helm

Per le installazioni di produzione, Google consiglia una dimensione dello spazio di archiviazione di almeno 500 Gi (gibibyte). Puoi modificare le dimensioni dello spazio di archiviazione in base alle esigenze del tuo cluster. Consulta le istruzioni in Espandere i volumi Cassandra permanenti per modificare le dimensioni dello spazio di archiviazione.

Per controllare l'impostazione attuale della dimensione dello spazio di archiviazione, esegui il seguente comando sul cluster:

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

apigeectl

Per le installazioni di produzione, Google consiglia una capacità di archiviazione di almeno 500 GB (gigabyte). Puoi modificare la capacità di archiviazione in base alle esigenze del tuo cluster. Consulta le istruzioni in Espandere i volumi permanenti Cassandra per 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 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 richieste di CPU e memoria dei tuoi proxy.

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

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

Per controllare l'impostazione di memoria corrente, esegui il seguente 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 rispettivamente l'heap di memoria massima allocata ai processi Cassandra e l'importo con cui la memoria viene aumentata in megabyte (le dimensioni dell'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 piattaforma Kubernetes per i valori ottimali delle dimensioni dell'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 il Riferimento per le proprietà di configurazione.

Utilizza 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 un'unità SSD per Cassandra, devi configurare una definizione di StorageClass basata su un'unità a stato solido (SSD) e impostarla come classe predefinita. Per i passaggi dettagliati, vedi Configurazione di StorageClass.

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

Questa sezione descrive le configurazioni consigliate per Cassandra.

Configurare una pianificazione dei backup giornalieri

In caso di un problema Cassandra multiregionale a seguito di una configurazione errata, Google non sarà in grado di ripristinare i dati di runtime, il che comporterà la perdita permanente dei dati.

Per evitare la perdita di dati, configura una pianificazione del backup giornaliera. Monitora le dimensioni e la frequenza dei backup e assicurati di ricevere una notifica in caso di errore della pipeline di backup.

Rispetta i requisiti minimi del cluster Cassandra

Segui la configurazione minima del cluster per Cassandra.

Tratta tutti gli ambienti rivolti ai clienti come di produzione

Anche se la tua installazione ibrida è considerata "non di produzione", potresti comunque aver bisogno di impostazioni pronte per la produzione. Ad esempio, le interruzioni nelle installazioni di test di accettazione utente (UAT) devono attivare incidenti con priorità elevata.

Utilizza le impostazioni pronte per la produzione anche per le installazioni ibride "non prod" rivolte ai clienti. Ti consigliamo di rispettare gli stessi principi per tutti gli ambienti rivolti ai clienti come per i server di produzione, come descritto in questo articolo. In particolare, segui i principi di ripristino di emergenza utilizzando replicaCount e le regioni. Per maggiori dettagli, consulta Configurare le impostazioni di archiviazione di Cassandra.