פתרון בעיות בשימוש בהזמנה

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

פחות מכונות וירטואליות זמינות לשימוש

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

הבעיה הזו יכולה לקרות בגלל אחת או יותר מהסיבות הבאות:

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

  • הפרויקט שבו נוצרה ההזמנה הושעה. במקרה כזה, Compute Engine מגדיר את השדה assuredCount לערך 0.

  • שגיאה במארח השפיעה על ההזמנה.

פתרון: אלא אם הפרויקט שבו נוצרה ההזמנה הושעה, מערכת Compute Engine עושה כמיטב יכולתה כדי לפתור באופן אוטומטי אי התאמה בין השדות assuredCount ו-count בהזמנה תוך 24 שעות. בנוסף, עד שהפער הזה ייפתר, Google Cloud נחייב אתכם רק על הקיבולת שהוזמנה בפועל.

בעיות ב-VM שלא צורכים הזמנות

אם מכונה וירטואלית לא יכולה להשתמש בהזמנה, יכולות להיות לכך כמה סיבות:

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

מאפייני מכונות וירטואליות לא תואמים

בעיה: מכונה וירטואלית לא יכולה להשתמש בהזמנה עם מאפייני מכונה וירטואלית שונים.

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

  1. הצגת פרטי ההזמנה

  2. הצגת פרטי המכונה הווירטואלית

לאחר מכן, משווים בין שתי התוצאות כדי לוודא שהמאפיינים הבאים זהים:

  • project

    • אם ההזמנה משותפת עם כמה פרויקטים (במיוחד אם השדה shareType בהזמנה מוגדר לערך SPECIFIC_PROJECTS), המכונות הווירטואליות יכולות להיות בפרויקט שבו נוצרה ההזמנה (פרויקט הבעלים) או בכל פרויקט שההזמנה משותפת איתו (פרויקטים צרכניים).
  • zone

  • machineType

  • guestAccelerators.acceleratorType (אם יש)

  • guestAccelerators.acceleratorCount (אם יש)

  • minCpuPlatform

    • ההגדרה של המכונה הווירטואלית וההזמנה צריכה להיות זהה לחלוטין.minCpuPlatform לדוגמה, אם מגדירים את minCpuPlatform ל-Intel Broadwell כשיוצרים מכונה וירטואלית, הערך של minCpuPlatform לא יהיה זהה לערך של Automatic בהזמנה.
  • localSsds.interface (אם יש)

    • במכונה הווירטואלית ובהזמנה צריך להיות אותו מספר של דיסקים מקומיים מסוג SSD עם מאפיין localSsds.interface תואם לכל דיסק מקומי מסוג SSD.
  • resourcePolicies (אם יש)

  • locationHint (אם יש)

    • רק אם בשדה locationHint של ההזמנה מצוין ערך. אפשר לציין את השדה locationHint רק כשיוצרים מכונות וירטואליות באמצעות REST.

פתרון: אחרי שמזהים את הנכסים שלא תואמים, אפשר לנסות אחת מהפעולות הבאות:

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

הזיקה להזמנה שגויה

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

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

  2. צופים בפרטים של המכונה הווירטואלית ומאמתים את הקשר להזמנה.

פתרון: אם ההעדפה של מכונת ה-VM וההזמנה לא תואמות, מבצעים אחת מהפעולות הבאות:

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

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

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

ההזמנה כבר נוצלה במלואה

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

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

אם ניצלתם את כל ההזמנה, נסו אחת מהפעולות הבאות:

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

  1. יצירת הזמנה ספציפית עם מאפיינים תואמים

  2. יוצרים מכונה וירטואלית שתשתמש בהזמנה. אם המאפיינים של המכונה הווירטואלית וההזמנה לא תואמים, יצירת המכונה הווירטואלית תיכשל.

חריגה ממכסת המשאבים בהזמנות משותפות

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

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

מספר המכונות הווירטואליות לא משוחזר אחרי שמפסיקים או מוחקים מכונה וירטואלית

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

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

  • מומלץ: לעקוב אחרי ההזמנה ולחפש שינוי במדדים של ההזמנה.

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

מכונה וירטואלית שצורכת הזמנות שלא בכוונה

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

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