Turunkan skala Cassandra

Apigee Hybrid menggunakan lingkaran node Cassandra sebagai StatefulSet. Kassandra menyediakan penyimpanan persisten untuk entity Apigee tertentu di bidang runtime. Sebagai informasi lebih lanjut tentang Cassandra, lihat Tentang bidang runtime.

Cassandra adalah layanan intensif resource dan tidak boleh di-deploy pada pod dengan hybrid lainnya layanan IT perusahaan mereka. Tergantung pada bebannya, Anda mungkin ingin memperkecil jumlah {i>node<i} Cassandra di cincin di .

Proses umum untuk memperkecil skala cincin Cassandra adalah:

  1. Menonaktifkan satu node Cassandra.
  2. Perbarui properti cassandra.replicaCount di overrides.yaml.
  3. Terapkan pembaruan konfigurasi.
  4. Ulangi langkah-langkah ini untuk setiap node yang ingin Anda hapus.
  5. Hapus volume atau klaim volume persisten, bergantung pada konfigurasi cluster Anda.

Yang perlu Anda ketahui

  • Lakukan tugas ini pada satu node pada satu waktu sebelum melanjutkan ke node berikutnya.
  • Jika ada node selain node yang akan dihentikan berarti tidak sehat, jangan lanjutkan. Kubernetes tidak akan mampu memperkecil skala pod dari cluster.
  • Selalu turunkan atau tingkatkan skala dengan faktor tiga node.

Prasyarat

Sebelum Anda memperkecil jumlah node Cassandra di dalam cincin, validasi apakah cluster tersebut responsif dan semua node aktif dan berjalan, seperti yang ditunjukkan contoh berikut:

 kubectl get pods -n yourNamespace -l app=apigee-cassandra
NAME                 READY   STATUS    RESTARTS   AGE
apigee-cassandra-0   1/1     Running   0          2h
apigee-cassandra-1   1/1     Running   0          2h
apigee-cassandra-2   1/1     Running   0          2h
apigee-cassandra-3   1/1     Running   0          16m
apigee-cassandra-4   1/1     Running   0          14m
apigee-cassandra-5   1/1     Running   0          13m
kubectl -n yourNamespace exec -it apigee-cassandra-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

Menonaktifkan node Cassandra

  1. Hentikan node Cassandra dari cluster menggunakan perintah nodetool.
    kubectl -n yourNamespace exec -it nodeName nodetool decommission

    Misalnya, perintah ini menghentikan apigee-cassandra-5, node dengan nilai angka tertinggi dalam nama:

    kubectl -n apigee exec -it apigee-cassandra-5 nodetool decommission
  2. Tunggu hingga penonaktifan selesai, lalu pastikan cluster sekarang memiliki lebih sedikit {i>node<i}. Contoh:
    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. Perbarui atau tambahkan properti cassandra.replicaCount di overrides.yaml Anda . Misalnya, jika jumlah node saat ini adalah 6, ubahlah menjadi 5:
    cassandra:
      replicaCount: 5 # (n-1)
  4. Terapkan perubahan konfigurasi ke cluster Anda. Contoh:
    ./apigeectl apply -v beta2 -c cassandra
    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 berjalan:
    kubectl get pods -n yourNamespace -l app=apigee-cassandra
    NAME                 READY   STATUS    RESTARTS   AGE
    apigee-cassandra-0   1/1     Running   0          3h
    apigee-cassandra-1   1/1     Running   0          3h
    apigee-cassandra-2   1/1     Running   0          2h
    apigee-cassandra-3   1/1     Running   0          25m
    apigee-cassandra-4   1/1     Running   0          24m
    
    
  6. Ulangi Langkah 1-5 untuk setiap node yang ingin dinonaktifkan.
  7. Setelah selesai menonaktifkan node, pastikan Nilai cassandra.replicaCount sama dengan jumlah node yang ditampilkan oleh perintah nodetool status.
    kubectl -n yourNamespace exec -it apigee-cassandra-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.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
    
    
  8. Setelah cluster Cassandra diperkecil, pastikan untuk menghapus pvc (PersistentVolumeKlaim) untuk memastikan peristiwa peningkatan skala berikutnya tidak terjadi gunakan volume Persisten yang sama dan data yang dibuat sebelumnya.
    kubectl get pvc -n yourNamespace
    NAME                                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    cassandra-data-apigee-cassandra-0   Bound    pvc-f9c2a5b9-818c-11e9-8862-42010a8e014a   100Gi      RWO            apigee-gcepd   7h
    cassandra-data-apigee-cassandra-1   Bound    pvc-2956cb78-818d-11e9-8862-42010a8e014a   100Gi      RWO            apigee-gcepd   7h
    cassandra-data-apigee-cassandra-2   Bound    pvc-79de5407-8190-11e9-8862-42010a8e014a   100Gi      RWO            apigee-gcepd   7h
    cassandra-data-apigee-cassandra-3   Bound    pvc-d29ba265-81a2-11e9-8862-42010a8e014a   100Gi      RWO            apigee-gcepd   5h
    cassandra-data-apigee-cassandra-4   Bound    pvc-0675a0ff-81a3-11e9-8862-42010a8e014a   100Gi      RWO            apigee-gcepd   5h
    cassandra-data-apigee-cassandra-5   Bound    pvc-354afa95-81a3-11e9-8862-42010a8e014a   100Gi      RWO            apigee-gcepd   5h
    kubectl -n yourNamespace delete pvc cassandra-data-apigee-cassandra-5
    persistentvolumeclaim "cassandra-data-apigee-cassandra-5" deleted
    kubectl get pvc -n yourNamespace
    NAME                                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    cassandra-data-apigee-cassandra-0   Bound    pvc-f9c2a5b9-818c-11e9-8862-42010a8e014a   100Gi      RWO            apigee-gcepd   7h
    cassandra-data-apigee-cassandra-1   Bound    pvc-2956cb78-818d-11e9-8862-42010a8e014a   100Gi      RWO            apigee-gcepd   7h
    cassandra-data-apigee-cassandra-2   Bound    pvc-79de5407-8190-11e9-8862-42010a8e014a   100Gi      RWO            apigee-gcepd   7h
    cassandra-data-apigee-cassandra-3   Bound    pvc-d29ba265-81a2-11e9-8862-42010a8e014a   100Gi      RWO            apigee-gcepd   5h
    cassandra-data-apigee-cassandra-4   Bound    pvc-0675a0ff-81a3-11e9-8862-42010a8e014a   100Gi      RWO            apigee-gcepd   5h
  9. Jika Anda menggunakan penginstalan Anthos, hapus juga Volume persisten dari cluster Kubernetes Anthos.
    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-4   apigee-gcepd            5h
    pvc-2956cb78-818d-11e9-8862-42010a8e014a   100Gi      RWO            Delete           Bound    apigee/cassandra-data-apigee-cassandra-1   apigee-gcepd            7h
    pvc-354afa95-81a3-11e9-8862-42010a8e014a   100Gi      RWO            Delete           Bound    apigee/cassandra-data-apigee-cassandra-5   apigee-gcepd            5h
    pvc-79de5407-8190-11e9-8862-42010a8e014a   100Gi      RWO            Delete           Bound    apigee/cassandra-data-apigee-cassandra-2   apigee-gcepd            7h
    pvc-d29ba265-81a2-11e9-8862-42010a8e014a   100Gi      RWO            Delete           Bound    apigee/cassandra-data-apigee-cassandra-3   apigee-gcepd            5h
    pvc-f9c2a5b9-818c-11e9-8862-42010a8e014a   100Gi      RWO            Delete           Bound    apigee/cassandra-data-apigee-cassandra-0   apigee-gcepd            7h
    kubectl -n yourNamespace delete pv pvc-354afa95-81a3-11e9-8862-42010a8e014a