Menskalakan Cassandra

Topik ini membahas cara meningkatkan skala Cassandra secara horizontal dan vertikal, dan cara memperkecil skala Cassandra.

Mengukur Cassandra secara horizontal

Untuk meningkatkan skala Cassandra secara horizontal

  1. Pastikan kumpulan node apigee-data Anda memiliki kapasitas tambahan, sesuai kebutuhan, sebelum menskalakan Cassandra. Lihat juga Mengonfigurasi node pool khusus.
  2. Tetapkan nilai properti konfigurasi cassandra.replicaCount di file penggantian Anda. Untuk mendapatkan informasi tentang properti ini, lihat Referensi properti konfigurasi. Lihat juga Mengelola komponen bidang runtime.
  3. Terapkan perubahan. Contoh:
    $APIGEE_HOME/apigeectl apply --datastore -f overrides/overrides.yaml

Menskalakan Cassandra secara vertikal

Bagian ini menjelaskan cara menskalakan pod Cassandra secara vertikal untuk mengakomodasi kebutuhan CPU dan memori yang lebih tinggi.

Ringkasan

Untuk deployment produksi hybrid Apigee, sebaiknya buat minimal dua node pool terpisah: satu untuk layanan stateful (Cassandra) dan satu untuk layanan stateless (runtime). Misalnya, lihat persyaratan cluster produksi GKE.

Untuk kumpulan node Cassandra stateful, sebaiknya mulai dengan 8 core CPU dan memori sebesar 30 GB. Setelah kumpulan node disediakan, setelan ini tidak dapat diubah. Lihat juga Mengonfigurasi Cassandra untuk produksi.

Jika Anda perlu meningkatkan skala pod Cassandra untuk mengakomodasi kebutuhan CPU dan memori yang lebih tinggi, ikuti langkah-langkah yang dijelaskan dalam topik ini.

Meningkatkan pod Cassandra

Ikuti langkah-langkah berikut untuk meningkatkan CPU dan memori untuk kumpulan node stateful yang digunakan untuk Cassandra:

  1. Ikuti petunjuk platform Kubernetes untuk menambahkan kumpulan node baru ke cluster. Platform yang didukung tercantum dalam petunjuk penginstalan.
  2. Pastikan kumpulan node baru sudah siap:
    kubectl get nodes -l NODE_POOL_LABEL_NAME=NODE_POOL_LABEL_VALUE

    Contoh perintah:

    kubectl get nodes -l cloud.google.com/gke-nodepool=apigee-data-new

    Contoh output:

    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. Perbarui file penggantian Anda agar dapat menggunakan kumpulan node baru untuk Cassandra dan perbarui resource pod ke peningkatan jumlah CPU dan ukuran memori yang ingin Anda gunakan. Sebagai contoh, untuk cluster GKE, gunakan konfigurasi yang mirip dengan berikut ini. Jika menggunakan platform Kubernetes lain, Anda perlu menyesuaikan nilai apigeeData.key sebagaimana mestinya:
    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
    

    Contoh:

    nodeSelector:
      requiredForScheduling: true
      apigeeData:
        key: "cloud.google.com/gke-nodepool"
        value: "apigee-data-new"
    
    cassandra:
      resources:
        requests:
          cpu: 14
          memory: 16Gi
    
  4. Terapkan file penggantian ke cluster:
    $APIGEECTL_HOME/apigeectl apply -f ./overrides/overrides.yaml --datastore

Setelah Anda menyelesaikan langkah-langkah ini, pod Cassandra akan mulai bergulir ke kumpulan node baru.

Menurunkan skala Cassandra

Apigee Hybrid menggunakan cincin node Cassandra sebagai StatefulSet. Cassandra menyediakan penyimpanan persisten untuk entity Apigee tertentu di bidang runtime. Untuk mengetahui informasi selengkapnya tentang Cassandra, lihat Tentang bidang runtime.

Cassandra adalah layanan intensif resource dan tidak boleh di-deploy pada pod dengan layanan hybrid lainnya. Bergantung pada bebannya, Anda mungkin ingin menskalakan jumlah node Cassandra dalam ring ke bawah di cluster Anda.

Proses umum untuk memperkecil skala ring Cassandra adalah:

  1. Pastikan cluster Cassandra responsif dan memiliki penyimpanan yang cukup untuk mendukung penurunan skala.
  2. Perbarui properti cassandra.replicaCount di overrides.yaml.
  3. Terapkan update konfigurasi.
  4. Hapus volume atau klaim volume persisten, bergantung pada konfigurasi cluster Anda.

Hal yang perlu diketahui

  • Jika ada node selain node yang akan dinonaktifkan tidak responsif, jangan lanjutkan. Kubernetes tidak akan dapat menurunkan skala pod dari cluster.
  • Selalu kurangi atau tingkatkan skala dengan faktor tiga node.

Cassandra Downscale

  1. Validasi bahwa cluster responsif dan semua node telah aktif dan berjalan, seperti yang ditunjukkan pada contoh berikut:
     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-f1a572367e6f  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
    
  2. Tentukan apakah cluster Cassandra memiliki penyimpanan yang cukup untuk mendukung penurunan skala. Setelah memperkecil skala, node Cassandra tidak akan dapat mengisi lebih dari 75% penyimpanannya.

    Misalnya, jika cluster Anda memiliki 6 node Cassandra dan semuanya sekitar 50% penuh, menurunkan skala ke tiga node akan membuat ketiga node tersebut tetap 100%, yang tidak akan menyisakan ruang untuk operasi berkelanjutan.

    Namun, jika Anda memiliki 9 node Cassandra, semuanya sekitar 50% penuh, penurunan skala menjadi 6 node akan membuat setiap node yang tersisa sekitar 75% penuh. Anda dapat menurunkan skala.

  3. Perbarui atau tambahkan properti cassandra.replicaCount di file overrides.yaml Anda. Misalnya, jika jumlah node saat ini adalah 9, ubah menjadi 6:
    cassandra:
      replicaCount: 6 # 
  4. Terapkan perubahan konfigurasi ke cluster Anda:
    ./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
  5. Pastikan semua node Cassandra yang tersisa sedang berjalan:
    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
    
    
  6. Verifikasi bahwa nilai cassandra.replicaCount sama dengan jumlah node yang ditampilkan oleh perintah nodetool status.

    Misalnya, jika Anda menskalakan Cassandra menjadi enam node:

    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    1055.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
    
    
  7. Setelah cluster Cassandra diturunkan skalanya, pastikan pvcs (PersistentVolumeClaim) sesuai dengan node Cassandra yang tersisa.

    Dapatkan nama-nama pvcs:

    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

    Dalam contoh ini, Anda tidak akan melihat pvcs yang sesuai dengan tiga node yang diskalakan ke bawah:

    • cassandra-data-apigee-cassandra-8
    • cassandra-data-apigee-cassandra-7
    • cassandra-data-apigee-cassandra-6