Apigee Hybrid משתמש בטבעת של צמתי Cassandra כ-StatefulSet. Cassandra מספקת אחסון מתמיד לישויות מסוימות של Apigee במישור זמן הריצה. מידע נוסף על Cassandra זמין במאמר מידע על מישור זמן הריצה.
Cassandra הוא שירות שדורש הרבה משאבים, ולכן לא מומלץ לפרוס אותו ב-Pod עם שירותים היברידיים אחרים. בהתאם לעומס, יכול להיות שתרצו להקטין את מספר צמתי Cassandra בטבעת באשכול.
התהליך הכללי להקטנת טבעת Cassandra הוא:
- הוצאה משימוש של צומת Cassandra אחד.
- מעדכנים את הנכס
cassandra.replicaCountב-overrides.yaml. - החלת עדכון ההגדרות האישיות.
- חוזרים על השלבים האלה לכל צומת שרוצים להסיר.
- מוחקים את דרישת הנפח המתמיד או את הנפח, בהתאם להגדרת האשכול.
מה כדאי לדעת
- מבצעים את המשימה הזו בצומת אחד בכל פעם לפני שממשיכים לצומת הבא.
- אם יש צומת לא תקין כלשהו מלבד הצומת שיוצא משימוש, אל תמשיכו. מערכת Kubernetes לא תוכל להקטין את מספר הפודים באשכול.
- תמיד מצמצמים או מרחיבים את הקיבולת בפקטור של שלושה צמתים.
דרישות מוקדמות
לפני שמקטינים את מספר הצמתים של 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
-
מוציאים את צמתי Cassandra מהשימוש באשכול באמצעות הפקודה nodetool.
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
- מעדכנים או מוסיפים את המאפיין
cassandra.replicaCountבקובץoverrides.yaml. לדוגמה, אם מספר הצמתים הנוכחי הוא 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