במאמר הזה מוסבר איך לבצע התאמה לעומס של קבוצת מופעי מכונה מנוהלים (MIG) על סמך קיבולת ההגשה של מאזן עומסים של אפליקציות (ALB) חיצוני או מאזן עומסים של אפליקציות (ALB) פנימי. כלומר, המערכת מוסיפה או מסירה מכונות וירטואליות בקבוצה כשהמערכת לאיזון עומסים מציינת שהקבוצה הגיעה לחלק שניתן להגדרה של הקיבולת המלאה שלה, כאשר הקיבולת המלאה מוגדרת על ידי קיבולת היעד של מצב האיזון שנבחר בקבוצת המכונות לקצה העורפי.
אפשר גם לשנות את קנה המידה של קבוצת MIG על סמך ניצול ה-CPU או מדדי מעקב.
מגבלות
אתם יכולים להגדיר שינוי אוטומטי של גודל קבוצת מופעי מכונה מנוהלים על סמך קיבולת ההגשה של מאזן עומסים חיצוני של אפליקציות ושל מאזן עומסים פנימי של אפליקציות. אין תמיכה בסוגים אחרים של מאזני עומסים.
לפני שמתחילים
- מעיינים במגבלות של המידרוג האוטומטי.
- מידע בסיסי על התאמה אוטומטית לעומס
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא התהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים האלה:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים Google Cloud ולממשקי ה-API, לא צריך להגדיר אימות.
gcloud
-
התקינו את ה-CLI של Google Cloud. אחר כך, מאתחלים את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud initאם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
- הגדרת אזור ותחום כברירת מחדל
REST
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.
התקינו את ה-CLI של Google Cloud.
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .
התאמה לעומס (scaling) על סמך קיבולת ההגשה של איזון עומסים ב-HTTP(S)
ב-Compute Engine יש תמיכה באיזון עומסים בקבוצות של מכונות. אפשר להשתמש בהתאמה אוטומטית לעומס בשילוב עם איזון עומסים, על ידי הגדרת מידרוג אוטומטי שמשתנה בהתאם לעומס על המכונות.
מאזן עומסים חיצוני או פנימי מסוג HTTP(S) מחלק בקשות לשירותי קצה עורפי בהתאם למפת ה-URL שלו. מאזן העומסים יכול לכלול שירותים לקצה העורפי, שכל אחד מהם תומך בקצה העורפי של קבוצת מכונות או בקבוצה של נקודות קצה ברשת (NEG). כשבק-אנד הוא קבוצה של מכונות, מאזן העומסים מסוג HTTP(S) מציע שני מצבי איזון: UTILIZATION ו-RATE. באמצעות UTILIZATION, אפשר לציין יעד מקסימלי לניצול הממוצע של ה-backend של מופעים בקבוצת המופעים. ב-RATE, צריך לציין מספר יעד של בקשות לשנייה על בסיס כל מופע או על בסיס כל קבוצה. (רק קבוצות של מכונות אזוריות תומכות בהגדרת קצב מקסימלי לכל הקבוצה. קבוצות מופעי מכונה מנוהלים אזוריים לא תומכות בהגדרה של קצב מקסימלי לכל קבוצה).
מצב האיזון וקיבולת היעד שאתם מציינים מגדירים את התנאים שבהם Google Cloud קובע מתי מכונה וירטואלית בעורף המערכת נמצאת בקיבולת מלאה. Google Cloud מנסה לשלוח תעבורה למכונות וירטואליות תקינות שיש להן קיבולת שנותרה. אם כל המכונות הווירטואליות כבר הגיעו לקיבולת המקסימלית, המערכת חורגת משיעור הניצול או מהקצב שהוגדרו כיעד.
כשמצרפים את המידרוג האוטומטי לקצה העורפי של קבוצת מכונות של מאזן עומסים מסוג HTTP(S), המידרוג האוטומטי משנה את הגודל של קבוצת מופעי מכונה מנוהלים כדי לשמור על חלק מקיבולת השירות של איזון העומסים.
לדוגמה, נניח שקיבולת השירות של איזון העומסים בקבוצת מופעי מכונה מנוהלים מוגדרת כ-100 RPS לכל מכונה. אם יוצרים מידרוג אוטומטי עם מדיניות איזון עומסים מסוג HTTP(S) ומגדירים אותו לשמירה על רמת ניצול יעד של 0.8 או 80%, המידרוג האוטומטי מוסיף או מסיר מכונות מקבוצת מופעי מכונה מנוהלים כדי לשמור על 80% מיכולת ההגשה, או 80 בקשות לשנייה לכל מכונה.
הדיאגרמה הבאה מציגה איך המידרוג האוטומטי פועל עם קבוצת מופעי מכונה מנוהלים ושירות לקצה העורפי:
maxRatePerInstance.
הגדרות רלוונטיות של איזון עומסים
אתם יכולים להגדיר אחת משלוש אפשרויות לקיבולת ההצגה של איזון העומסים. כשיוצרים את הקצה העורפי בפעם הראשונה, אפשר לבחור בין ניצול מקסימלי של הקצה העורפי, מספר מקסימלי של בקשות לשנייה לכל מכונה או מספר מקסימלי של בקשות לשנייה לכל הקבוצה. התאמה אוטומטית לעומס פועלת רק עם ניצול מקסימלי של קצה עורפי ומספר מקסימלי של בקשות לשנייה/מכונה, כי אפשר לשלוט בערך של ההגדרות האלה על ידי הוספה או הסרה של מכונות. לדוגמה, אם הגדרתם בק-אנד לטיפול ב-10 בקשות לשנייה לכל מכונה, והמידרוג האוטומטי מוגדר לשמירה על 80% מהקצב הזה, אז המידרוג האוטומטי יכול להוסיף או להסיר מכונות כשהבקשות לשנייה לכל מכונה משתנות.
התאמה אוטומטית לעומס לא פועלת עם ההגדרה 'בקשות מקסימליות לכל קבוצה', כי ההגדרה הזו לא תלויה במספר המכונות בקבוצת המכונות. מאזן העומסים שולח באופן רציף את המספר המקסימלי של בקשות לכל קבוצה לקבוצת המופעים, בלי קשר למספר המופעים בקבוצה.
לדוגמה, אם הגדרתם את הבק-אנד לטפל ב-100 בקשות לכל היותר לקבוצה בכל שנייה, מאזן העומסים ישלח 100 בקשות לשנייה לקבוצה, בין אם בקבוצה יש שתי מכונות או 100 מכונות. אי אפשר לשנות את הערך הזה, ולכן התאמה אוטומטית לעומס לא פועלת עם הגדרת איזון עומסים שמשתמשת במספר המקסימלי של בקשות לשנייה לכל קבוצה.
הפעלה של התאמה אוטומטית לעומס (autoscaling) על סמך קיבולת ההגשה של איזון העומסים
כדי להפעיל התאמה לעומס (autoscaling) על סמך קיבולת ההצגה של איזון העומסים, צריך להשתמש באחת מהאפשרויות הבאות.
המסוף
- נכנסים לדף Instance groups במסוף Google Cloud .
- אם יש לכם קבוצת מופעים, בוחרים אותה ולוחצים על עריכה. אם אין לכם קבוצת מופעים, לוחצים על Create instance group.
- לוחצים על הקטע Group size & autoscaling כדי להרחיב אותו.
- ברשימה Autoscaling mode, מוודאים שהאפשרות On: add and remove instances to the group מסומנת.
- מציינים את המספר המינימלי והמקסימלי של מופעים שרוצים שהכלי להתאמה אוטומטית לעומס ייצור בקבוצה הזו.
- בקטע אותות של התאמה אוטומטית לעומס, לוחצים על הוספת אות.
- מגדירים את סוג האות לשימוש באיזון עומסים של HTTP.
מזינים את הערך של Target HTTP load balancing utilization באחוזים. לדוגמה, כדי להגדיר ניצול של 60% באיזון עומסי HTTP, מזינים
60.בשדה Initialization period אפשר להגדיר את תקופת האתחול, שמציינת למידרוג האוטומטי כמה זמן נדרש לאתחול האפליקציה. ציון תקופת אתחול מדויקת משפר את ההחלטות של המידרוג האוטומטי. לדוגמה, כשמגדילים את הקיבולת, הכלי לשינוי גודל אוטומטי מתעלם מנתונים של מכונות וירטואליות שעדיין נמצאות בתהליך אתחול, כי יכול להיות שהמכונות הווירטואליות האלה עדיין לא מייצגות שימוש רגיל באפליקציה. תקופת האתחול שמוגדרת כברירת מחדל היא 60 שניות.
שומרים את השינויים.
gcloud
כדי להפעיל קנה מידה אוטומטי שמתבסס על קיבולת ההגשה, משתמשים בפקודת המשנה set-autoscaling. לדוגמה, הפקודה הבאה יוצרת מידרוג אוטומטי שמשנה את גודל קבוצת מופעי מכונה מנוהלים כדי לשמור על 60% מיכולת ההצגה. כשיוצרים התאמה אוטומטית לעומס, צריך להשתמש גם בפרמטר --target-load-balancing-utilization וגם בפרמטר --max-num-replicas:
gcloud compute instance-groups managed set-autoscaling example-managed-instance-group \
--max-num-replicas 20 \
--target-load-balancing-utilization 0.6 \
--cool-down-period 90 \
--stabilization-period 240
אפשר להגדיר את הדגלים הבאים כדי לשלוט בהתאמה האוטומטית לעומס:
-
אפשר להשתמש בדגל
--cool-down-periodכדי להגדיר את תקופת האתחול, שמציינת למנגנון שינוי הגודל האוטומטי כמה זמן לוקח לאתחל את האפליקציה. הגדרת תקופת אתחול מדויקת משפרת את ההחלטות של הכלי לשינוי גודל אוטומטי. לדוגמה, כשמגדילים את הקיבולת, הכלי לשינוי גודל אוטומטי מתעלם מנתונים של מכונות וירטואליות שעדיין נמצאות בתהליך אתחול, כי יכול להיות שהמכונות הווירטואליות האלה עדיין לא מייצגות שימוש רגיל באפליקציה. תקופת האתחול שמוגדרת כברירת מחדל היא 60 שניות. -
אפשר להשתמש בדגל
--stabilization-periodכדי להגדיר את תקופת הייצוב, שקובעת את משך הזמן שבו ה-MIG יצטמצם. תקופת ייצוב קצרה יותר מצביעה על מחיקה מהירה יותר של מכונות וירטואליות לצורך הגדלת הקיבולת. הערך צריך להיות בין `0` שניות ל-`3600` שניות. ערך ברירת המחדל הוא 600 שניות. מידע נוסף זמין במאמר בנושא שיטות מומלצות לתקופת ייצוב.
כדי לוודא שהמידרוג האוטומטי נוצר בהצלחה, אפשר להשתמש בפקודת-המשנה instance-groups managed describe:
gcloud compute instance-groups managed describe example-managed-instance-group
בחומרי העזר של gcloud תוכלו למצוא את רשימת הפקודות והדגלים של gcloud.
REST
כדי ליצור מידרוג אוטומטי, משתמשים ב-method autoscalers.insert לקבוצת MIG אזורית או ב-method regionAutoscalers.insert לקבוצת MIG בכמה אזורים.
בדוגמה הבאה נוצרת קבוצת מופעים מנוהלת (MIG) עם קנה מידה אוטומטי באזור מסוים:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers
גוף הבקשה צריך להכיל את השדות name, target ו-autoscalingPolicy. צריך להגדיר את loadBalancingUtilization ב-autoscalingPolicy.
אופציונלי: מגדירים את השדות הבאים כדי לשלוט בהתאמה אוטומטית לעומס:
-
אפשר להשתמש בשדה
coolDownPeriodSecכדי להגדיר את תקופת האתחול, שבה מוגדר למנגנון לשינוי גודל המשאבים כמה זמן לוקח לאתחל את האפליקציה. הגדרת תקופת אתחול מדויקת משפרת את ההחלטות של הכלי לשינוי גודל אוטומטי. לדוגמה, כשמגדילים את הקיבולת, הכלי לשינוי גודל אוטומטי מתעלם מנתונים של מכונות וירטואליות שעדיין נמצאות בתהליך אתחול, כי יכול להיות שהמכונות הווירטואליות האלה עדיין לא מייצגות שימוש רגיל באפליקציה. תקופת האתחול שמוגדרת כברירת מחדל היא 60 שניות. -
אתם יכולים להשתמש בשדה
stabilizationPeriodSecכדי להגדיר את תקופת הייצוב, שקובעת את משך הזמן שבו קבוצת ה-MIG תצמצם את המשאבים. תקופת ייצוב קצרה יותר מצביעה על מחיקה מהירה יותר של מכונות וירטואליות לצורך הגדלת הקיבולת. הערך צריך להיות בין 0 שניות ל-3,600 שניות. ערך ברירת המחדל הוא 600 שניות. מידע נוסף זמין במאמר בנושא שיטות מומלצות לתקופת ייצוב.
{
"name": "example-autoscaler",
"target": "zones/us-central1-f/instanceGroupManagers/example-managed-instance-group",
"autoscalingPolicy": {
"maxNumReplicas": 20,
"loadBalancingUtilization": {
"utilizationTarget": 0.8
},
"coolDownPeriodSec": 90,
"stabilizationPeriodSec": 240
}
}
למידע נוסף על הפעלת התאמה אוטומטית לעומס על סמך קיבולת ההגשה של איזון העומסים, אפשר לעיין במדריך התאמה אוטומטית לעומס גלובלית של שירות אינטרנט ב-Compute Engine.
המאמרים הבאים
- מידע ולמידה על ניהול של כלים להתאמה אוטומטית לעומס (autoscaler)
- איך מתקבלות החלטות במנגנוני התאמה אוטומטית לעומס
- איך משתמשים בכמה אותות של שינוי גודל אוטומטי כדי לשנות את גודל הקבוצה.