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

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

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

שימוש ב-MIG API לצורך שינוי קנה מידה אוטומטי

מומלץ להשתמש במידרוג אוטומטי של Compute Engine כדי להתאים אוטומטית לעומס את קבוצת ה-MIG. עם זאת, אם מסיבה כלשהי אתם מעדיפים להשתמש בשינוי גודל אוטומטי אחר, אתם יכולים להשתמש בנקודות הקצה של MIG API כדי לטפל במכונות וירטואליות מושעות ומופסקות.

בחירה בין מאגרי משאבים מושהים לבין מאגרי משאבים שהופסקו

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

כדי למצוא את הגישה הטובה ביותר, כדאי להתחיל עם ההנחיות הבאות:

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

עריכת מדיניות ההמתנה ב-MIG

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

המסוף

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

    כניסה לדף Instance groups

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

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

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

  5. בקטע Standby pool, בוחרים באפשרות Scale-out.

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

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

gcloud

משתמשים בפקודה instance-groups managed update ומציינים את מצב הפעולה ואת ההשהיה הראשונית.

gcloud compute instance-groups managed update MIG_NAME \
  --standby-policy-mode=scale-out-pool \
  --standby-policy-initial-delay=DELAY \
  [--region=REGION | --zone=ZONE]

מחליפים את מה שכתוב בשדות הבאים:

  • ‫MIG_NAME: השם של ה-MIG.
  • ‫DELAY: מספר השניות שקבוצת ה-MIG צריכה להמתין לפני שהיא משעה או מפסיקה מכונה וירטואלית. ההשהיה הראשונית מאפשרת לסקריפט ההפעלה להכין את המכונה הווירטואלית להרחבה מהירה.
  • ‫REGION: במקרה של MIG אזורי, האזור שבו נמצא ה-MIG.
  • ‫ZONE: במקרה של MIG אזורי, האזור שבו נמצא ה-MIG.

Terraform

בדוגמה הבאה נוצרת קבוצת MIG אזורית עם מדיניות המתנה. משתמשים בבלוק standby_policy כדי להגדיר השהיה ראשונית ולהגדיר את המצב ל-SCALE_OUT_POOL.

בדוגמה נעשה שימוש במשאב google_compute_instance_group_manager. ב-MIG אזורי, משתמשים ב-google_compute_region_instance_group_manager resource.

resource "google_compute_instance_group_manager" "default" {
  name               = "standby-mig"
  base_instance_name = "test"
  target_size        = 3
  zone               = "us-central1-f"

  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
  standby_policy {
    initial_delay_sec = 50
    mode              = "SCALE_OUT_POOL"
  }
}

כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.

REST

משתמשים בשיטה instanceGroupManager.patch ומציינים את מצב הפעולה וההשהיה הראשונית בגוף הבקשה. בשביל קבוצות אזוריות של מכונות וירטואליות, משתמשים ב-method ‏regionInstanceGroupManager.patch.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME

{
// ...
"standbyPolicy": {
  "mode": "SCALE_OUT_POOL",
  "initialDelaySec": DELAY
}
// ...
}

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_ID: מזהה הפרויקט.
  • ‫ZONE: במקרה של MIG אזורי, האזור שבו נמצא ה-MIG.
    • ל-MIG אזורי, מחליפים את zones/ZONE ב-regions/REGION ומציינים את האזור של ה-MIG.
  • ‫MIG_NAME: השם של ה-MIG.
  • ‫DELAY: מספר השניות שקבוצת ה-MIG צריכה להמתין לפני שהיא משעה או מפסיקה מכונה וירטואלית. ההשהיה הראשונית מאפשרת לסקריפט ההפעלה להכין את המכונה הווירטואלית להרחבה מהירה.

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

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

המסוף

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

    כניסה לדף Instance groups

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

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

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

  5. בקטע Standby pool, מזינים את הגדלים החדשים בשדות Suspended VMs ו-Stopped VMs.

  6. לוחצים על Save.

gcloud

משתמשים בפקודה instance-groups managed update עם הדגלים --suspended-size ו---stopped-size.

gcloud compute instance-groups managed update MIG_NAME \
--suspended-size=SUSPENDED_SIZE \
--stopped-size=STOPPED_SIZE \
[--region=REGION | --zone=ZONE]

מחליפים את מה שכתוב בשדות הבאים:

  • ‫MIG_NAME: השם של קבוצת ה-MIG שבה רוצים להשהות את המכונה.
  • ‫SUSPENDED_SIZE: מספר המכונות הווירטואליות המושעות שקבוצת ה-MIG צריכה לשמור בכל רגע נתון.
  • ‫STOPPED_SIZE: מספר המכונות הווירטואליות (VM) המופסקות שקבוצת ה-MIG צריכה לשמור בכל זמן נתון.
  • ‫REGION: במקרה של MIG אזורי, האזור שבו נמצא ה-MIG.
  • ‫ZONE: במקרה של MIG אזורי, האזור שבו נמצא ה-MIG.

Terraform

בדוגמה הבאה נוצרת קבוצת MIG אזורית עם גדלים של מכונות וירטואליות מושעות ומופסקות. כדי להגדיר את גודלי היעד, משתמשים בארגומנטים target_suspended_size ו-target_stopped_size.

בדוגמה נעשה שימוש במשאב google_compute_instance_group_manager. ב-MIG אזורי, משתמשים ב-google_compute_region_instance_group_manager resource.

resource "google_compute_instance_group_manager" "default" {
  name                  = "standby-mig"
  base_instance_name    = "test"
  target_size           = 1
  target_suspended_size = 1
  target_stopped_size   = 2
  zone                  = "us-central1-f"

  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
  standby_policy {
    initial_delay_sec = 50
    mode              = "SCALE_OUT_POOL"
  }
}

כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.

REST

משתמשים בשיטה instanceGroupManager.patch ומציינים את הגדלים של מאגרי המכונות הווירטואליות שהושעו והופסקו בגוף הבקשה. בשביל קבוצות אזוריות של מכונות וירטואליות, משתמשים ב-method ‏regionInstanceGroupManager.patch.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME

{
// ...
"targetSuspendedSize": SUSPENDED_SIZE,
"targetStoppedSize": STOPPED_SIZE
// ...
}

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_ID: מזהה הפרויקט.
  • ‫ZONE: במקרה של MIG אזורי, האזור שבו נמצא ה-MIG.
    • ל-MIG אזורי, מחליפים את zones/ZONE ב-regions/REGION ומציינים את האזור של ה-MIG.
  • ‫MIG_NAME: השם של קבוצת ה-MIG שבה רוצים להפסיק מכונה.
  • ‫SUSPENDED_SIZE: מספר המכונות הווירטואליות (VM) שהושעו שקבוצת ה-MIG צריכה לשמור בכל זמן נתון.
  • ‫STOPPED_SIZE: מספר המכונות הווירטואליות (VM) המופסקות שקבוצת ה-MIG צריכה לשמור בכל זמן נתון.

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