Topik ini membahas cara menskalakan Cassandra secara horizontal dan vertikal, serta cara menskalakan Cassandra.
Menskalakan Cassandra secara horizontal
Untuk meningkatkan skala Cassandra secara horizontal
- Pastikan kumpulan node
apigee-data
Anda memiliki kapasitas tambahan, sesuai kebutuhan, sebelum mengembangkan Cassandra. Lihat juga Mengonfigurasi kumpulan node khusus. - Tetapkan nilai
cassandra.replicaCount
dalam file penggantian. Untuk 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 setidaknya dua kumpulan node terpisah: satu untuk layanan stateful (Cassandra) dan satu lagi untuk layanan stateless (runtime). Misalnya, lihat persyaratan cluster produksi GKE.
Untuk kumpulan node Cassandra stateful, sebaiknya mulai dengan 8 core CPU dan 30 GB memori. 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 untuk meningkatkan CPU dan memori untuk kumpulan node stateful yang digunakan untuk Cassandra:
- Ikuti petunjuk platform Kubernetes Anda untuk menambahkan kumpulan node baru ke cluster. Didukung platform 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
- Perbarui file penggantian agar dapat menggunakan kumpulan node baru untuk Cassandra dan
memperbarui resource pod ke peningkatan jumlah CPU dan ukuran memori yang
ingin digunakan. Misalnya, untuk cluster GKE, gunakan konfigurasi yang mirip dengan berikut ini.
Jika menggunakan platform Kubernetes lain, Anda perlu menyesuaikan nilai
apigeeData.key
sesuai dengan: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 berpindah ke kumpulan node baru.
Menurunkan 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:
- Menonaktifkan satu node Cassandra.
- Perbarui properti
cassandra.replicaCount
dioverrides.yaml
. - Terapkan pembaruan konfigurasi.
- Ulangi langkah-langkah ini untuk setiap node yang ingin Anda hapus.
- 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-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
Menonaktifkan node Cassandra
-
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
- 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
- Perbarui atau tambahkan properti
cassandra.replicaCount
dioverrides.yaml
Anda . Misalnya, jika jumlah node saat ini adalah 6, ubahlah menjadi 5:cassandra: replicaCount: 5 # (n-1 5 in this example)
- Terapkan perubahan konfigurasi ke cluster Anda:
./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
- Pastikan semua node Cassandra yang tersisa 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
- Ulangi Langkah 1-5 untuk setiap node yang ingin dinonaktifkan.
- Setelah selesai menonaktifkan node, pastikan
Nilai
cassandra.replicaCount
sama dengan jumlah node yang ditampilkan oleh perintahnodetool status
.Misalnya, jika Anda menskalakan Cassandra menjadi tiga node:
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
- 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.
Dapatkan 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, pvc berikut sesuai dengan tiga node yang dinonaktifkan:
cassandra-data-apigee-cassandra-5
cassandra-data-apigee-cassandra-4
cassandra-data-apigee-cassandra-3
-
Hapus 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
-
Pastikan pvc telah dihapus:
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
- Jika Anda menggunakan penginstalan Anthos, hapus Volume persisten dari Anthos
Cluster Kubernetes menggunakan urutan yang sama.
Dapatkan nama volume persisten:
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
Dalam contoh ini, volume berikut sesuai dengan tiga node yang dinonaktifkan:
- 5.
pvc-354afa95-81a3-11e9-8862-42010a8e014a
- 4.
pvc-0675a0ff-81a3-11e9-8862-42010a8e014a
- 3.
pvc-d29ba265-81a2-11e9-8862-42010a8e014a
- 5.
-
Hapus volume persisten:
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
-
Pastikan volume persisten telah dihapus:
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