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

באמצעות שילוב של משפחות של קובצי אימג' בהתאמה אישית ועדכונים מתגלגלים, אתם יכולים להפעיל שדרוגים של קובצי אימג' של מערכת ההפעלה בלחיצה אחת בקבוצת מופעי מכונה מנוהלים (MIG).

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

  • התכונה פועלת עם כל סוגי המכונות הווירטואליות וכל הגדלים של קבוצות המופעים.
  • תמיכה בקובצי אימג' ובקונטיינרים של Windows ו-Linux.
  • המופעים נוצרים מחדש על סמך תבנית המופע הנוכחית שלהם, או על סמך תבנית חדשה (אופציונלי), כך שאפשר לשמור סקריפטים מותאמים אישית להפעלה ומטא-נתונים.
  • התכונה פועלת עם קבוצות מנוהלות עם שמירת מצב, כך שאפשר לשמור נתונים בדיסקים שאינם דיסקים לאתחול.
  • ההפצה של עדכון לגרסת מערכת ההפעלה החדשה מתבצעת באופן אוטומטי, בלי שנדרש קלט של משתמשים נוסף אחרי הבקשה הראשונית.
  • תומך בעדכונים בכמות גדולה עם בדיקת תקינות אופציונלית.

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

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

      gcloud init
    2. הגדרת אזור ותחום כברירת מחדל

איך פועל שדרוג תמונת מערכת ההפעלה בלחיצה אחת?

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

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

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

  • מתקינים או מעדכנים את הגרסה האחרונה של Google Cloud CLI.

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

    כשמצביעים על משפחת תמונות בתבנית של הגדרות מכונה, ה-MIG תמיד יוצר מופעים מהתמונה האחרונה במשפחה. לדוגמה:

    • כשקבוצת ה-MIG מוסיפה מופעים חדשים כי אתם או מנגנון שינוי הגודל האוטומטי של קבוצת ה-MIG הגדלתם את הגודל של קבוצת ה-MIG.
    • כשקבוצת ה-MIG יוצרת מחדש מכונה, בעקבות הפעלה ידנית או תיקון תוכנה אוטומטי (autohealing).
  • לפני שמוסיפים את התמונה החדשה למשפחת התמונות ומשיקים אותה, כדאי לבדוק אותה באפליקציה.

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

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

כדי לעדכן את כל המכונות הווירטואליות ב-MIG לאימג' האחרון ממשפחת אימג'ים בהתאמה אישית, מבצעים את השלבים הבאים:

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

    gcloud compute instance-groups managed rolling-action replace instance-group-name \
        [--max-surge=max-surge ] [--max-unavailable=max-unavailable]

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

    • instance-group-name: השם של קבוצת ה-MIG שעליה רוצים לבצע את הפעולה.
    • max-surge: מספר המכונות הווירטואליות הנוספות המקסימלי שאפשר ליצור באופן זמני במהלך תהליך העדכון. אפשר להגדיר מספר קבוע (לדוגמה, 5) או אחוז מגודל ה-MIG (לדוגמה, 10%).
    • max-unavailable: המספר המקסימלי של מכונות וירטואליות שלא יכולות להיות זמינות במהלך תהליך העדכון. אפשר להגדיר מספר קבוע (5) או אחוז מגודל ה-MIG (10%).

    אפשר לשלב בדיקות תקינות באמצעות --max-unavailable ו--max-surge האפשרויות כדי להפסיק עדכונים נוספים אם הם גורמים למכונות הווירטואליות להיות לא זמינות.

  2. עוקבים אחרי העדכון באמצעות פקודת המשנה wait-until כדי לוודא שהשדה status.versionTarget.isReached של ה-MIG מוגדר ל-true.

    gcloud compute instance-groups managed wait-until instance-group-name --version-target-reached

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

    • instance-group-name: השם של קבוצת ה-MIG שעליה רוצים לבצע את הפעולה.

    הפקודה תחזיר תשובה כשהקבוצה תתעדכן.

    אפשר גם לרשום את המכונות הווירטואליות כדי לראות את הסטטוס של כל מכונה וירטואלית.

    gcloud compute instance-groups managed list-instances instance-group-name

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

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

דוגמה

בדוגמה הזו מוסבר איך לבצע את המשימות הבאות:

  1. יצירת תבנית של הגדרות מכונה כדי לעדכן בקלות את תמונת מערכת ההפעלה:
  2. יוצרים קבוצת MIG על סמך התבנית.
  3. כדי לצמצם את ההפרעות שעלולות להיגרם בעקבות עדכון תמונה, כדאי להגדיר בדיקת תקינות.
  4. הוספת תמונה חדשה למשפחת תמונות.
  5. להפעיל עדכון של מערכת ההפעלה באמצעות פקודה אחת.
  6. עוקבים אחרי העדכון.

כדי להפעיל שדרוגי מערכת הפעלה בלחיצה אחת ב-MIG ולבצע אותם:

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

    gcloud compute instance-templates create example-template \
        --machine-type n1-standard-4 \
        --image-family my-image-family \
        --image-project my-project \
        --tags=http-server
    
  2. יוצרים קבוצת מופעי מכונה מנוהלים (MIG) על סמך תבנית של הגדרות מכונה. בדוגמה הזו, קבוצת ה-MIG מופעלת עם שלוש מכונות וירטואליות שמבוססות על example-template. מכיוון שתבנית המופע מציינת משפחת תמונות, ה-MIG יוצר כל מכונה וירטואלית עם התמונה העדכנית ביותר מהמשפחה.

    gcloud compute instance-groups managed create example-group \
      --base-instance-name example \
      --size 3 \
      --zone us-east1-b \
      --template example-template
    
  3. אופציונלי: מגדירים ומפעילים בדיקת תקינות מבוססת-אפליקציה. אם האפליקציה לא מגיבה אחרי עדכון תמונה, אפשר להשתמש בסטטוס של בדיקת תקינות בשילוב עם ההגדרה maxUnavailable כדי למנוע פריסות נוספות של ה-MIG.

    1. יוצרים בדיקת תקינות שמחפשת תגובת HTTP 200 בנתיב הבקשה /health. אפליקציית GitHub שנמצאת בכל מופע משרתת את הנתיב הזה.

      gcloud compute health-checks create http example-autohealer-check \
          --check-interval 10 \
          --timeout 5 \
          --healthy-threshold 2 \
          --unhealthy-threshold 3 \
          --request-path "/health"
      
    2. יוצרים כלל חומת אש שמאפשר לבקשות לבדיקת תקינות לגשת למופעים. הבדיקות של כלי הבדיקה מגיעות מכתובות בטווחים: 130.211.0.0/22 ו-35.191.0.0/16

      gcloud compute firewall-rules create default-allow-http-health-check \
          --network default \
          --allow tcp:80 \
          --source-ranges 130.211.0.0/22,35.191.0.0/16
      
    3. מוסיפים את בדיקת תקינות ל-MIG.

      gcloud compute instance-groups managed update example-group \
          --zone us-east1-b --health-check example-autohealer-check
      
  4. כשעדכון זמין, נבדק ונמצא כתואם לאפליקציה שלכם, צריך ליצור תמונה חדשה ולהשתמש בדגל --family כדי לכלול את התמונה הזו במשפחת התמונות המותאמות אישית.

    gcloud compute images my-image-v2 \
        --source-disk boot-disk-1 \
        --source-disk-zone us-central1-f \
        --family my-image-family

    בדוגמה הזו, התמונה האחרונה ב-my-image-family היא עכשיו my-image-v2, שמבוססת על דיסק המקור boot-disk-1.

  5. מפעילים החלפה הדרגתית כדי להחליף את כל המכונות הווירטואליות ב-MIG. קבוצת המכונות המנוהלת מחליפה כל מכונה וירטואלית על סמך תבנית של הגדרות מכונה של הקבוצה. בתבנית של הגדרות מכונה מצוין my-image-family, כך שכל מכונה וירטואלית מקבלת את התמונה העדכנית ביותר במשפחה (my-image-v2).

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

    gcloud compute instance-groups managed rolling-action replace example-group \
        --max-surge 1 --max-unavailable 0
    
  6. כדי לעקוב אחרי סטטוס העדכונים, משתמשים בפקודה wait-until עם הדגל --version-target-reached. הפקודה תחזיר תשובה כשהקבוצה תתעדכן.

    gcloud compute instance-groups managed wait-until --version-target-reached example-group \
        --zone us-east1-
    Waiting for group to reach version target
    ...
    Version target is reached
    

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

    gcloud compute instance-groups managed list-instances example-group \
        --zone us-east1-b
    
    
    NAME       ZONE        STATUS   HEALTH_STATE  ACTION     INSTANCE_TEMPLATE  VERSION_NAME                        LAST_ERROR
    test-211p  us-east1-b  RUNNING  HEALTHY       NONE       example-template   0/2020-01-30 13:34:28.843377+00:00
    test-t5qb  us-east1-b  RUNNING  UNKNOWN       VERIFYING  example-template   0/2020-01-30 13:34:28.843377+00:00
    test-x331  us-east1-b  RUNNING  HEALTHY       NONE       example-template   0/2020-01-20 20:39:51.819399+00:00
    
  7. אם אתם צריכים לבטל את השינוי ולחזור לתמונה קודמת, אתם יכולים לפעול לפי השלבים הבאים:

    1. יוצרים תבנית של הגדרות מכונה חדשה שמציינת את התמונה הרצויה.
    2. מפעילים עדכון הדרגתי כדי להחיל את תבנית המופע.

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