בנושא הזה נסביר איך להגדיל את Cassandra באופן אופקי ואנכי, ואיך להקטין את Cassandra.
הרחבת Cassandra באופן אופקי
כדי להרחיב את Cassandra באופן אופקי
- לפני שמבצעים שינוי גודל של Cassandra, צריך לוודא שלמאגר הצמתים
apigee-dataיש קיבולת נוספת, לפי הצורך. אפשר לעיין גם במאמר בנושא הגדרת מאגרי צמתים ייעודיים. - מגדירים את הערך של מאפיין התצורה
cassandra.replicaCountבקובץ השינויים. מידע על הנכס הזה זמין במאמר הסבר על מאפייני ההגדרה. מידע נוסף זמין במאמר בנושא ניהול רכיבים של מישור זמן הריצה. - מחילים את השינויים. לדוגמה:
$APIGEE_HOME/apigeectl apply --datastore -f overrides/overrides.yaml
שינוי קנה מידה אנכי של Cassandra
בקטע הזה מוסבר איך להגדיל את ה-pods של Cassandra באופן אנכי כדי להתאים לדרישות גבוהות יותר של CPU וזיכרון.
סקירה כללית
בפריסת ייצור היברידית של Apigee, מומלץ ליצור לפחות שני מאגרי צמתים נפרדים: אחד לשירותים עם שמירת מצב (Cassandra) ואחד לשירותים ללא שמירת מצב (זמן ריצה). לדוגמה, אפשר לעיין במאמר הדרישות של אשכול GKE לייצור.
במאגר הצמתים של Cassandra עם שמירת מצב, מומלץ להתחיל עם 8 ליבות CPU ו-30GB של זיכרון. אחרי שהקצאתם את מאגר הצמתים, אי אפשר לשנות את ההגדרות האלה. אפשר לעיין גם במאמר הגדרת Cassandra לסביבת ייצור.
אם אתם צריכים להגדיל את מספר ה-pods של Cassandra כדי לעמוד בדרישות גבוהות יותר של CPU וזיכרון, פועלים לפי השלבים שמתוארים בנושא הזה.
הגדלת מספר ה-pods של Cassandra
כדי להגדיל את השימוש במעבד ובזיכרון עבור מאגר הצמתים עם שמירת מצב שמשמש ל-Cassandra, פועלים לפי השלבים הבאים:
- פועלים לפי ההוראות של פלטפורמת Kubernetes כדי להוסיף מאגר צמתים חדש לאשכול. רשימת הפלטפורמות הנתמכות מופיעה בהוראות ההתקנה.
- מוודאים שמאגר הצמתים החדש מוכן:
kubectl get nodes -l NODE_POOL_LABEL_NAME=NODE_POOL_LABEL_VALUE
פקודה לדוגמה:
kubectl get nodes -l cloud.google.com/gke-nodepool=apigee-data-new
פלט לדוגמה:
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
- מעדכנים את קובץ ההחלפות כדי להשתמש במאגר הצמתים החדש של Cassandra, ומעדכנים את משאבי ה-Pod למספר ה-CPU המוגדל ולגודל הזיכרון שרוצים להשתמש בהם. לדוגמה, באשכול GKE, משתמשים בהגדרה שדומה להגדרה הבאה.
אם אתם משתמשים בפלטפורמת Kubernetes אחרת, אתם צריכים לשנות את הערך של
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לדוגמה:
nodeSelector: requiredForScheduling: true apigeeData: key: "cloud.google.com/gke-nodepool" value: "apigee-data-new" cassandra: resources: requests: cpu: 14 memory: 16Gi - מחילים את קובץ ההחלפות על האשכול:
$APIGEECTL_HOME/apigeectl apply -f ./overrides/overrides.yaml --datastore
אחרי שתשלימו את השלבים האלה, ה-pods של Cassandra יתחילו לעבור בהדרגה אל מאגר הצמתים החדש.
הקטנת הקיבולת של Cassandra
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-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
- בודקים אם יש מספיק נפח אחסון באשכול Cassandra כדי לתמוך בהקטנת הקיבולת. אחרי הקטנת הקיבולת, נפח האחסון של צומתי Cassandra לא צריך להיות מלא יותר מ-75%.
לדוגמה, אם באשכול יש 6 צמתים של Cassandra וכולם מלאים ב-50% בערך, הקטנת מספר הצמתים ל-3 תגרום לכך שכל שלושת הצמתים יהיו מלאים ב-100%, ולא יישאר מקום להמשך פעולה.
לעומת זאת, אם יש לכם 9 צמתים של Cassandra, שכל אחד מהם מלא ב-50% בערך, צמצום הקיבולת ל-6 צמתים יגרום לכך שכל אחד מהצמתים שיישארו יהיה מלא ב-75% בערך. אפשר להקטין את הרזולוציה.
- מעדכנים או מוסיפים את המאפיין
cassandra.replicaCountבקובץoverrides.yaml. לדוגמה, אם מספר הצמתים הנוכחי הוא 9, משנים אותו ל-6:cassandra: replicaCount: 6 #
- מחילים את השינוי בתצורה על האשכול:
./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
- מוודאים שכל צמתי Cassandra שנותרו פועלים:
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
- מוודאים שהערך של
cassandra.replicaCountשווה למספר הצמתים שמוחזרים על ידי הפקודהnodetool status.לדוגמה, אם הקטנתם את קנה המידה של Cassandra לשישה צמתים:
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
- אחרי שמקטינים את קבוצת Cassandra, מוודאים ש-PVC (PersistentVolumeClaim)
תואם לצמתי Cassandra שנותרו.
מקבלים את השמות של ה-PVC:
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
בדוגמה הזו לא אמורים להופיע pvcs שמתאימים לשלושת הצמתים שהוקטנו:
cassandra-data-apigee-cassandra-8cassandra-data-apigee-cassandra-7cassandra-data-apigee-cassandra-6