Apigee Hybrid 會將 Cassandra 節點環用為 StatefulSet。Cassandra 會為執行階段平面上的特定 Apigee 實體提供永久儲存空間。如要進一步瞭解 Cassandra,請參閱「關於執行階段平面」。
Cassandra 是資源密集型服務,不應與任何其他混合型服務一併部署至 Pod 中。視負載而定,您可能需要調整叢集中環中 Cassandra 節點的數量。
縮減 Cassandra 環的一般程序如下:
- 停用一個 Cassandra 節點。
- 更新
overrides.yaml
中的cassandra.replicaCount
屬性。 - 套用設定更新。
- 針對要移除的每個節點重複執行這些步驟。
- 根據叢集設定,刪除永久磁碟區要求或磁碟區。
注意事項
- 請一次在一個節點上執行這項工作,然後再繼續執行下一個節點。
- 如果除了要停用的節點以外的任何節點處於不健康狀態,請勿繼續操作。Kubernetes 將無法從叢集中縮減 Pod。
- 請務必以三個節點為單位進行縮放。
必要條件
在環中縮減 Cassandra 節點數量之前,請先確認叢集是否正常運作,且所有節點都已啟動並運作,如以下範例所示:
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
停用 Cassandra 節點
-
使用 nodetool 指令,從叢集中停用 Cassandra 節點。
kubectl -n yourNamespace exec -it nodeName nodetool decommission
舉例來說,這個指令會停用
apigee-cassandra-5
,也就是名稱中數值最高的節點:kubectl -n apigee exec -it apigee-cassandra-5 nodetool decommission
- 等待停用作業完成,並確認叢集現在少了一個節點。例如:
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
- 在
overrides.yaml
檔案中更新或新增cassandra.replicaCount
屬性。舉例來說,如果目前的節點數為 6,請將其改為 5:cassandra: replicaCount: 5 # (n-1)
- 將設定變更套用至叢集。例如:
./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
- 確認所有剩餘的 Cassandra 節點皆在執行:
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
- 針對要停用的每個節點重複執行步驟 1 到 5。
- 停用節點後,請確認
cassandra.replicaCount
值等於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
- 縮減 Cassandra 叢集後,請務必刪除 PVC (PersistentVolumeClaim),確保下次縮放事件不會使用相同的永久磁碟區和先前建立的資料。
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
- 如果您使用 Anthos 安裝作業,請一併從 Anthos Kubernetes 叢集中刪除永久性磁碟。
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