שימוש בהתאמה אוטומטית לעומס (autoscaling) באפליקציות שניתנות להתאמה לעומס

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

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

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

מטרות

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

עלויות

במסמך הזה משתמשים ברכיבים הבאים של Cloud de Confiance by S3NS, והשימוש בהם כרוך בתשלום:

  • Compute Engine

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

  1. In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Cloud de Confiance project.

ארכיטקטורה של אפליקציות

האפליקציה כוללת את הרכיבים הבאים של Compute Engine:

הפעלת אפליקציית האינטרנט

במדריך הזה נעשה שימוש באפליקציית אינטרנט שמאוחסנת ב-GitHub. אם אתם רוצים לקבל מידע נוסף על האופן שבו האפליקציה הוטמעה, תוכלו לעיין במאגר GoogleCloudPlatform/python-docs-samples ב-GitHub.

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

יצירת כלל לחומת האש

יוצרים כלל חומת אש שמאפשר תעבורת נתוני HTTP לאפליקציית האינטרנט:

  1. נכנסים לדף Firewalls במסוף Cloud de Confiance .

    לדף Firewalls

  2. לוחצים על יצירת כלל לחומת האש.

  3. בשדה Name (שם), מזינים default-allow-http.

  4. מגדירים את Network לערך default.

  5. מגדירים את היעדים לערך Specified target tags.

  6. בקטע Target Tags (תגי יעד), מזינים http-server.

  7. מגדירים את מסנן מקור לערך IPv4 ranges.

  8. בקטע Source IPv4 ranges (טווחי IPv4 של המקור), מזינים 0.0.0.0/0

    כדי לאפשר גישה לכל כתובות ה-IP.

  9. בקטע Protocols and ports (פרוטוקולים ויציאות), בוחרים באפשרות Specified protocols and ports (פרוטוקולים ויציאות שצוינו). לאחר מכן בוחרים באפשרות TCP ומזינים 80 כדי לאפשר גישה לתעבורת HTTP.

  10. לוחצים על יצירה.

יצירת תבנית של הגדרות מכונה

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

  1. נכנסים לדף Instance templates במסוף Cloud de Confiance .

    כניסה לדף Instance templates

  2. לוחצים על Create instance template.

  3. בשדה Name (שם), מזינים autoscaling-web-app-template.

  4. בקטע Machine configuration, מגדירים את סוג המכונה לערך e2-standard-2.

  5. בקטע Firewall, מסמנים את תיבת הסימון Allow HTTP traffic. התיוג הזה מחיל את תג הרשת http-server על כל מופע שנוצר מהתבנית הזו.

  6. מרחיבים את הקטע אפשרויות מתקדמות כדי לראות את ההגדרות המתקדמות.

  7. מרחיבים את הקטע ניהול.

  8. בקטע Automation, מזינים את סקריפט לטעינה בזמן ההפעלה הבא:

    sudo apt update && sudo apt -y install git gunicorn3 python3-pip
    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    cd python-docs-samples/compute/managed-instances/demo
    sudo pip3 install -r requirements.txt
    sudo gunicorn3 --bind 0.0.0.0:80 app:app --daemon
    

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

  9. לוחצים על יצירה.

יצירת קבוצות של מופעי מכונה מנוהלים

כדי להתחיל להריץ את אפליקציית האינטרנט, יוצרים קבוצת מופעים אזורית:

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

    כניסה לדף Instance groups

  2. לוחצים על יצירת קבוצת מופעים כדי ליצור קבוצת מופעים חדשה.

  3. בוחרים באפשרות New managed instance group (stateless) (קבוצת מופעי מכונה מנוהלים חדשה (בלי שמירת מצב)).

  4. בשדה Name (שם), מזינים autoscaling-web-app-group.

  5. בשדה תבנית של הגדרות מכונה, בוחרים באפשרות autoscaling-web-app-template.

  6. בקטע מיקום, בוחרים באפשרות מספר אזורים.

  7. בשדה Region, בוחרים us-central1.

  8. בשדה Zones, בוחרים את האזורים הבאים מהרשימה הנפתחת:

    • us-central1-b
    • us-central1-c
    • us-central1-f
  9. מגדירים את התכונה 'התאמה אוטומטית לעומס' לקבוצת המופעים:

    1. בקטע מצב התאמה אוטומטית לעומס, בוחרים באפשרות מופעל: הוספה והסרה של מכונות לקבוצה.
    2. מגדירים את המספר המינימלי של מופעים ל-3.

    3. מגדירים את מספר המופעים המקסימלי ל-6.

    4. מגדירים את Initialization period ל-120 שניות.

    5. בקטע Autoscaling Metrics (מדדי שינוי גודל אוטומטי), בוחרים באפשרות CPU utilization (ניצול CPU) בתור סוג המדד. מידע נוסף על מדדים של התאמה אוטומטית לעומס זמין במאמר בנושא מדיניות של התאמה אוטומטית לעומס.

    6. מגדירים את Target CPU utilization (יעד השימוש במעבד) ל-60.

    7. לוחצים על סיום.

  10. בקטע Autohealing, בוחרים באפשרות No health check מהתפריט הנפתח Health check.

  11. לוחצים על יצירה. תועברו לדף Instance groups.

  12. כדי לוודא שהמכונות הווירטואליות פועלות:

    1. בדף Instance groups במסוף Cloud de Confiance , לוחצים על autoscaling-web-app-group כדי לראות את המופעים בקבוצה.
    2. בקטע כתובת IP חיצונית, לוחצים על כתובת IP כדי להתחבר לאותה מכונה. כרטיסייה חדשה בדפדפן תיפתח ותציג את אפליקציית האינטרנט של ההדגמה:

      אפליקציית אינטרנט לדוגמה, שמוצג בה מידע על המופע ויש בה לחצני פעולה.

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

מעקב אחר התאמה אוטומטית לעומס

למידע נוסף על התנהגויות של התאמה אוטומטית לעומס, אפשר לעיין במאמר הסבר על החלטות של התאמה אוטומטית לעומס.

מעקב אחרי התאמה אוטומטית לעומס

קבוצת המופעים שיצרתם משתמשת במדיניות של התאמה אוטומטית לעומס שמבוססת על שימוש במעבד (CPU). המשמעות היא שהכלי לשינוי גודל הקבוצה באופן אוטומטי מגדיל או מקטין את הקבוצה לפי הצורך כדי לשמור על ניצול המעבד (CPU) ברמת היעד של 60%.

כדי לעקוב אחרי הגודל והשימוש במעבד של קבוצת המכונות, משתמשים בתרשימים של התאמה אוטומטית לעומס במסוף Cloud de Confiance :

  1. בדף Instance groups של קבוצת המופעיםautoscaling-web-app-group, לוחצים על הכרטיסייה Monitoring.
  2. אפשר לעקוב אחרי שינוי הגודל האוטומטי של הקבוצה בתרשים גודל הקבוצה. בתרשים מוצגות מכונות, שמייצגות את מספר מכונות ה-VM בקבוצה לאורך זמן.
  3. אופציונלי: כדי לעקוב אחרי הקיבולת של הגידול האוטומטי לעומת הניצול, אפשר לעיין בתרשים Autoscaler utilization (CPU). בתרשים מוצגים הניצול, שהוא ניצול המעבד הכולל של המכונות הווירטואליות בקבוצה, והקיבולת, שהיא ניצול המעבד המצטבר של הקבוצה (ניצול המעבד כפול מספר המכונות הווירטואליות).

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

צריך להשאיר את החלון הזה פתוח.

סימולציה של סילומיות אופקית (scale out)

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

כדי להפעיל את הגידול בקיבולת, מגדילים את ניצול המעבד של המופעים:

  1. במסוף Cloud de Confiance , פותחים את Cloud Shell.

    פתיחת Cloud Shell

    ‫Cloud Shell ייפתח בחלק התחתון של Cloud de Confiance המסוף. הסשן יופעל תוך כמה שניות.

  2. יוצרים משתנה bash מקומי למזהה הפרויקט:

    export PROJECT_ID=[PROJECT_ID]
    

    כאשר PROJECT_ID הוא מזהה הפרויקט של הפרויקט הנוכחי, שמוצג בכל שורה חדשה ב-Cloud Shell:

    user@cloudshell:~ ([PROJECT_ID])$
    
  3. מריצים את סקריפט ה-Bash הבא. הסקריפט הזה גורם לעומס מוגבר על המופעים של אפליקציית האינטרנט להדגמה, וכתוצאה מכך לניצול מוגבר של המעבד. אחרי כמה דקות, ניצול המעבד יעבור את ערך היעד, וההתאמה האוטומטית לעומס תגדיל את גודל קבוצת המופעים.

    export MACHINES=$(gcloud --project=$PROJECT_ID compute instances list --format="csv(name,networkInterfaces[0].accessConfigs[0].natIP)" | grep "autoscaling-web-app-group")
    for i in $MACHINES;
    do
      NAME=$(echo "$i" | cut -f1 -d,)
      IP=$(echo "$i" | cut -f2 -d,)
      echo "Simulating high load for instance $NAME"
      curl -q -s "http://$IP/startLoad" >/dev/null --retry 2
    done
    
  4. פותחים את הכרטיסייה Monitoring במסוף Cloud de Confiance .

    אחרי כמה דקות, בכרטיסייה Monitoring מוצג שהערך של Utilization של ה-CPU עלה, מה שמפעיל את ההתאמה האוטומטית של קנה המידה כדי להגדיל את Capacity על ידי הגדלת מספר Instances.

    יכול להיות שתבחינו גם ב-6 מקרים שמופיעים עכשיו בכרטיסייה סקירה כללית.

משאירים את שני החלונות פתוחים.

סימולציה של צמצום

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

כדי להפעיל את תהליך ההקטנה, צריך להקטין את ניצול המעבד של המופעים:

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

    export MACHINES=$(gcloud --project=$PROJECT_ID compute instances list --format="csv(name,networkInterfaces[0].accessConfigs[0].natIP)" | grep "autoscaling-web-app-group")
    for i in $MACHINES;
    do
      NAME=$(echo "$i" | cut -f1 -d,)
      IP=$(echo "$i" | cut -f2 -d,)
      echo "Simulating low load for instance $NAME"
      curl -q -s "http://$IP/stopLoad" >/dev/null --retry 2
    done
    
  2. פותחים את הכרטיסייה Monitoring במסוף Cloud de Confiance .

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

    יכול להיות שתשימו לב שרק 3 מקרים מופיעים בכרטיסייה סקירה כללית.

בסיום, סוגרים את שני החלונות.

הסרת המשאבים

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

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

מחיקת הפרויקט

  1. במסוף Cloud de Confiance , נכנסים לדף Manage resources.

    כניסה לדף Manage resources

  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.

מחיקת משאבים ספציפיים

מחיקת קבוצת המכונות

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

    כניסה לדף Instance groups

  2. מסמנים את התיבה של קבוצת המכונות autoscaling-web-app-group.
  3. כדי למחוק את קבוצות המכונות, לוחצים על Delete.

מחיקת תבנית של הגדרות מכונה

  1. נכנסים לדף Instance templates במסוף Cloud de Confiance .

    כניסה לדף Instance templates

  2. לוחצים על תיבת הסימון לצד autoscaling-web-app-template.

  3. לוחצים על מחיקה בחלק העליון של הדף. בחלון החדש, לוחצים על מחיקה כדי לאשר את המחיקה.

מחיקת כלל חומת אש

  1. נכנסים לדף Firewall rules במסוף Cloud de Confiance .

    מעבר לכללי חומת אש

  2. לוחצים על תיבת הסימון לצד כלל חומת האש שנקרא default-allow-http.

  3. לוחצים על מחיקה. בחלון החדש, לוחצים על מחיקה כדי לאשר את המחיקה.

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