Questo argomento illustra come fare lo scale up di Cassandra sia orizzontale che verticale e come fare lo scale down di Cassandra.
Scalabilità orizzontale di Cassandra
per lo scale up di Cassandra in orizzontale
- Assicurati che il pool di nodi
apigee-data
abbia capacità aggiuntiva, se necessario, prima di scalare Cassandra. Vedi anche Configurare pool di nodi dedicati. - Imposta il valore della proprietà di configurazione
cassandra.replicaCount
nel file degli override. Per informazioni su questa proprietà, consulta 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
Scalabilità verticale di Cassandra
Questa sezione spiega come scalare verticalmente i pod Cassandra per soddisfare requisiti di CPU e memoria più elevati.
Panoramica
Per un deployment di produzione ibrida 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, vedi Requisiti per i 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, queste impostazioni non possono essere modificate. Vedi anche Configurare Cassandra per la produzione.
Se devi fare lo scale up dei pod Cassandra per soddisfare requisiti di CPU e memoria più elevati, segui i passaggi descritti in questo argomento.
Fare lo 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 piattaforma Kubernetes per aggiungere un nuovo pool di nodi al cluster. Le piattaforme supportate sono elencate 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 degli override per utilizzare il nuovo pool di nodi per Cassandra e aggiorna le risorse pod in base al numero di CPU e alle dimensioni della memoria aumentati che vuoi utilizzare. Ad esempio, per un cluster GKE, utilizza una configurazione simile alla seguente.
Se utilizzi un'altra piattaforma Kubernetes, devi regolare 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 degli override al cluster:
$APIGEECTL_HOME/apigeectl apply -f ./overrides/overrides.yaml --datastore
Una volta completati questi passaggi, i pod Cassandra inizieranno a eseguire il rollback al nuovo pool di nodi.
Scale down di Cassandra
Apigee hybrid utilizza un anello di nodi Cassandra come StatefulSet. Cassandra fornisce archiviazione permanente per alcune entità Apigee nel piano di runtime. Per saperne di più su Cassandra, consulta Informazioni sul piano di runtime.
Cassandra è un servizio che richiede molte risorse e non deve essere implementato in un pod con altri servizi ibridi. A seconda del carico, ti consigliamo di scalare il numero di nodi Cassandra nell'anello del tuo cluster.
Il processo generale per lo scale down di un anello Cassandra è:
- Dismetti un nodo Cassandra.
- Aggiorna la proprietà
cassandra.replicaCount
inoverrides.yaml
. - Applica l'aggiornamento della configurazione.
- Ripeti questi passaggi per ciascun nodo da rimuovere.
- Elimina la richiesta di volume permanente o il volume, a seconda della configurazione del cluster.
Informazioni importanti
- Esegui questa attività su un nodo alla volta prima di passare al nodo successivo.
- Se qualsiasi nodo diverso da quello da dismettere non è integro, non continuare. Kubernetes non sarà in grado di eseguire il downgrade dei pod dal cluster.
- Fai sempre fare lo scale down o lo scale up di un fattore di tre nodi.
Prerequisiti
Prima di fare lo scale down del numero di nodi Cassandra nel ring, verifica che il cluster sia integro e che tutti i nodi siano attivi e in esecuzione, come illustrato nell'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
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 700.55 KiB 256 51.6% dc6b7faf-6866-4044-9ac9-1269ebd85dab ra-1 to UN 10.16.11.11 144.36 KiB 256 48.3% c7906366-6c98-4ff6-a4fd-17c596c33cf7 ra-1 UN 10.16.1.11 767.03 KiB 256 49.8% ddf221aa-80aa-497d-b73f-67e576ff1a23 ra-1 UN 10.16.5.13 193.64 KiB 256 50.9% 2f01ac42-4b6a-4f9e-a4eb-4734c24def95 ra-1 UN 10.16.8.15 132.42 KiB 256 50.6% a27f93af-f8a0-4c88-839f-2d653596efc2 ra-1
Dismetti i nodi Cassandra
-
Dismetti i nodi Cassandra dal cluster utilizzando il comando nodetool.
kubectl -n yourNamespace exec -it nodeName nodetool decommission
Ad esempio, questo comando rimuove
apigee-cassandra-5
, il nodo con il valore numerico più alto nel nome:kubectl -n apigee exec -it apigee-cassandra-5 nodetool decommission
- Attendi il completamento del ritiro e verifica che il cluster ora abbia un nodo in meno. Ad esempio:
kubectl -n yourNamespace exec -it nodeName 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 710.37 KiB 256 59.0% b02089d1-0521-42e1-bbed-900656a58b68 ra-1 UN 10.16.4.6 720.97 KiB 256 61.3% dc6b7faf-6866-4044-9ac9-1269ebd85dab ra-1 UN 10.16.1.11 777.11 KiB 256 58.9% ddf221aa-80aa-497d-b73f-67e576ff1a23 ra-1 UN 10.16.5.13 209.23 KiB 256 62.2% 2f01ac42-4b6a-4f9e-a4eb-4734c24def95 ra-1 UN 10.16.8.15 143.23 KiB 256 58.6% a27f93af-f8a0-4c88-839f-2d653596efc2 ra-1
- Aggiorna o aggiungi la proprietà
cassandra.replicaCount
nel fileoverrides.yaml
. Ad esempio, se il numero attuale di nodi è 6, modificalo in 5:cassandra: replicaCount: 5 # (n-1 5 in this example)
- Applica la modifica alla configurazione al cluster:
./apigeectl apply --datastore 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
- Ripeti i passaggi da 1 a 5 per ciascun nodo da rimuovere.
- Al termine del ritiro dei nodi, verifica che il valore
cassandra.replicaCount
corrisponda al numero di nodi restituiti dal comandonodetool status
.Ad esempio, se hai fatto lo scale down di Cassandra a tre nodi:
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 710.37 KiB 256 59.0% b02089d1-0521-42e1-bbed-900656a58b68 ra-1 UN 10.16.4.6 720.97 KiB 256 61.3% dc6b7faf-6866-4044-9ac9-1269ebd85dab ra-1 UN 10.16.5.13 209.23 KiB 256 62.2% 2f01ac42-4b6a-4f9e-a4eb-4734c24def95 ra-1
- Dopo aver ridimensionato il cluster Cassandra, assicurati di eliminare il pvc
(PersistentVolumeClaim) per assicurarti che il successivo evento di scale up non utilizzi lo stesso volume permanente e i dati creati in precedenza.
Trova 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, i seguenti PVC corrispondono ai tre nodi dismessi:
cassandra-data-apigee-cassandra-5
cassandra-data-apigee-cassandra-4
cassandra-data-apigee-cassandra-3
-
Elimina i file PVC:
kubectl -n yourNamespace delete pvc cassandra-data-apigee-cassandra-5 persistentvolumeclaim "cassandra-data-apigee-cassandra-5" deleted
kubectl -n yourNamespace delete pvc cassandra-data-apigee-cassandra-4 persistentvolumeclaim "cassandra-data-apigee-cassandra-4" deleted
kubectl -n yourNamespace delete pvc cassandra-data-apigee-cassandra-3 persistentvolumeclaim "cassandra-data-apigee-cassandra-3" deleted
-
Verifica che la PVC sia stata eliminata:
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
- Se utilizzi l'installazione di Anthos, elimina il volume permanente dal cluster Anthos
Kubernetes utilizzando la stessa sequenza.
Ottieni i nomi dei volumi permanenti:
kubectl get pv -n youNamespace NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-0675a0ff-81a3-11e9-8862-42010a8e014a 100Gi RWO Delete Bound apigee/cassandra-data-apigee-cassandra-default-4 apigee-gcepd 5h pvc-2956cb78-818d-11e9-8862-42010a8e014a 100Gi RWO Delete Bound apigee/cassandra-data-apigee-cassandra-default-1 apigee-gcepd 7h pvc-354afa95-81a3-11e9-8862-42010a8e014a 100Gi RWO Delete Bound apigee/cassandra-data-apigee-cassandra-default-5 apigee-gcepd 5h pvc-79de5407-8190-11e9-8862-42010a8e014a 100Gi RWO Delete Bound apigee/cassandra-data-apigee-cassandra-default-2 apigee-gcepd 7h pvc-d29ba265-81a2-11e9-8862-42010a8e014a 100Gi RWO Delete Bound apigee/cassandra-data-apigee-cassandra-default-3 apigee-gcepd 5h pvc-f9c2a5b9-818c-11e9-8862-42010a8e014a 100Gi RWO Delete Bound apigee/cassandra-data-apigee-cassandra-default-0 apigee-gcepd 7h
In questo esempio, i volumi seguenti corrispondono ai tre nodi dismessi:
- 5:
pvc-354afa95-81a3-11e9-8862-42010a8e014a
- 4:
pvc-0675a0ff-81a3-11e9-8862-42010a8e014a
- 3:
pvc-d29ba265-81a2-11e9-8862-42010a8e014a
- 5:
-
Elimina i volumi permanenti:
kubectl -n yourNamespace delete pv pvc-354afa95-81a3-11e9-8862-42010a8e014a
kubectl -n yourNamespace delete pv pvc-0675a0ff-81a3-11e9-8862-42010a8e014a
kubectl -n yourNamespace delete pv pvc-d29ba265-81a2-11e9-8862-42010a8e014a
-
Verifica che i volumi permanenti siano stati eliminati:
kubectl get pv -n youNamespace NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-2956cb78-818d-11e9-8862-42010a8e014a 100Gi RWO Delete Bound apigee/cassandra-data-apigee-cassandra-default-1 apigee-gcepd 7h pvc-79de5407-8190-11e9-8862-42010a8e014a 100Gi RWO Delete Bound apigee/cassandra-data-apigee-cassandra-default-2 apigee-gcepd 7h pvc-f9c2a5b9-818c-11e9-8862-42010a8e014a 100Gi RWO Delete Bound apigee/cassandra-data-apigee-cassandra-default-0 apigee-gcepd 7h