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

במאמר הזה מתואר איך להחיל עדכוני תצורה באופן סלקטיבי על מופעי מכונה וירטואלית (VM) בקבוצת מופעי מכונה מנוהלים (MIG).

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

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

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

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

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

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

  • אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות. אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:

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

    המסוף

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

    gcloud

    1. התקינו את ה-CLI של Google Cloud. אחר כך, מאתחלים את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

      gcloud init

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

  • הגדרת אזור ותחום כברירת מחדל
  • REST

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

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

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

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

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

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

לאחר מכן משתמשים ב-CLI של gcloud או ב-REST כדי לעדכן את ההגדרה של ה-MIG וליישם את ההגדרה העדכנית במכונות וירטואליות ספציפיות בקבוצה או בכל המכונות הווירטואליות בקבוצה.

gcloud

כדי להגדיר תבנית חדשה של מכונה לקבוצה, אפשר להשתמש בפקודה set-instance-template.

gcloud compute instance-groups managed set-instance-template INSTANCE_GROUP_NAME \
    --template=INSTANCE_TEMPLATE

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

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

gcloud compute instance-groups managed update-instances INSTANCE_GROUP_NAME \
    --instances INSTANCE_NAMES \
    --most-disruptive-allowed-action DISRUPTION_LEVEL \
    --minimal-action DISRUPTION_LEVEL

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

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

gcloud compute instance-groups managed update-instances INSTANCE_GROUP_NAME \
    --all-instances \
    --most-disruptive-allowed-action DISRUPTION_LEVEL \
    --minimal-action DISRUPTION_LEVEL

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

  • ‫INSTANCE_GROUP_NAME: השם של ה-MIG
  • INSTANCE_TEMPLATE: תבנית של הגדרות מכונה
  • ‫INSTANCE_NAMES: רשימת מכונות וירטואליות להחלת התבנית עליהן
  • ‫DISRUPTION_LEVEL: רמת השיבוש המינימלית או המקסימלית: none,‏ refresh,‏ restart או replace
    • פעולת ברירת המחדל המינימלית היא none
    • פעולת ברירת המחדל הכי משבשת שמותרת היא replace

REST

כדי להגדיר תבנית חדשה של הגדרות מכונה לקבוצה, קוראים לשיטה patch ב-MIG אזורי או אזורי ומעדכנים את השדה versions.instanceTemplate. כדי להימנע מהפעלת התבנית החדשה באופן אוטומטי בכל המכונות הווירטואליות בקבוצה, צריך להגדיר את השדה updatePolicy.type לערך OPPORTUNISTIC.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

{
  "updatePolicy": {
    "type": "OPPORTUNISTIC"
  },
  "versions": [{
    "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE",
  }]
}

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

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

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/applyUpdatesToInstances
{
  "instances": [
    "zones/ZONE/instances/INSTANCE_NAME_1",
    "zones/ZONE/instances/INSTANCE_NAME_2"
  ],
  "minimalAction": DISRUPTION_LEVEL,
  "mostDisruptiveAllowedAction": DISRUPTION_LEVEL
}

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

כדי להחיל את ההגדרה המעודכנת על כל המכונות הווירטואליות הקיימות, מגדירים את השדה allInstances לערך true:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/applyUpdatesToInstances
{
  "allInstances": true,
  "minimalAction": DISRUPTION_LEVEL,
  "mostDisruptiveAllowedAction": DISRUPTION_LEVEL
}

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

  • ‫INSTANCE_GROUP_NAME: שם הקבוצה
  • ‫NEW_TEMPLATE: השם של התבנית החדשה
  • ‫ZONE: האזור של מכונה לעדכון
  • ‫INSTANCE_NAME_1 ו-INSTANCE_NAME_2: שמות המכונות הווירטואליות שרוצים לעדכן
  • ‫DISRUPTION_LEVEL: רמת השיבוש המינימלית או המקסימלית: NONE,‏ REFRESH,‏ RESTART או REPLACE
    • ערך ברירת המחדל minimalAction הוא NONE.
    • ערך ברירת המחדל mostDisruptiveAllowedAction הוא REPLACE.

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

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

שליטה ברמת השיבוש במהלך עדכונים סלקטיביים

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

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

    • כדי לצמצם את ההפרעה ככל האפשר, מגדירים את הפעולה המינימלית לערך NONE. אם העדכון דורש פעולה שעלולה לשבש את הפעילות,‏ Compute Engine מבצע את הפעולה הנדרשת כדי להפעיל את העדכון.
    • כדי להחיל פעולה משבשת יותר מהנדרש, מגדירים את הפעולה המינימלית לערך RESTART או REPLACE. לדוגמה, ב-Compute Engine לא צריך להפעיל מחדש מכונה וירטואלית כדי לשנות את המטא-נתונים שלה. אבל אם האפליקציה קוראת את המטא-נתונים של המכונה רק כשמפעילים מחדש מכונה וירטואלית, אפשר להגדיר את הפעולה המינימלית ל-RESTART כדי לקבל את השינויים במטא-נתונים.
  • הפעולה המותרת הכי משבשת: משתמשים באפשרות הזו כדי למנוע עדכון אם הוא דורש שיבוש גדול יותר ממה שאתם יכולים להרשות לעצמכם. אם העדכון דורש פעולה שמשבשת את הפעילות יותר ממה שהגדרתם באמצעות הדגל הזה, בקשת העדכון תיכשל. לדוגמה, אם הפעולה הכי משבשת שמותרת היא RESTART, אז ניסיון לעדכן את תמונת הדיסק של האתחול ייכשל כי העדכון הזה מחייב יצירה מחדש של המופע, שהיא פעולה משבשת יותר מהפעלה מחדש.

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

ערך תיאור אילו מאפייני מופע אפשר לעדכן?
NONE לא לשבש את המופע בכלל. ללא
REFRESH אל תפסיקו את המכונה. דיסקים נוספים, ממשקי רשת דינמיים (NIC), מטא-נתונים של מופעים, תוויות, תגים
RESTART עוצרים את המכונה ומפעילים אותה מחדש. דיסקים נוספים, כרטיסי רשת דינמיים, מטא-נתונים של מופעים, תוויות, תגים, סוג מכונה
REPLACE מוחקים את המופע ויוצרים אותו מחדש. כל מאפייני המופע שמאוחסנים בתבנית המופע או בהגדרות האישיות של כל מופע

הפעולה הכי משבשת שמותרת לא יכולה להיות פחות משבשת מהפעולה המינימלית.

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

  • פעולת ברירת המחדל המינימלית היא NONE, שמגבילה את השיבוש ככל האפשר.
  • פעולת ברירת המחדל הכי משבשת שמותרת היא REPLACE. אם אתם לא יכולים לסבול שיבושים כאלה, כדאי להגדיר את הפעולה הכי משבשת שמותרת כך שהיא תהיה פחות משבשת.

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