שינוי קנה מידה על סמך קיבולת ההגשה של איזון העומסים

במאמר הזה מוסבר איך לבצע התאמה לעומס של קבוצת מופעי מכונה מנוהלים (MIG) על סמך קיבולת ההגשה של מאזן עומסים של אפליקציות (ALB) חיצוני או מאזן עומסים של אפליקציות (ALB) פנימי. כלומר, המערכת מוסיפה או מסירה מכונות וירטואליות בקבוצה כשהמערכת לאיזון עומסים מציינת שהקבוצה הגיעה לחלק שניתן להגדרה של הקיבולת המלאה שלה, כאשר הקיבולת המלאה מוגדרת על ידי קיבולת היעד של מצב האיזון שנבחר בקבוצת המכונות לקצה העורפי.

אפשר גם לשנות את קנה המידה של קבוצת MIG על סמך ניצול ה-CPU או מדדי מעקב.

מגבלות

אתם יכולים להגדיר שינוי אוטומטי של גודל קבוצת מופעי מכונה מנוהלים על סמך קיבולת ההגשה של מאזן עומסים חיצוני של אפליקציות ושל מאזן עומסים פנימי של אפליקציות. אין תמיכה בסוגים אחרים של מאזני עומסים.

לפני שמתחילים

התאמה לעומס (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) על סמך קיבולת ההצגה של איזון העומסים, צריך להשתמש באחת מהאפשרויות הבאות.

המסוף

  1. נכנסים לדף Instance groups במסוף Google Cloud .

    כניסה לדף Instance groups

  2. אם יש לכם קבוצת מופעים, בוחרים אותה ולוחצים על עריכה. אם אין לכם קבוצת מופעים, לוחצים על Create instance group.
  3. לוחצים על הקטע Group size & autoscaling כדי להרחיב אותו.
  4. ברשימה Autoscaling mode, מוודאים שהאפשרות On: add and remove instances to the group מסומנת.
  5. מציינים את המספר המינימלי והמקסימלי של מופעים שרוצים שהכלי להתאמה אוטומטית לעומס ייצור בקבוצה הזו.
  6. בקטע אותות של התאמה אוטומטית לעומס, לוחצים על הוספת אות.
  7. מגדירים את סוג האות לשימוש באיזון עומסים של HTTP.
  8. מזינים את הערך של Target HTTP load balancing utilization באחוזים. לדוגמה, כדי להגדיר ניצול של 60% באיזון עומסי HTTP, מזינים 60.

  9. בשדה Initialization period אפשר להגדיר את תקופת האתחול, שמציינת למידרוג האוטומטי כמה זמן נדרש לאתחול האפליקציה. ציון תקופת אתחול מדויקת משפר את ההחלטות של המידרוג האוטומטי. לדוגמה, כשמגדילים את הקיבולת, הכלי לשינוי גודל אוטומטי מתעלם מנתונים של מכונות וירטואליות שעדיין נמצאות בתהליך אתחול, כי יכול להיות שהמכונות הווירטואליות האלה עדיין לא מייצגות שימוש רגיל באפליקציה. תקופת האתחול שמוגדרת כברירת מחדל היא 60 שניות.

  10. שומרים את השינויים.

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.

המאמרים הבאים