Questo argomento illustra come fare lo scale up di Cassandra in orizzontale e in verticale e come fare lo scale down di Cassandra.
Scalabilità orizzontale della Cassandra
Per fare lo scale up di Cassandra in orizzontale
- Assicurati che il pool di nodi
apigee-data
abbia capacità aggiuntiva, in base alle esigenze, prima di scalare Cassandra. Vedi anche Configurazione dei pool di nodi dedicati. - Imposta il valore della proprietà di configurazione
cassandra.replicaCount
nel file di override. Per informazioni su questa proprietà, consulta la pagina di riferimento sulla proprietà di configurazione. Vedi anche Gestire i componenti del piano di runtime. - Applica le modifiche. Ad esempio:
$APIGEE_HOME/apigeectl apply --datastore -f overrides/overrides.yaml
Ridimensionare Cassandra in verticale
Questa sezione spiega come scalare i pod Cassandra in verticale in modo da soddisfare i requisiti più elevati di CPU e memoria.
Panoramica
Per un deployment di produzione ibrido Apigee, ti consigliamo di creare almeno due pool di nodi separati: uno per i servizi stateful (Cassandra) e uno per i servizi stateless (runtime). Ad esempio, consulta Requisiti dei cluster di produzione GKE.
Per il pool di nodi stateful Cassandra, consigliamo di iniziare con 8 core CPU e 30 GB di memoria. Una volta eseguito il provisioning del pool di nodi, non è possibile modificare queste impostazioni. Vedi anche Configura Cassandra per la produzione.
Se devi fare lo scale up dei pod Cassandra per soddisfare requisiti più elevati di CPU e memoria, segui i passaggi descritti in questo argomento.
Scale up dei pod Cassandra
Segui questi passaggi per aumentare la CPU e la memoria per il pool di nodi stateful utilizzato per Cassandra:
- Segui le istruzioni della tua piattaforma Kubernetes per aggiungere un nuovo pool di nodi al cluster. Le piattaforme supportate sono indicate nelle istruzioni di installazione.
- Verifica che il nuovo pool di nodi sia pronto:
kubectl get nodes -l NODE_POOL_LABEL_NAME=NODE_POOL_LABEL_VALUE
Comando di esempio:
kubectl get nodes -l cloud.google.com/gke-nodepool=apigee-data-new
Output di esempio:
NAME STATUS ROLES AGE VERSION gke-apigee-data-new-441387c2-2h5n Ready <none> 4m28s v1.14.10-gke.17 gke-apigee-data-new-441387c2-6941 Ready <none> 4m28s v1.14.10-gke.17 gke-apigee-data-new-441387c2-nhgc Ready <none> 4m29s v1.14.10-gke.17
- Aggiorna il file di override in modo che utilizzi il nuovo pool di nodi per Cassandra e
aggiorna le risorse pod alla quantità di CPU e alla memoria maggiori
che vuoi utilizzare. Ad esempio, per un cluster GKE, utilizza una configurazione simile alla seguente.
Se utilizzi un'altra piattaforma Kubernetes, devi modificare il valore
apigeeData.key
di conseguenza:nodeSelector: requiredForScheduling: true apigeeData: key: "NODE_POOL_LABEL_NAME" value: "NODE_POOL_LABEL_VALUE" cassandra: resources: requests: cpu: NODE_POOL_CPU_NUMBER memory: NODE_POOL_MEMORY_SIZE
Ad esempio:
nodeSelector: requiredForScheduling: true apigeeData: key: "cloud.google.com/gke-nodepool" value: "apigee-data-new" cassandra: resources: requests: cpu: 14 memory: 16Gi
- Applica il file di override al cluster:
$APIGEECTL_HOME/apigeectl apply -f ./overrides/overrides.yaml --datastore
Una volta completati questi passaggi, il pod di Cassandra inizierà a essere trasferito al nuovo pool di nodi.
Scale down di Cassandra
Un modello ibrido ibrido utilizza un anello di nodi Cassandra come StatefulSet. Cassandra fornisce archiviazione permanente per alcune entità Apigee sul piano di runtime. Per ulteriori informazioni su Cassandra, consulta Informazioni sul piano di runtime.
Cassandra è un servizio ad alta intensità di risorse e non deve essere sottoposto a deployment su un pod con altri servizi ibridi. A seconda del carico, potresti fare lo scale down del numero di nodi Cassandra nell'anello del cluster.
Il processo generale per lo scale down di un anello di Cassandra è:
- Assicurati che il cluster Cassandra sia integro e abbia spazio di archiviazione sufficiente per supportare lo scale down.
- Aggiorna la proprietà
cassandra.replicaCount
inoverrides.yaml
. - Applica l'aggiornamento della configurazione.
- Elimina la richiesta di volume permanente o il volume, a seconda della configurazione del cluster.
Cosa è importante sapere
- Se i nodi diversi da quelli da ritirare sono in stato non integro, non procedere. Kubernetes non potrà eseguire lo scale down dei pod dal cluster.
- Fai sempre lo scale down o lo scale up di un fattore di tre nodi.
Scala Cassandra
- Verifica che il cluster sia integro e che tutti i nodi siano in esecuzione, come mostra
l'esempio seguente:
kubectl get pods -n yourNamespace -l app=apigee-cassandra NAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 1/1 Running 0 2h apigee-cassandra-default-1 1/1 Running 0 2h apigee-cassandra-default-2 1/1 Running 0 2h apigee-cassandra-default-3 1/1 Running 0 16m apigee-cassandra-default-4 1/1 Running 0 14m apigee-cassandra-default-5 1/1 Running 0 13m apigee-cassandra-default-6 1/1 Running 0 9m apigee-cassandra-default-7 1/1 Running 0 9m apigee-cassandra-default-8 1/1 Running 0 8m
kubectl -n yourNamespace exec -it apigee-cassandra-default-0 nodetool status Datacenter: us-east1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.16.2.6 690.17 KiB 256 48.8% b02089d1-0521-42e1-bbed-900656a58b68 ra-1 UN 10.16.4.6 705.55 KiB 256 51.6% dc6b7faf-6866-4044-9ac9-1269ebd85dab ra-1 to UN 10.16.11.11 674.36 KiB 256 48.3% c7906366-6c98-4ff6-a4fd-17c596c33cf7 ra-1 UN 10.16.1.11 697.03 KiB 256 49.8% ddf221aa-80aa-497d-b73f-67e576ff1a23 ra-1 UN 10.16.5.13 703.64 KiB 256 50.9% 2f01ac42-4b6a-4f9e-a4eb-4734c24def95 ra-1 UN 10.16.8.15 700.42 KiB 256 50.6% a27f93af-f8a0-4c88-839f-2d653596efc2 ra-1 UN 10.16.11.3 697.03 KiB 256 49.8% dad221ff-dad1-de33-2cd3-f1.672367e6f ra-1 UN 10.16.14.16 704.04 KiB 256 50.9% 1feed042-a4b6-24ab-49a1-24d4cef95473 ra-1 UN 10.16.16.1 699.82 KiB 256 50.6% beef93af-fee0-8e9d-8bbf-efc22d653596 ra-1
- Determina se il cluster Cassandra ha spazio di archiviazione sufficiente per supportare lo scale down. Una volta fatto lo scale down, i nodi di Cassandra non devono contenere più del 75% dello spazio di archiviazione.
Ad esempio, se il cluster ha 6 nodi Cassandra e sono occupati per circa il 50%, lo scale down a tre nodi lascerà tutti i tre al 100%, il che non lascerebbe spazio per il funzionamento continuato.
Se invece hai 9 nodi Cassandra, circa il 50% sarà completamente pieno, e lo scale down a 6 nodi lascerà ogni nodo rimanente circa il 75%. Puoi fare lo scale down.
- Aggiorna o aggiungi la proprietà
cassandra.replicaCount
nel fileoverrides.yaml
. Ad esempio, se il numero di nodi corrente è 9, passalo a 6:cassandra: replicaCount: 6 #
- Applica la modifica della configurazione al cluster:
./apigeectl apply --datastore -f overrides/override.yaml
namespace/apigee unchanged secret/ssl-cassandra unchanged storageclass.storage.k8s.io/apigee-gcepd unchanged service/apigee-cassandra unchanged statefulset.apps/apigee-cassandra configured
- Verifica che tutti i nodi Cassandra rimanenti siano in esecuzione:
kubectl get pods -n yourNamespace -l app=apigee-cassandra NAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 1/1 Running 0 3h apigee-cassandra-default-1 1/1 Running 0 3h apigee-cassandra-default-2 1/1 Running 0 2h apigee-cassandra-default-3 1/1 Running 0 25m apigee-cassandra-default-4 1/1 Running 0 24m apigee-cassandra-default-5 1/1 Running 0 23m
- Verifica che il valore di
cassandra.replicaCount
sia uguale al numero di nodi restituiti dal comandonodetool status
.Ad esempio, se hai ridimensionato Cassandra a sei nodi:
kubectl exec apigee-cassandra-default-0 -n apigee -- nodetool -u JMX_user -pw JMX_password status Datacenter: us-east1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.16.2.6 1009.17 KiB 256 73.8% b02089d1-0521-42e1-bbed-900656a58b68 ra-1 UN 10.16.4.6 1.65.55 KiB 256 75.6% dc6b7faf-6866-4044-9ac9-1269ebd85dab ra-1 to UN 10.16.11.11 999.36 KiB 256 72.8% c7906366-6c98-4ff6-a4fd-17c596c33cf7 ra-1 UN 10.16.1.11 1017.03 KiB 256 74.2% ddf221aa-80aa-497d-b73f-67e576ff1a23 ra-1 UN 10.16.5.13 1061.64 KiB 256 75.9% 2f01ac42-4b6a-4f9e-a4eb-4734c24def95 ra-1 UN 10.16.8.15 1049.42 KiB 256 74.9% a27f93af-f8a0-4c88-839f-2d653596efc2 ra-1
- Dopo aver fatto lo scale down del cluster Cassandra, verifica che i dati pvcs (PersistentVolumeClaim) corrispondano ai nodi Cassandra rimanenti.
Recupera i nomi dei PVC:
kubectl get pvc -n yourNamespace NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE cassandra-data-apigee-cassandra-default-0 Bound pvc-f9c2a5b9-818c-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 7h cassandra-data-apigee-cassandra-default-1 Bound pvc-2956cb78-818d-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 7h cassandra-data-apigee-cassandra-default-2 Bound pvc-79de5407-8190-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 7h cassandra-data-apigee-cassandra-default-3 Bound pvc-d29ba265-81a2-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 5h cassandra-data-apigee-cassandra-default-4 Bound pvc-0675a0ff-81a3-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 5h cassandra-data-apigee-cassandra-default-5 Bound pvc-354afa95-81a3-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 5h
In questo esempio non dovresti vedere le chiavi pvc corrispondenti ai tre nodi di cui è stato fatto lo scale down:
cassandra-data-apigee-cassandra-8
cassandra-data-apigee-cassandra-7
cassandra-data-apigee-cassandra-6