יצירת קבוצת MIG עם מכונות וירטואליות בכמה אזורים באזור

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

סוג כזה של MIG נקרא גם MIG אזורי. מידע נוסף מופיע במאמר מידע על קבוצות MIG אזוריות.

אפשר גם לקרוא על תרחישים בסיסיים אחרים ליצירת MIG.

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

מגבלות

לרשימה המלאה של המגבלות של קבוצות MIG, שמשתנות בהתאם להגדרות שבהן אתם משתמשים.

יצירת קבוצת מכונות וירטואליות מנוהלת (MIG) עם מכונות וירטואליות בכמה אזורים באותו מחוז

משתמשים ב- Google Cloud console, ב-ה-CLI של gcloud, ב-Terraform או ב-REST.

המסוף

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

    כניסה לדף Instance groups

    שאר השלבים מופיעים במסוף Google Cloud .

  2. לוחצים על Create instance group כדי ליצור קבוצת מכונות חדשה.
  3. בוחרים אחת מהאפשרויות של New managed instance group:
    • ללא שמירת מצב (ברירת מחדל)
    • Stateful
  4. נותנים שם לקבוצת המכונות, ואפשר גם להוסיף תיאור.
  5. בוחרים תבנית של הגדרות מכונה לקבוצת המכונות או יוצרים תבנית חדשה.
  6. בשדה Number of instances או בשדה Autoscaling, מציינים את מספר המכונות בקבוצה. חשוב לזכור להקצות מספיק מכונות וירטואליות כדי לתמוך באפליקציה במקרה של תקלה באזור.
  7. בשדה Location, בוחרים באפשרות Multiple zones.
  8. בוחרים אזור ובוחרים את האזורים שבהם רוצים להשתמש. אם בחרתם תבנית של הגדרות מכונה אזורית, האפשרות Region נבחרת אוטומטית לפי האזור של התבנית.
  9. בקטע צורת התפלגות היעד, בוחרים באפשרות אחידה. אם רוצים לבחור צורה אחרת, אפשר לעיין במאמר הגדרת צורת התפלגות של יעד למכונות וירטואליות בקבוצת MIG אזורית.
  10. אם רוצים להשבית את האפשרות proactive instance redistribution, בקטע Instance redistribution מבטלים את הסימון של התיבה Allow instance redistribution.
  11. ממשיכים בתהליך היצירה של ה-MIG.
  12. כדי ליצור את ה-MIG, לוחצים על Create.

gcloud

כל קבוצות ה-MIG מחייבות תבנית של הגדרות מכונה. אם אין לכם תבנית, צרו תבנית של הגדרות מכונה. לדוגמה, הפקודה הבאה יוצרת תבנית של הגדרות מכונה באזור us-east1 עם מאפייני מכונה שמוגדרים כברירת מחדל:

gcloud compute instance-templates create example-template --instance-template-region us-east1

כשיוצרים את קבוצת ה-MIG, אפשר לציין את המזהה או את השם של תבנית של הגדרות מכונה. ‫Google ממליצה לציין את המזהה כי בניגוד לשמות, אי אפשר להשתמש שוב במזהים של תבניות של הגדרות מכונה. כדי לראות את המזהה הייחודי של תבנית של הגדרות מכונה שיצרתם, משתמשים בפקודה describe:

gcloud compute instance-templates describe example-template --region us-east1 --format="value(id)"

אחר כך משתמשים בפקודה instance-groups managed create עם הדגל --region. לדוגמה, הפקודה הבאה יוצרת קבוצת MIG אזורית בשלושה אזורים בתוך האזור us-east1:

gcloud compute instance-groups managed create example-rmig \
    --template projects/my-project/regions/us-east1/instanceTemplates/1234567890 \
    --size 30 \
    --region us-east1

אם רוצים לבחור אזורים ספציפיים שהקבוצה צריכה להשתמש בהם, צריך לספק את הדגל --zones:

gcloud compute instance-groups managed create example-rmig \
    --template projects/my-project/regions/us-east1/instanceTemplates/1234567890 \
    --size 30 \
    --zones us-east1-b,us-east1-c

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

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

Terraform

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

כדי ליצור קבוצת MIG אזורית, אתם יכולים להשתמש במשאב google_compute_region_instance_group_manager.

resource "google_compute_region_instance_group_manager" "default" {
  name                      = "example-rmig"
  region                    = "us-east1"
  distribution_policy_zones = ["us-east1-b", "us-east1-c"]
  target_size               = 30
  base_instance_name        = "instance"
  version {
    instance_template = google_compute_instance_template.default.id
  }
}

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

REST

כל קבוצות ה-MIG מחייבות תבנית של הגדרות מכונה. אם אין לכם תבנית, צרו תבנית של הגדרות מכונה.

כשיוצרים את ה-MIG, אפשר לציין את המזהה או את השם של תבנית של הגדרות מכונה. ‫Google ממליצה לציין את המזהה כי בניגוד לשמות, אי אפשר להשתמש שוב במזהים של תבניות של הגדרות מכונה. כדי לראות את המזהה הייחודי של התבנית של הגדרות המכונה שיצרתם, משתמשים ב-method‏ get בתבנית של הגדרות מכונה אזורית או בתבנית של הגדרות מכונה גלובלית שיצרתם.

אחר כך יוצרים בקשת POST ל-method‏ regionInstanceGroupManagers.insert. בגוף הבקשה, מציינים את שם הקבוצה, גודל הקבוצה ואת כתובת ה-URL של תבנית של הגדרות מכונה. אפשר גם לציין שדות אחרים, כמו שם הבסיס של המכונות בקבוצה.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers

{
  "baseInstanceName": "BASE_INSTANCE_NAME",
  "instanceTemplate": "INSTANCE_TEMPLATE_URL",
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": "TARGET_SIZE"
}

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

  • ‫PROJECT_ID: מזהה הפרויקט של הבקשה הזו.
  • ‫REGION: האזור של הקבוצה.
  • ‫BASE_INSTANCE_NAME: (אופציונלי) השם של כל מכונה וירטואלית שנוצרת כחלק מהקבוצה. לדוגמה, אם שם המכונה הבסיסי הוא example-instance, המכונות שייווצרו יהיו עם שמות כמו example-instance-[RANDOM_STRING], כאשר [RANDOM_STRING] נוצר על ידי השרת.
  • ‫INSTANCE_TEMPLATE_URL: כתובת ה-URL של תבנית של הגדרות מכונה שבה רוצים להשתמש כדי ליצור מכונות ב-MIG. כתובת ה-URL יכולה להכיל את המזהה או את השם של תבנית של הגדרות מכונה. מציינים אחד מהערכים הבאים:
    • לתבנית של הגדרות מכונה אזורית: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • לתבנית גלובלית של הגדרות מכונה: INSTANCE_TEMPLATE_ID
  • ‫TARGET_SIZE: מספר היעד של המכונות הווירטואליות בקבוצה.

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

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers

{
  "baseInstanceName": "BASE_INSTANCE_NAME",
  "instanceTemplate": "INSTANCE_TEMPLATE_URL",
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": "TARGET_SIZE",
  "distributionPolicy": {
     "zones": [
       {"zone": "zones/ZONE"},
       {"zone": "zones/ZONE"}
      ]
   }
}

לדוגמה, הפקודה הבאה יוצרת קבוצת MIG אזורית בשם example-rmig עם 10 מכונות מנוהלות שמתפרסות על פני האזורים us-east1-b ו-us-east1-c:

POST https://compute.googleapis.com/compute/v1/projects/myproject/regions/us-east1/instanceGroupManagers

{
  "instanceTemplate": "projects/my-project/regions/us-east1/instanceTemplates/1234567890",
  "name": "example-rmig",
  "targetSize": 10,
  "distributionPolicy": {
      "zones": [
        {"zone": "zones/us-east1-b"},
        {"zone": "zones/us-east1-c"}
      ]
   }
}

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

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

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

התפלגות של מכונות וירטואליות בין אזורים

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

מידע נוסף זמין במאמרים הבאים:

חלוקה מחדש יזומה של מכונות וירטואליות

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

מידע נוסף זמין במאמרים הבאים:

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