Topik ini membahas cara meningkatkan skala Cassandra secara horizontal dan vertikal, dan cara memperkecil skala Cassandra.
Penskalaan Cassandra secara horizontal
Untuk meningkatkan skala Cassandra secara horizontal
- Pastikan kumpulan node
apigee-data
Anda memiliki kapasitas tambahan sesuai kebutuhan sebelum menskalakan Cassandra. Lihat juga Mengonfigurasi node pool khusus. - Tetapkan nilai properti konfigurasi
cassandra.replicaCount
dalam file penggantian Anda. Untuk mendapatkan informasi tentang properti ini, lihat Referensi properti konfigurasi. Lihat juga Mengelola komponen bidang runtime. - 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 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 skala pod Cassandra
Ikuti langkah-langkah berikut guna meningkatkan CPU dan memori untuk kumpulan node stateful yang digunakan untuk Cassandra:
- Ikuti petunjuk platform Kubernetes untuk menambahkan kumpulan node baru ke cluster. Platform yang didukung tercantum dalam petunjuk penginstalan.
- 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
- Update file penggantian Anda agar dapat menggunakan kumpulan node baru untuk Cassandra dan
mengupdate resource pod ke peningkatan jumlah CPU dan ukuran memori yang ingin
Anda gunakan. Misalnya, untuk cluster GKE, gunakan konfigurasi yang mirip dengan berikut ini.
Jika menggunakan platform Kubernetes lain, Anda perlu menyesuaikan nilai
apigeeData.key
: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
- 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.
Mengurangi Cassandra
Apigee Hybrid menggunakan cincin node Cassandra sebagai StatefulSet. Cassandra menyediakan penyimpanan persisten untuk entity Apigee tertentu di bidang runtime. Untuk informasi selengkapnya tentang Cassandra, lihat Tentang bidang runtime.
Cassandra adalah layanan yang membutuhkan banyak resource dan tidak boleh di-deploy pada pod dengan layanan hybrid lainnya. Bergantung pada bebannya, Anda mungkin ingin menurunkan jumlah node Cassandra dalam ring di cluster Anda.
Proses umum untuk memperkecil skala ring Cassandra adalah:
- Pastikan cluster Cassandra responsif dan memiliki penyimpanan yang cukup untuk mendukung penurunan skala.
- Perbarui properti
cassandra.replicaCount
dioverrides.yaml
. - Terapkan pembaruan konfigurasi.
- Hapus klaim atau volume 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 perkecil atau naikkan skala hingga faktor tiga node.
Cassandra Downscale
- Validasi bahwa cluster responsif dan semua node aktif dan berjalan, seperti yang ditunjukkan dalam 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
- Menentukan apakah cluster Cassandra memiliki penyimpanan yang cukup untuk mendukung penurunan skala. Setelah memperkecil
ukuran penyimpanan, node Cassandra tidak akan memiliki lebih dari 75% penyimpanan.
Misalnya, jika cluster Anda memiliki 6 node Cassandra dan semuanya sekitar 50% penuh, pengurangan skala ke tiga node akan menyisakan ketiganya sebesar 100%, sehingga tidak akan ada ruang untuk operasi lanjutan.
Namun, jika Anda memiliki 9 node Cassandra, semuanya sekitar 50% penuh, penurunan skala menjadi 6 node akan membuat setiap node yang tersisa kurang lebih 75% penuh. Anda dapat memperkecil skala.
- Perbarui atau tambahkan properti
cassandra.replicaCount
di fileoverrides.yaml
Anda. Misalnya, jika jumlah node saat ini adalah 9, ubah menjadi 6:cassandra: replicaCount: 6 #
- 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
- 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
- Pastikan nilai
cassandra.replicaCount
sama dengan jumlah node yang ditampilkan oleh perintahnodetool status
.Misalnya, jika Anda memperkecil skala 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
- 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 diturunkan skalanya:
cassandra-data-apigee-cassandra-8
cassandra-data-apigee-cassandra-7
cassandra-data-apigee-cassandra-6