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

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

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

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

שימוש בהפעלה גמישה של מכונות

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

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

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

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

שינוי מאפייני מופע בבחירות של מופעים

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

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

שינוי ברירת המחדל של פלטפורמת ה-CPU המינימלית

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

אפשר גם להגדיר את השדה minCpuPlatform לערך AUTOMATIC. ההגדרה הזו מבטלת את הערך של minCpuPlatform ב-instanceProperties ומאפשרת ל-Compute Engine להשתמש בכל פלטפורמת מעבד (CPU) תואמת לסוגי המכונות שנבחרו למופע.

כדי לשלב סוגי מכונות שבהם רק סדרה אחת תומכת בפלטפורמת מעבד ספציפית, צריך להציב אותם בבחירות נפרדות של מכונות. לדוגמה, סוגי המכונות C4 תומכים בפלטפורמת Intel Emerald Rapids, וסוגי המכונות C3 תומכים בפלטפורמת Intel Sapphire Rapids. כדי לשלב בין C4 ו-C3 בבקשה להוספה בכמות גדולה, ולדרוש ש-C3 יפעל ב-Intel Sapphire Rapids, מגדירים שתי בחירות של מכונות באופן הבא:

  • בחירה ב-C3: מגדירים את השדה minCpuPlatform לערך Intel Sapphire Rapids.
  • בחירת C4: משאירים את השדה minCpuPlatform לא מוגדר, או מגדירים אותו לערך AUTOMATIC.

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

שינויים בדיסק

אתם יכולים לציין הגדרת דיסק בהתאמה אישית בבחירת מכונה כדי לשנות את דיסק האתחול או דיסקים נוספים שצוינו ב-instanceProperties, או כדי לצרף דיסקים נוספים. באמצעות השינוי הזה אפשר להתאים אישית את הגדלים של דיסקי האתחול, קובצי האימג' לאתחול או נפחי Hyperdisk מצורפים לכל סדרת מכונות בבקשה. לדוגמה, אתם יכולים לשנות את גודל דיסק האתחול או לצרף דיסק נתונים נוסף כש-Compute Engine בוחר סוג מכונה גדול יותר, תוך שמירה על העדפה שווה על ידי הקצאת אותו דירוג לבחירות של המכונות.

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

הדיאגרמה הבאה מציגה איך Compute Engine ממזג הגדרות דיסק מ-instanceProperties ומבחירת מכונה:

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

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

דוגמה: פלטפורמת CPU מינימלית ושינויים בדיסק

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

נניח שיש בקשה להוספה בכמות גדולה עם הגדרת הבסיס הבאה של instanceProperties, שמגדירה דיסק אתחול hyperdisk-balanced כברירת מחדל:
"instanceProperties": {
  "disks": [
    {
      "autoDelete": true,
      "deviceName": "boot-disk",
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/debian-cloud/global/images/family/debian-12",
        "diskSizeGb": "50",
        "diskType": "hyperdisk-balanced"
      }
    }
  ],
  "networkInterfaces": [{}]
}

ההגדרה הבאה של instanceFlexibilityPolicy באותה בקשה מבטלת את ההגדרה הבסיסית של instanceProperties, על ידי ציון פלטפורמת ה-CPU המינימלית והגדרות הדיסק בשתי בחירות של מכונות:

"instanceFlexibilityPolicy": {
  "instanceSelections": {
    "first-preference": {
      "rank": 1,
      "machineTypes": ["c4-standard-4"],
      "minCpuPlatform": "Intel Emerald Rapids",
      "disks": [
        {
          "autoDelete": true,
          "deviceName": "boot-disk",
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/debian-cloud/global/images/family/debian-12",
            "diskSizeGb": "50",
            "diskType": "hyperdisk-balanced"
          }
        }
      ]
    },
    "second-preference": {
      "rank": 2,
      "machineTypes": ["c3-standard-4"],
      "minCpuPlatform": "Intel Sapphire Rapids",
      "disks": [
        {
          "autoDelete": true,
          "deviceName": "boot-disk",
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/debian-cloud/global/images/family/debian-12",
            "diskSizeGb": "100",
            "diskType": "hyperdisk-balanced"
          }
        },
        {
          "autoDelete": true,
          "deviceName": "data-disk",
          "boot": false,
          "initializeParams": {
            "diskSizeGb": "100",
            "diskType": "hyperdisk-balanced"
          }
        }
      ]
    }
  }
}

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

  • העדפה ראשונה (first-preference): במכונות וירטואליות מסוג c4-standard-4, הבחירה מגדירה את minCpuPlatform ל-Intel Emerald Rapids ומשתמשת בדיסק אתחול hyperdisk-balanced בנפח 50GB.
  • העדפה שנייה (second-preference): במכונות וירטואליות מסוג c3-standard-4, הבחירה מגדירה את minCpuPlatform לערך Intel Sapphire Rapids, מבטלת את boot-disk כדי להשתמש בדיסק hyperdisk-balanced בנפח 100GB, ומצרפת דיסק hyperdisk-balanced נוסף בנפח 100GB בשם data-disk.

בחירת אזור כשמוגדרת צורת התפלגות של יעדים

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

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

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

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

אם מגדירים ערך למספר המינימלי הנדרש של מכונות וירטואליות (minCount) בבקשה bulkInsert, ה-API מנסה ליצור לפחות את המספר הזה של מכונות וירטואליות. אם Compute Engine לא יכול להקצות את המספר המינימלי הנדרש של מכונות וירטואליות (minCount), הפעולה כולה נכשלת ו-Compute Engine לא יוצר מכונות וירטואליות. כשמשתמשים ב-minCount עם הפעלה גמישה של מכונות, Compute Engine נותן עדיפות להקצאת מכונות וירטואליות על סמך הזמינות שלהן ולא על סמך הדירוג, באופן הבא:

  • המערכת של Compute Engine נותנת עדיפות להקצאה של מספר המכונות הווירטואליות המקסימלי עד count, גם אם זה אומר להשתמש במכונות בעדיפות נמוכה יותר. לדוגמה, אם בבקשה ציינתם מינימום של מכונה וירטואלית אחת (minCount=1) ומקסימום של 10 מכונות וירטואליות (count=10), ול-Compute Engine יש קיבולת להקצות מכונה וירטואלית אחת בעדיפות גבוהה יותר או שש מכונות וירטואליות בעדיפות נמוכה יותר, אז Compute Engine יקצה את שש המכונות הווירטואליות בעדיפות הנמוכה יותר.
  • אם Compute Engine יכול להקצות את אותו מספר מקסימלי של מכונות וירטואליות עד count באמצעות בחירות שונות של מכונות, הוא נותן עדיפות לבחירה עם העדפה גבוהה יותר. לדוגמה, אם בבקשה ציינתם מינימום של מכונה וירטואלית אחת (minCount=1) ומקסימום של 10 מכונות וירטואליות (count=10), ואם Compute Engine יכול להקצות 6 מכונות וירטואליות באמצעות בחירת מכונה בעדיפות גבוהה או בעדיפות נמוכה, אז Compute Engine יקצה את 6 המכונות הווירטואליות מהבחירה בעדיפות הגבוהה.

מידע נוסף זמין במאפיין minCount ב- bulkInsert.

תרחישים של אימות ושגיאות בהוספה בכמות גדולה

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

עם זאת, חלק מהאימותים של ההגדרות יכולים להתבצע רק אחרי ש-Compute Engine בוחר את התחומים (zones) וסוגי המכונות שבהם ישתמש להקצאה, על סמך המדיניות שלכם לגבי הפעלה גמישה של מכונות והקיבולת הזמינה. אם בשלב האימות המאוחר יותר הזה, השילוב הספציפי של סוג המכונה והאזור שנבחר להקצאה נמצא לא חוקי, כל בקשת ההוספה בכמות גדולה נכשלת עם שגיאות אימות. השגיאה הזו יכולה לקרות גם אם הגדרות אחרות ב-instanceFlexibilityPolicy היו תקינות בהתחלה.

מגבלות

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

  • אפשר לציין הפעלה גמישה של מכונות רק לבקשות bulkInsert אזוריות, ולא לבקשות לפי אזור.
  • התכונה "הפעלה גמישה של מכונות" לא תומכת במכונות וירטואליות מסוג Flex-start ובמקומות שמורים לעתיד.
  • אי אפשר להשתמש בהפעלה גמישה של מכונות עם תכונות של AI Hypercomputer, או עם מעבדים גרפיים מסוג A3 Ultra,‏ A4 וחדשים יותר.
  • אפשר לציין עד 10 סוגי מכונות שונים ב-10 בחירות שונות של מכונות.
  • כשמבטלים את minCpuPlatform או את disks בבחירת מכונה, חלות גם המגבלות הבאות:

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