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

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

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

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

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

המסוף

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

gcloud

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

הפעלת 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 .

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

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

  • אדמין Compute ‏ (roles/compute.admin) בפרויקט
  • כדי לקבל גישה לקריאה בלבד ליומני הביקורת של אירועי המערכת: צפייה ביומנים (roles/logging.viewer) בפרויקט

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

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

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

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

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

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

סקירה כללית

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

  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 ימים. אם לא, זה ייקח כמה שעות. כן כן
A3 Edge 30 ימים לפחות סיום והפעלה מחדש 7 ימים אם מפעילים התראות למקרי חירום, ההקלטה נשמרת למשך 7 ימים. אם לא, זה ייקח כמה שעות. כן כן

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

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

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

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

הגדרת התראות למכונות וירטואליות

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

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

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

    נכנסים לדף Logs Explorer.

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

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

  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. בסרגל הכלים של תוצאות ה-Query, לוחצים על הרשימה Actions ובוחרים באפשרות Create log alert. מופיע החלון Create logs-based alert policy.

  6. בקטע Alert details:

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

    2. ברשימה Policy severity level, בוחרים באפשרות Warning (או רמת חומרה גבוהה יותר).

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

  7. בקטע Choose logs to include in the alert, לוחצים על Next.

  8. בקטע Set notification frequency and autoclose duration, מגדירים את הפרטים הבאים:

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

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

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

  9. בקטע Who should be notified?‎, מציינים ערוץ התראות שאליו יישלחו התראות מ-Logging.

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

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

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

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

הצגת מצב התחזוקה של מכונות Compute

כדי לראות את המצב ואת המועד המתוכנן של פעולות התחזוקה הקרובות במכונות, בודקים את הערך של השדה 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: פעולת תחזוקה לא מתוכננת שנקבעה בגלל שגיאה ב-NIC.
  • ‫FAILURE_MEMORY: תזמון של תחזוקה לא מתוכננת בגלל שגיאה בזיכרון של המכונה.
  • ‫FAILURE_NETWORK: תוכננה תחזוקה לא מתוכננת בגלל שגיאה ברשת.
  • ‫FAILURE_NVLINK: פעולת תחזוקה לא מתוכננת שנקבעה בגלל שגיאה ב-NVLink.
ההגדרה חלה רק על מכונות שפועלות.

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

המסוף

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

    כניסה לדף VM instances

  2. בעמודה Maintenance status ב-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. כדי לראות את מצב התחזוקה הנוכחי של מכונה וירטואלית, שולחים שאילתה לנקודת הקצה 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 , מצב התחזוקה מוצג כ-Running.
  • ב-CLI של gcloud או ב-API בארכיטקטורת REST, ‏Compute Engine מגדיר את השדה maintenanceStatus לערך ONGOING.
הושלמה פעולות התחזוקה הסתיימו. ‫Compute Engine הסיר את כל התראות התחזוקה מהמכונה.
  • במסוף Google Cloud , סטטוס התחזוקה הוא Up-to-date.
  • ב-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: שם המכונה.

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