באמצעות שילוב של משפחות של קובצי אימג' בהתאמה אישית ועדכונים מתגלגלים, אפשר להפעיל שדרוגים של קובצי אימג' של מערכת ההפעלה בלחיצה אחת בקבוצת מופעי מכונה מנוהלים (MIG).
לשדרוג תמונת מערכת ההפעלה בלחיצה אחת יש כמה יתרונות, כולל:
- התכונה פועלת עם כל סוגי המכונות הווירטואליות ועם כל הגדלים של קבוצות המופעים.
- תמיכה בקובצי אימג' ובקונטיינרים של Windows ו-Linux.
- המופעים נוצרים מחדש על סמך תבנית של הגדרות מכונה הנוכחית שלהם, או על סמך תבנית חדשה (אופציונלי), כך שתוכלו לשמור סקריפטים מותאמים אישית להפעלה ומטא-נתונים.
- התכונה פועלת עם קבוצות של מכונות וירטואליות עם שמירת מצב, כך שאפשר לשמור נתונים בדיסקים שאינם דיסקים לאתחול.
- ההשקה של עדכון לגרסה החדשה של מערכת ההפעלה מתבצעת באופן אוטומטי, בלי שנדרש קלט של משתמשים נוסף אחרי הבקשה הראשונית.
- תמיכה בעדכונים של קבוצות משתמשים עם בדיקת תקינות אופציונלית.
לפני שמתחילים
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:
-
התקינו את ה-CLI של Google Cloud. אחר כך, מאתחלים את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud initאם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
- הגדרת אזור ותחום כברירת מחדל
-
איך פועל שדרוג תמונת מערכת ההפעלה בלחיצה אחת?
כשמפעילים עדכון, ה-MIG מחליף את דיסקי האתחול של כל המכונות הווירטואליות בקבוצה בגרסה העדכנית ביותר של תמונת מערכת ההפעלה מתוך משפחת התמונות המותאמות אישית. קבוצת ה-MIG שומרת את המטא-נתונים ואת הסקריפטים לטעינה בזמן ההפעלה שהגדרתם בתבנית של הגדרות מכונה לכל מכונה וירטואלית בקבוצה. דיסקים שאינם דיסקי אתחול נוצרים מחדש על סמך המפרט שלהם בתבנית של הגדרות מכונה. מידע על שמירת נתונים זמין במאמר הגדרת דיסקים עם שמירת מצב ב-MIG.
כדי להגביל את השיבוש באפליקציות, אפשר לבצע עדכונים בקבוצות, ולשמור על אחוז מסוים של מכונות וירטואליות שפועלות במהלך העדכון. כדי לשפר את המהימנות, אפשר להגדיר בדיקת תקינות מבוססת-אפליקציה עבור ה-MIG: הקבוצה מחכה לתגובה תקינה מאפליקציה במכונות וירטואליות מעודכנות לפני שהיא ממשיכה לעדכן מכונות וירטואליות אחרות.
לפני שמתחילים
מתקינים או מעדכנים את הגרסה האחרונה של Google Cloud CLI.
מוודאים שיצרתם תבנית של הגדרות מכונה שמפנה למשפחת תמונות. Google ממליצה להשתמש במשפחות של תמונות בהתאמה אישית כדי להקטין את הסיכון להפעלת גרסת תמונה שלא תואמת לאפליקציה שלכם. כדי לוודא שרק גרסאות תמונה תואמות יופצו, צריך להוסיף תמונות למשפחת התמונות המותאמת אישית רק אחרי בדיקת התאימות עם האפליקציה.
כשאתם מציינים משפחת תמונות בתבנית של הגדרות מכונה, ה-MIG תמיד יוצר מכונות מהתמונה העדכנית ביותר במשפחה, לדוגמה:
- כשקבוצת ה-MIG מוסיפה מופעים חדשים כי אתם או מנגנון שינוי הגודל האוטומטי של קבוצת ה-MIG הגדלתם את הגודל של קבוצת ה-MIG.
- כשקבוצת ה-MIG יוצרת מחדש מכונה, בעקבות הפעלה ידנית או תיקון תוכנה אוטומטי (autohealing).
לפני שמוסיפים את התמונה החדשה למשפחת התמונות ומשיקים אותה, כדאי לבדוק אותה באפליקציה.
אופציונלי, אפשר ליצור בדיקת תקינות שמבוססת על אפליקציה עבור ה-MIG. בדיקת תקינות מבוססת-אפליקציה מאמתת שהאפליקציה מגיבה כמצופה בכל המכונות הווירטואליות ב-MIG. אתם יכולים להגדיר את העדכון כך שלא תהיה יותר ממכונה וירטואלית אחת לא זמינה. אם אפליקציה לא מגיבה כמו שצריך, קבוצת ה-MIG מסמנת את המכונה הווירטואלית כלא זמינה, וההשקה לא ממשיכה.
ביצוע שדרוגים של תמונות מערכת הפעלה של MIG בקליק אחד
כדי לעדכן את כל המכונות הווירטואליות בקבוצת MIG לתמונה העדכנית ביותר ממשפחת תמונות בהתאמה אישית, מבצעים את השלבים הבאים:
מפעילים החלפה מתגלגלת באמצעות הפקודה הבאה.
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אפשרויות כדי להפסיק עדכונים נוספים אם הם גורמים ל-VM להיות לא זמין.-
עוקבים אחרי העדכון באמצעות פקודת המשנה
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 מעודכנת ויציבה.-
במקרה שאתם צריכים להחזיר למצב קודם (roll back) לקובץ אימג' קודם של מערכת ההפעלה, עליכם ליצור תבנית של הגדרות מכונה ולציין את קובץ האימג' שבו אתם רוצים להשתמש. לאחר מכן, מתחילים עדכון בהדרגה כדי לעדכן את כל המופעים המנוהלים כך שישתמשו בתבנית הזו. מידע נוסף זמין במאמר בנושא חזרה לגרסה קודמת של עדכון.
דוגמה
בדוגמה הזו מוסבר איך לבצע את המשימות הבאות:
- ליצור תבנית של הגדרות מכונה כדי לעדכן בקלות את קובץ האימג' של מערכת ההפעלה:
- מציינים משפחת תמונות בהתאמה אישית בתבנית של הגדרות מכונה.
- יוצרים קבוצת MIG על סמך התבנית.
- כדי לצמצם את ההפרעות שעלולות להיגרם בעקבות עדכון תמונה, כדאי להגדיר בדיקת תקינות.
- הוספת תמונה חדשה למשפחת תמונות.
- הפעלת עדכון של מערכת ההפעלה באמצעות פקודה אחת.
- עוקבים אחרי העדכון.
כדי להפעיל שדרוגים של מערכת ההפעלה בלחיצה אחת ב-MIG ולבצע אותם:
יוצרים תבנית של הגדרות מכונה שמציינת משפחת תמונות בהתאמה אישית. משפחת התמונות צריכה לכלול תמונות שנבדקו ושאפשר לסמוך עליהן. כל מכונה וירטואלית שקבוצת ה-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יוצרים קבוצת מופעי מכונה מנוהלים (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
אופציונלי: מגדירים ומפעילים בדיקת תקינות מבוססת-אפליקציה. אם האפליקציה לא מגיבה אחרי עדכון תמונה, אפשר להשתמש בסטטוס של בדיקת תקינות בשילוב עם ההגדרה maxUnavailable כדי למנוע פריסות נוספות של ה-MIG.
יוצרים בדיקת תקינות שמחפשת תגובת 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"יוצרים כלל חומת אש שמאפשר לבדיקות התקינות (probes) לגשת למופעים. הבדיקות של בודק התקינות מגיעות מכתובות בטווחים:
130.211.0.0/22ו-35.191.0.0/16gcloud 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מוסיפים את בדיקת תקינות ל-MIG.
gcloud compute instance-groups managed update example-group \ --zone us-east1-b --health-check example-autohealer-check
כשעדכון זמין, נבדק ונמצא כתואם לאפליקציה שלכם, יוצרים תמונה חדשה ומשתמשים בדגל
--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.מפעילים החלפה הדרגתית כדי להחליף את כל המכונות הווירטואליות ב-MIG. קבוצת ה-MIG מחליפה כל מכונה וירטואלית על סמך תבנית של הגדרות מכונה של הקבוצה. בתבנית של הגדרות מכונה מצוין
my-image-family, ולכן כל מכונה וירטואלית מקבלת את האימג' העדכני ביותר במשפחה (my-image-v2).אתם יכולים להגדיר את רמת השיבוש שהעדכון גורם. בדוגמה הזו, ה-MIG יוצר מכונה וירטואלית אחת נוספת מעבר לגודל היעד של הקבוצה, והוא לא מסיר מכונות וירטואליות קיימות עד שהמכונה הווירטואלית הזו תפעל.
gcloud compute instance-groups managed rolling-action replace example-group \ --max-surge 1 --max-unavailable 0כדי לעקוב אחרי סטטוס העדכונים, משתמשים בפקודה
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אם אתם צריכים לבטל את השינוי ולחזור לתמונה הקודמת, אתם יכולים לעשות זאת באופן הבא:
- יוצרים תבנית של הגדרות מכונה חדשה שמציינת את התמונה הרצויה.
- מתחילים עדכון הדרגתי כדי להחיל את תבנית של הגדרות מכונה.
המאמרים הבאים
- מידע נוסף על שיטות מומלצות לשימוש במשפחת תמונות
- מידע נוסף על קבוצות של מכונות וירטואליות
- מידע נוסף על תבניות של מופעים
- מידע נוסף על עדכונים מדורגים ב-MIG