Scalabilità di Cassandra

Questo argomento illustra come fare lo scale up di Cassandra orizzontalmente e verticalmente e come fare lo scale up da Cassandra.

Scalabilità orizzontale di Cassandra

per lo scale up di Cassandra in orizzontale

  1. Assicurati che il pool di nodi apigee-data abbia capacità aggiuntiva, se necessario, prima di scalare Cassandra. Vedi anche Configurare pool di nodi dedicati.
  2. Imposta il valore dell'attributo cassandra.replicaCount di configurazione automatica nel file di override. Per informazioni su questa proprietà, vedi consulta il riferimento delle proprietà di configurazione. Vedi anche Gestire i componenti del piano di runtime.
  3. Applica le modifiche. Ad esempio:
    $APIGEE_HOME/apigeectl apply --datastore -f overrides/overrides.yaml

Scalabilità verticale di Cassandra

Questa sezione spiega come scalare i pod Cassandra verticalmente per con 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 Cassandra stateful, consigliamo di iniziare con 8 core CPU e 30 GB di la 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 la procedura descritta 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:

  1. Segui le istruzioni della piattaforma Kubernetes per aggiungere un nuovo pool di nodi al cluster. Supportato sono indicate nelle istruzioni di installazione.
  2. 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
    
  3. Aggiorna il file degli override per utilizzare il nuovo pool di nodi per Cassandra e aggiorna le risorse pod all'aumento del conteggio della CPU e delle dimensioni della memoria 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
    
  4. 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 offre archiviazione permanente per alcune entità Apigee sul piano di runtime. Per su Cassandra, consulta Informazioni il piano di runtime.

Cassandra è un servizio che richiede molte risorse e non deve essere implementato in un pod con altri ambienti ibridi i servizi di machine learning. A seconda del carico, ti conviene scalare il numero di nodi Cassandra nell'anello in un cluster Kubernetes.

Il processo generale per lo scale down di un anello Cassandra è:

  1. Dismetti un nodo Cassandra.
  2. Aggiorna la proprietà cassandra.replicaCount in overrides.yaml.
  3. Applica l'aggiornamento della configurazione.
  4. Ripeti questi passaggi per ciascun nodo da rimuovere.
  5. 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 procedere con al nodo successivo.
  • Se qualsiasi nodo diverso da quello dismesso è integro, non procedere. Kubernetes non sarà può 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 tutti i nodi sono 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

Dismissione dei nodi Cassandra

  1. 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
  2. Attendi il completamento del ritiro e verifica che il cluster ora ne abbia uno in meno nodo. 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
    
  3. Aggiorna o aggiungi la proprietà cassandra.replicaCount in overrides.yaml . Ad esempio, se il conteggio attuale dei nodi è 6, modificalo in 5:
    cassandra:
      replicaCount: 5 # (n-1 5 in this example)
  4. 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
  5. Verifica che tutti i restanti nodi Cassandra 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
    
    
  6. Ripeti i passaggi da 1 a 5 per ciascun nodo da rimuovere.
  7. Al termine del ritiro dei nodi, verifica che Il valore di cassandra.replicaCount equivale al numero di nodi restituiti dal comando nodetool 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
    
    
  8. Dopo aver ridimensionato il cluster Cassandra, assicurati di eliminare il pvc (PersistentVolumeClaim) per assicurarti che il successivo evento di scale up e usano 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
  9. Elimina i file pvcs:
    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
  10. Verifica che il PVC sia stato eliminato:
    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
  11. Se utilizzi l'installazione di Anthos, elimina il volume permanente da Anthos Kubernetes con 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
  12. 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
  13. 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