ניהול אירועים של מארחים במכונות וירטואליות

במאמר הזה מוסבר איך לעקוב אחרי תחזוקה מתוזמנת של מכונות וירטואליות מסוג A4X Max,‏ A4X,‏ A4,‏ A3 Ultra,‏ A3 Mega ו-A3 High (עם 8 מעבדי GPU), לתכנן אותה ולבצע אותה. ניהול יזום של אירועי תחזוקה של המארח הקרובים במכונות הווירטואליות ב-Compute Engine מאפשר לצמצם את ההפרעות ולשמור על ביצועים אופטימליים.

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

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

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

המסוף

כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים ולממשקי ה-API, לא צריך להגדיר אימות. Google Cloud

gcloud

במסוף Google Cloud , מפעילים את Cloud Shell.

הפעלת Cloud Shell

בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

REST

כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.

    התקינו את ה-CLI של Google Cloud.

    אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .

התפקידים הנדרשים

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

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

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

ההרשאות הנדרשות

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

  • כדי לראות את הפרטים של מופע: compute.instances.get בפרויקט

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

סקירה כללית

כדי לייעל את התחזוקה של מופעי ה-Compute, פועלים לפי השלבים הבאים:

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

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

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

הסבר על תחזוקת המארח ואיך מבצעים אותה

במהלך מחזור החיים של מכונה של Compute Engine, המחשב המארח שעליו המכונה שלכם פועלת עובר כמה אירועים במארח. אירוע של מארח יכול לכלול את הפרטים הבאים:

  • תחזוקה מתוכננת של תשתית Compute Engine.
  • תחזוקת חירום לא מתוכננת לתיקון תשתית Compute Engine אחרי שגיאה במארח או דוח מארח פגום.

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

סוג המכונה התדירות הטיפוסית של אירועי תחזוקה מתוזמנים התנהגות תחזוקה התראה מתקדמת על תחזוקה מתוזמנת התראות מתקדמות לגבי תחזוקה במקרה חירום תחזוקה על פי דרישה סימולציה של תחזוקה
‫A4X Max ו-A4X לפחות 90 יום הפעולה מסתיימת עם שמירת נתונים ב-SSD מקומי 90 ימים אם מפעילים התראות על מקרי חירום, אז 7 ימים. אחרת, תוך כמה שעות. כן לא
A4 לפחות 90 יום הפעולה מסתיימת עם שמירת נתונים ב-SSD מקומי 90 ימים אם מפעילים התראות על מקרי חירום, אז 7 ימים. אחרת, תוך כמה שעות. כן לא
A3 Ultra לפחות 90 יום הפעולה מסתיימת עם שמירת נתונים ב-SSD מקומי 90 ימים אם מפעילים התראות על מקרי חירום, אז 7 ימים. אחרת, תוך כמה שעות. כן לא
‫A3 Mega ו-A3 High
(8 יחידות GPU)
לפחות 90 יום הפעולה מסתיימת עם שמירת נתונים ב-SSD מקומי 90 ימים אם מפעילים התראות על מקרי חירום, אז 7 ימים. אחרת, תוך כמה שעות. כן כן

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

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

הגדרת התראות על מחשבים וירטואליים

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

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

  1. במסוף Google Cloud , נכנסים לדף Logs Explorer:

    כניסה אל Logs Explorer

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

  2. לוחצים על המתג הצגת שאילתה כדי להפעיל אותו.

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

    • כדי לקבל התראות כשמתוזמן תחזוקה של מופע:

      protoPayload.methodName="compute.instances.upcomingMaintenance" severity>=DEFAULT
      protoPayload.status.message =~ "scheduled"
      
    • כדי לקבל התראות כשחלון הזמן לתחזוקה של מופע נפתח:

      protoPayload.methodName="compute.instances.upcomingMaintenance" severity>=DEFAULT
      protoPayload.status.message =~ "ongoing"
      
    • כדי לקבל התראות כשתחזוקה של מכונה מתחילה:

      protoPayload.methodName="compute.instance.terminateOnHostMaintenance" severity>=DEFAULT
      
    • כדי לקבל התראות כשתחזוקה של מכונה מסתיימת:

      protoPayload.methodName="compute.instances.upcomingMaintenance" severity>=DEFAULT
      protoPayload.status.message =~ "completed"
      
  4. כדי לאמת את השאילתה, לוחצים על Run query. אם השאילתה תקינה, בחלונית Query results יוצגו רשומות ביומן שתואמות לשאילתה.

  5. בסרגל הכלים של תוצאות השאילתה, לוחצים על רשימת הפעולות ובוחרים באפשרות יצירת התראה ביומן. מופיעה החלונית Create logs-based alert policy.

  6. בקטע פרטי ההתראה, מבצעים את הפעולות הבאות:

    1. בשדה שם מדיניות ההתראה, מזינים שם למדיניות.

    2. ברשימה רמת החומרה של המדיניות, בוחרים באפשרות אזהרה (או ברמת חומרה גבוהה יותר).

    3. לוחצים על הבא.

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

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

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

    2. ברשימה Incident autoclose duration (משך הזמן עד לסגירה אוטומטית של האירוע), בוחרים אחרי כמה זמן Cloud Logging יפסיק לשלוח התראות ויסגור אוטומטית את האירוע.

    3. לוחצים על הבא.

  9. בקטע למי לשלוח התראות?, מציינים ערוץ התראות ששירות Logging ישלח אליו התראות.

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

כדי לראות דוגמאות להתראות על אירועי תחזוקה בכלי Logs Explorer, אפשר לעיין בדוגמאות להתראות על תחזוקה במסמכי התיעוד של Compute Engine.

ניהול תחזוקה במופעי מחשוב

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

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

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

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

סוג התחזוקה הסיבה לתחזוקה מצב המכונה
תחזוקה מתוכננת אחרי דוח מארח שגוי FAILURE_GPU_CUSTOMER_REPORTED ההגדרה חלה רק על מקרים שפועלים במארח שדיווחתם עליו כפגום.
תחזוקה מתוכננת לתחזוקה רגילה
  • PLANNED_UPDATE: תחזוקת תשתית מתוכננת
  • PLANNED_NETWORK_UPDATE: תחזוקת רשת מתוכננת
הפעולה חלה על מכונות וירטואליות שפועלות, שהופסקו או שהושעו.
תחזוקת חירום לא מתוכננת
  • FAILURE_DISK: תחזוקה לא מתוכננת שנקבעה בגלל שגיאה בדיסק שמצורף למופע.
  • FAILURE_GPU: תחזוקה לא מתוכננת שנקבעה בגלל שגיאה שקשורה ל-GPU.
  • FAILURE_GPU_TEMPERATURE: תחזוקה לא מתוכננת שנקבעה בגלל שגיאה שקשורה ל-GPU אחרי שה-GPU הגיע לטמפרטורה גבוהה.
  • FAILURE_GPU_XID: תחזוקה לא מתוכננת אחרי שקיבלתם הודעת Xid בגלל שגיאה שקשורה ל-GPU.
  • FAILURE_INFRA: תחזוקה לא מתוכננת שנקבעה בגלל שגיאה בתשתית.
  • FAILURE_INTERFACE: תחזוקה לא מתוכננת שנקבעה בגלל שגיאה בכרטיס רשת.
  • FAILURE_MEMORY: תחזוקה לא מתוכננת שנקבעה בגלל שגיאה בזיכרון של מופע.
  • FAILURE_NETWORK: תחזוקה לא מתוכננת שנקבעה בגלל שגיאה ברשת.
  • FAILURE_NVLINK: תחזוקה לא מתוכננת שנקבעה בגלל שגיאה ב-NVLink.
ההגדרה רלוונטית רק למופעים פעילים.

כדי לראות את השדה maintenanceReasons במכונה, צריך להשתמש ב-CLI של gcloud או ב-API בארכיטקטורת REST. כדי לראות את מצב התחזוקה של כמה מכונות וירטואליות בו-זמנית, צריך להשתמש במסוף Google Cloud או ב-REST API. אחרת, בוחרים באחת מהאפשרויות הבאות:

המסוף

  1. נכנסים לדף VM instances במסוף Google Cloud .

    כניסה לדף VM instances

  2. בעמודה סטטוס התחזוקה, מוצג ב-Compute Engine מצב התחזוקה של המכונות. אם העמודה הזו לא מופיעה בטבלה VM instances, לוחצים על view_column Column display options, מסמנים את תיבת הסימון Maintenance status ואז לוחצים על OK.

gcloud

כדי לראות את מצב התחזוקה של מכונה, משתמשים בפקודה gcloud compute instances describe עם הדגל --flatten=resourceStatus.upcomingMaintenance:

gcloud compute instances describe INSTANCE_NAME \
    --flatten=resourceStatus.upcomingMaintenance \
    --zone=ZONE

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

  • INSTANCE_NAME: שם המכונה.

  • ZONE: האזור שבו המכונה קיימת.

הפלט אמור להיראות כך:

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

    ---
    canReschedule: true
    latestWindowStartTime: '2025-11-01T19:00:00Z'
    maintenanceReasons:
    - 'PLANNED_UPDATE'
    - 'PLANNED_NETWORK_UPDATE'
    maintenanceStatus: 'PENDING'
    type: 'SCHEDULED'
    windowEndTime: '2025-11-01T22:00:00Z'
    windowStartTime: '2025-11-01T19:00:00Z'
    
  • אם לא מתוכנן אירוע תחזוקה של המארח עבור המכונה שלכם, הפלט ייראה כך:

    ---
    null
    

REST

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

  • כדי להציג מופעים בכל האזורים: שיטת instances.aggregatedList.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/instances?fields=items.name,items.machineType,items.upcomingMaintenance&filter=machineType%3AMACHINE_TYPE
    
  • כדי להציג מכונות באזור ספציפי: שיטת instances.list.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances?fields=items.name,items.machineType,items.upcomingMaintenance&filter=machineType%3AMACHINE_TYPE
    

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

  • PROJECT_ID: מזהה הפרויקט שבו יצרתם את המופעים.

  • ZONE: האזור שבו קיימים המופעים.

  • MACHINE_TYPE: סוג המכונה שרוצים לסנן את המופעים לפי.

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

{
  "items": [
    {
      "name": "vm-01",
      "machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g",
      "resourceStatus": {
        "upcomingMaintenance": {
          "canReschedule": true,
          "latestWindowStartTime": "2024-11-01T19:00:00Z",
          "maintenanceStatus": "PENDING",
          "maintenanceReasons": [
            "PLANNED_UPDATE",
            "PLANNED_NETWORK_UPDATE"
          ],
          "type": "SCHEDULED",
          "windowEndTime": "2024-11-01T22:00:00Z",
          "windowStartTime": "2024-11-01T19:00:00Z"
        }
      }
    },
    ...
  ]
}

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

שרת מטא-נתונים

כדי לראות את סטטוס התחזוקה של מופע:

  1. אם עדיין לא עשיתם זאת, מתחברים למופע Linux או Windows.

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

    curl http://metadata.google.internal/computeMetadata/v1/instance/upcoming-maintenance?alt=json -H "Metadata-Flavor: Google"
    

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

    "Upcoming maintenance": {
      "can_reschedule": "true",
      "latest_window_start_time": "2024-12-01T19:00:01Z",
      "maintenance_reasons": [
        "PLANNED_UPDATE",
        "PLANNED_NETWORK_UPDATE"
      ],
      "maintenance_status": "PENDING",
      "type": "SCHEDULED",
      "window_end_time": "2024-12-01T21:00:01Z",
      "window_start_time": "2024-12-01T19:00:01Z"
    }
    

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

    { }
    
  3. כדי לראות את מצב התחזוקה הנוכחי של מכונת VM, שולחים שאילתה לנקודת הקצה maintenance-event:

    curl http://metadata.google.internal/computeMetadata/v1/instance/maintenance-event -H "Metadata-Flavor: Google"
    

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

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

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

בהתאם למצב התחזוקה של מופע, יקרו הדברים הבאים:

מצב תחזוקה תיאור מה שרואים
מתוזמנת מתוכחנת תחזוקה למכונה ב-Compute Engine. אתם יכולים להתחיל את התחזוקה ידנית לפני המועד שנקבע.
  • במסוף Google Cloud , מצב התחזוקה מוצג כ-Ready to run - will run on DATE.
  • ב-CLI של gcloud או ב-API בארכיטקטורת REST,‏ Compute Engine מגדיר את השדה maintenanceStatus לערך PENDING.
בתהליך מתבצעות פעולות תחזוקה. אי אפשר לתזמן אותו מחדש.
  • במסוף Google Cloud , מצב התחזוקה יהיה פועל.
  • ב-CLI של gcloud או ב-API בארכיטקטורת REST,‏ Compute Engine מגדיר את השדה maintenanceStatus לערך ONGOING.
הושלמה התחזוקה הסתיימה. ‫Compute Engine הסיר את כל ההתראות על תחזוקה מהאינסטנס.
  • במסוף Google Cloud , מצב התחזוקה יהיה עדכני.
  • ב-CLI של gcloud או ב-API בארכיטקטורת REST,‏ Compute Engine מגדיר את השדה maintenanceStatus לערך COMPLETE.

אפשר להתחיל תחזוקה ידנית של כמה מכונות וירטואליות בו-זמנית או של מכונות וירטואליות בודדות. אם יש לכם כמה מכונות, אתם יכולים להשתמש במסוף Google Cloud או ב-CLI של gcloud (אם המכונות ממוקמות באותו אזור). למופעים בודדים, בוחרים באחת מהאפשרויות הבאות:

המסוף

  1. נכנסים לדף VM instances במסוף Google Cloud .

    כניסה לדף VM instances

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

  3. לוחצים על הפעלת תחזוקה.

  4. כדי לאשר, לוחצים על הפעלת תחזוקה.

gcloud

כדי להפעיל תחזוקה באופן ידני עבור מופע אחד או יותר באותו אזור, משתמשים בפקודה gcloud compute instances perform-maintenance:

gcloud compute instances perform-maintenance INSTANCE_NAMES \
    --zone=ZONE

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

  • INSTANCE_NAMES: רשימה של שמות מכונות שמופרדים ברווחים. לדוגמה, vm-01 vm-02 vm-03.

  • ZONE: האזור שבו קיימים המופעים.

REST

כדי להפעיל תחזוקה באופן ידני במכונה, שולחים בקשת POST אל ה-method‏ instances.performMaintenance:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/performMaintenance

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

  • PROJECT_ID: מזהה הפרויקט שבו יצרתם את המופע.

  • ZONE: האזור שבו המכונה קיימת.

  • INSTANCE_NAME: שם המכונה.

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