במאמר הזה מוסבר איך לעקוב אחרי עבודות תחזוקה מתוזמנות, לתכנן אותן ולבצע אותן במכונות של אשכול GPU (A4X Max, A4X, A4, A3 Ultra, A3 Mega ו-A3 High (8 מעבדי GPU)) ושל מעבדי GPU כלליים. כדי לצמצם את ההפרעות ולשמור על ביצועים אופטימליים, כדאי לנהל באופן יזום את אירועי התחזוקה של המארח במכונות של Compute Engine.
למידע נוסף על אפשרויות לתחזוקת התשתית, קראו את המאמרים הבאים:
כדי לנהל את התחזוקה של בלוקים של קיבולת ששמורה למכונות, בין אם פועלות בהם מכונות ובין אם לא, קראו את המאמר ניהול אירועים במארחים בכל המכונות השמורות.
כדי לנהל את התחזוקה של אשכול ב-Cluster Director, קראו את המאמר ניהול תקינות האשכול.
לפני שמתחילים
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים ולממשקי ה-API של Google Cloud , לא צריך להגדיר אימות.
gcloud
מפעילים את Cloud Shell במסוף Google Cloud .
בחלק התחתון של מסוף 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בפרויקט
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
סקירה כללית
כדי לייעל את התחזוקה של המכונות, בצעו את הפעולות הבאות:
הסבר על תחזוקת המארח ואיך מטפלים בה. מידע ולמידה על התדירות ועל אופן התחזוקה של המכונות בהתאם לסדרת המכונות שלהן, ואיך להכין את עומס העבודה לטיפול בתחזוקת המארח. המידע הזה עוזר לכם לצמצם את השיבושים ולמנוע אובדן נתונים.
הגדרת הצליל והרטט של התראות ליצור התראות מבוססות-יומנים כדי לקבל התראות כשמתוזמנת, מתחילה או מסתיימת תחזוקה של המכונות. הגישה הזו עוזרת לכם לתכנן את הפעילויות באופן יזום ולמנוע זמני השבתה בלתי צפויים.
ניהול התחזוקה במכונות. לבדוק אם מתוכננות עבודות תחזוקה במכונות שלכם. במקרה הצורך, אתם יכולים להתחיל את התחזוקה באופן ידני בכל המכונות. התהליך הזה עוזר להגביר את העמידות של עומסי העבודה לאירועים במארח, למנוע זמני השבתה ולמקסם את הזמינות של האפליקציות.
הסבר על תחזוקת המארח ואיך לטפל בה
במהלך מחזור החיים של מכונה ב-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 יבצע תחזוקה בתדירות גבוהה יותר מדי פעם.
כדי למנוע אובדן נתונים או התקדמות, צריך להגדיר את עומסי העבודה כך שיטפלו בתחזוקת המארח. לדוגמה, אפשר להשתמש בשיטות הבאות כדי לשמור את הנתונים הזמניים ואת ההתקדמות לפני שעומס העבודה נעצר:
הגדרת התראות למכונות וירטואליות
כדי לקבל התראות על אירועי תחזוקה מתוזמנים, שהתחילו או שהסתיימו במכונות שלכם, אתם יכולים ליצור מדיניות התראות מבוססת-יומנים.
כדי ליצור התראה על אירועי תחזוקה במכונות, מבצעים את הפעולות הבאות: חוזרים על התהליך הזה לכל התראה שרוצים ליצור.
-
נכנסים לדף Logs Explorer ב- במסוף Google Cloud :
אם אתם משתמשים בשורת החיפוש כדי למצוא את הדף הזה, בחרו בתוצאה עם כותרת המשנה Logging.
לוחצים על המתג Show query כדי להפעיל אותו.
בחלונית 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"
כדי לאמת את השאילתה, לוחצים על Run query. אם השאילתה תקינה, בחלונית Query results יוצגו רשומות ביומן שתואמות לשאילתה.
בסרגל הכלים של תוצאות ה-Query, לוחצים על הרשימה Actions ובוחרים באפשרות Create log alert. מופיע החלון Create logs-based alert policy.
בקטע Alert details:
בשדה Alert Policy Name, מזינים שם למדיניות התראות.
ברשימה Policy severity level, בוחרים באפשרות Warning (או רמת חומרה גבוהה יותר).
לוחצים על הבא.
בקטע Choose logs to include in the alert, לוחצים על Next.
בקטע Set notification frequency and autoclose duration, מגדירים את הפרטים הבאים:
ברשימה Time between notifications, בוחרים באיזו תדירות רוצים לקבל התראות.
ברשימה Incident autoclose duration, בוחרים אחרי כמה זמן Cloud Logging יפסיק לשלוח התראות ויסגור את האירוע באופן אוטומטי.
לוחצים על הבא.
בקטע Who should be notified?, מציינים ערוץ התראות שאליו יישלחו התראות מ-Logging.
לוחצים על Save.
במאמר דוגמאות להתראות על אירועי תחזוקה שבמסמכי התיעוד של Compute Engine, תוכלו לראות דוגמאות להתראות על אירועי תחזוקה ב-Logs Explorer.
ניהול פעולות תחזוקה במכונות Compute
כדי לראות את פעולות התחזוקה של המכונות ולשלוט בהן, אתם יכולים לבצע אחת או יותר מהפעולות הבאות:
כדי לבדוק את המצב ואת המועד המתוכנן של עבודות התחזוקה הקרובות במכונות, צפו במצב התחזוקה של המכונות.
כדי להתחיל מיד את עבודות התחזוקה במכונות, במקום להמתין למועד המתוזמן, אתם יכולים להתחיל את עבודות התחזוקה במכונות באופן ידני.
הצגת מצב התחזוקה של מכונות Compute
כדי לראות את המצב ואת המועד המתוכנן של פעולות התחזוקה הקרובות במכונות, בודקים את הערך של השדה upcomingMaintenance במטא-נתונים של המכונה. אם המכונה לא מכילה את השדה upcomingMaintenance, לא מתוזמן אירוע תחזוקה למארח של המכונה. למידע נוסף על השדות ב-upcomingMaintenance, קראו את ההגדרות של סטטוס התחזוקה במאמרי העזרה של Compute Engine.
בנוסף, אם נקבעו עבודות תחזוקה למכונה, השדה upcomingGroupMaintenance מכיל את השדה maintenanceReasons. בשדה הזה מתוארת הסיבה שבגללה נקבעה תחזוקה למכונה, כפי שמתואר בטבלה הבאה:
| סוג התחזוקה | סיבת התחזוקה | מצב המכונה |
|---|---|---|
| תחזוקה מתוכננת אחרי דיווח על מארח פגום | FAILURE_GPU_CUSTOMER_REPORTED |
ההגדרה הזו רלוונטית רק למכונות שפועלות במארח שדיווחתם עליו כפגום. |
| תחזוקה מתוכננת לתחזוקה שוטפת |
|
החיוב חל על מכונות שפועלות, שהופסקו או שהושעו. |
| תחזוקת חירום לא מתוכננת |
|
ההגדרה חלה רק על מכונות שפועלות. |
כדי לראות את השדה maintenanceReasons במכונה, צריך להשתמש ב-CLI של gcloud או ב-API בארכיטקטורת REST. כדי לראות את מצב התחזוקה של כמה מכונות בו-זמנית, צריך להשתמש במסוף Google Cloud או ב-API בארכיטקטורת REST. אחרת, בוחרים באחת מהאפשרויות הבאות:
המסוף
נכנסים לדף VM instances במסוף Google Cloud .
בעמודה 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 לביטוי סינון אחר.
שרת מטא-נתונים
כדי לראות את מצב התחזוקה של מכונה:
אם עדיין לא עשיתם זאת, מתחברים לLinux או למכונה וירטואלית של Windows.
כדי לראות את לוח הזמנים של התחזוקה הקרובה, שולחים שאילתה לנקודת הקצה
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" }אם לא מתוזמן אירוע תחזוקה של מארח, הפלט יהיה דומה לזה:
{ }כדי לראות את מצב התחזוקה הנוכחי של מכונה וירטואלית, שולחים שאילתה לנקודת הקצה
maintenance-event:curl http://metadata.google.internal/computeMetadata/v1/instance/maintenance-event -H "Metadata-Flavor: Google"למידע נוסף על הפלט של השאילתות האלה, ראו בדיקת הפלט.
הפעלה ידנית של תחזוקה במכונות
אתם יכולים להתחיל את התחזוקה של המכונות באופן ידני במקום לחכות לזמן המתוזמן.
בהתאם למצב התחזוקה של המכונה, יקרה אחד מהדברים הבאים:
| מצב תחזוקה | תיאור | מה רואים |
|---|---|---|
| מתוזמנת | ב-Compute Engine נקבעה תחזוקה מתוזמנת למכונה. אתם יכולים להתחיל את התחזוקה באופן ידני לפני הזמן המתוזמן. |
|
| בתהליך | מתבצעת תחזוקה. אי אפשר לקבוע לו מועד חדש. |
|
| הושלמה | פעולות התחזוקה הסתיימו. Compute Engine הסיר את כל התראות התחזוקה מהמכונה. |
|
אפשר להפעיל ידנית את התחזוקה לכמה מכונות בו-זמנית או למכונות ספציפיות. כדי להפעיל כמה מכונות, משתמשים במסוף Google Cloud או ב-CLI של gcloud (אם המכונות נמצאות באותו אזור). במכונות וירטואליות ספציפיות, בוחרים באחת מהאפשרויות הבאות:
המסוף
נכנסים לדף VM instances במסוף Google Cloud .
בוחרים את השורות של המכונות שרוצים להתחיל בהן את פעולות התחזוקה.
לוחצים על הפעלת תחזוקה.
כדי לאשר, לוחצים על הפעלת תחזוקה.
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: שם המכונה.
המאמרים הבאים
כדי לבדוק את עומס העבודה אחרי אירוע במארח, קראו את המאמר מתכונים להשוואה (benchmarking).
מידע נוסף על מעקב אחרי מכונות וירטואליות זמין במאמר מעקב אחרי מכונות וירטואליות ואשכולות Slurm.