Questo argomento descrive i passaggi da seguire per configurare il componente di database Cassandra per un'installazione di produzione ibrida Apigee.
Garantisci 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 è più disponibile, le zone rimanenti continueranno a rispondere alle richieste mentre la zona rimanente torna online. Se due o più zone non sono attive, Cassandra non sarà in grado di rispondere alle richieste fino a quando almeno due zone non saranno online. Apigee consiglia di ripristinare le zone online entro tre ore per ridurre al minimo il rischio di perdita di aggiornamenti dei dati.
Configura le impostazioni di archiviazione di Cassandra
Per un'installazione in produzione di Apigee hybrid, Google consiglia di aggiungere le seguenti impostazioni di archiviazione e heap al file degli 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
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 valore di replicaCount
desiderato, considera quanto segue:
- Stima le richieste di traffico per i proxy.
- Esegui il test di carico ed esegui 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 il tuo
cluster. Puoi controllare il valore predefinito del campo 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 nella configurazione di StorageClass se vuoi modificare il valore predefinito di Kubernetes StorageClass.
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="{['.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 riportate in Espandere 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 in produzione, Google consiglia almeno 7 CPU e almeno 15 Gi (gibibyte) per pod. Quando specifichi cassandra.resources.requests.cpu
e
cassandra.resources.requests.memory
, considera il volume di traffico e le esigenze di CPU e
memoria dei tuoi proxy.
Per controllare 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 assegnato ai processi cassandra e la quantità di aumento della memoria 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 tua piattaforma Kubernetes per avere valori ottimali per le dimensioni 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 di riferimento sulle 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à SSD locali non sono supportate.
Se al momento non hai un'unità SSD configurata per Cassandra, devi configurare una definizione di StorageClass supportata da un'unità a stato solido (SSD) e renderla la classe predefinita. Per la procedura dettagliata, consulta la sezione Configurazione di StorageClass.
Segui le istruzioni nella configurazione di StorageClass se vuoi modificare il valore predefinito di Kubernetes StorageClass.