במאמר הזה נסביר איך להשהות או להפעיל מחדש מכונות של Compute Engine. מידע נוסף על השהיה, עצירה או איפוס של מכונות זמין במאמר השהיה, עצירה או איפוס של מכונות Compute Engine.
אם אתם רוצים להשאיר את המכונה של Compute Engine, אבל לא רוצים לשלם עליה כשהיא לא בשימוש, אתם יכולים להשהות אותה. השעיה של מופע שומרת את המופע ומעבירה את התוכן של הזיכרון של המופע לאחסון. אחרי שממשיכים את הפעולה של המכונה, Compute Engine מעביר את הזיכרון של המכונה מהאחסון בחזרה למכונה, והמכונה מתחילה לפעול שוב.
השעיית מכונה של Compute Engine יכולה להיות שימושית במקרים הבאים:
סביבות פיתוח ובדיקה שלא נמצאות בשימוש מלא בתקופות של חוסר פעילות, כמו בערבים או בסופי שבוע, ושאתם רוצים לשמור כדי לחסוך בעלויות או כדי לאתחל מהר יותר מאשר ליצור מכונות חדשות.
אפליקציות שנדרש להן פרק זמן ארוך לאתחול אחרי שהמופע סיים את האתחול, אבל לפני שהאפליקציה מוכנה לטפל בבקשה הראשונה שלה, כמו תחנות עבודה וירטואליות למפתחים או אפליקציות מורכבות של Java.
מגבלות
כשמשעים מכונת חישוב, חלות המגבלות הבאות:
אפשר להשעות מכונה רק אם מערכת ההפעלה של האורח תומכת בכך. פרטים על מערכת ההפעלה
אפשר להשעות מכונה שמשתמשת בקובצי האימג' הבאים של מערכת ההפעלה רק אם מגדירים את מערכת ההפעלה שלה, כפי שמתואר במסמך הזה:
Debian 8 או 9
כל מערכת הפעלה של Windows
אפשר להשהות מכונה למשך 60 ימים בלבד לפני שמערכת Compute Engine מעבירה את המצב שלה באופן אוטומטי ל
TERMINATED.אפשר להשעות מכונות וירטואליות מסוג VM במודל Spot או מופעים זמניים של מכונות וירטואליות – אבל אם Compute Engine מפסיק את הפעולה של המכונה לפני שהפעולה של ההשעיה מסתיימת, הוא מסיים את פעולת ההשעיה ומפסיק את הפעולה של המכונה.
אי אפשר להשעות מכונות באמצעות התהליכים הרגילים שמובנים בסביבת האורח שלהן. פקודות כמו
systemctl suspendב-Ubuntu 16.04 ואילך לא נתמכות. אם נשלחת קריאה, Compute Engine מתעלם מהאות בתוך האורח.אי אפשר להשעות את סוגי המקרים הבאים:
מופעי Bare Metal.
Confidential VMs
מכונות וירטואליות עם יחידות GPU או TPU שמצורפות אליהן.
מכונות עם זיכרון בנפח של יותר מ-208GB.
מקרים שבהם מצורפים דיסקים שמוגנים באמצעות CSEK (הוצא משימוש).
לפני שמתחילים
- מוודאים שלפרויקט יש מכסת
Persistent disk standard (GB)מספיקה באזור שבו נמצא המופע. כשמשעים מכונה, Compute Engine מאחסן את הזיכרון של המכונה באחסון מתמיד, שצורכת מכסה שלPersistent disk standard (GB). הדרישה הזו חלה על כל המקרים, כולל מקרים שבהם מצורפים רק נפחי Google Cloud Hyperdisk. מידע נוסף זמין במאמרים בנושא מכסות דיסק ופתרון בעיות שקשורות למכסות דיסק לא מספיקות. -
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא התהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים האלה:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים Google Cloud ולממשקי ה-API, לא צריך להגדיר אימות.
gcloud
-
התקינו את ה-CLI של Google Cloud. אחר כך, מאתחלים את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud initאם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
- הגדרת אזור ותחום כברירת מחדל
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
אם אתם משתמשים במעטפת מקומית, צריך ליצור פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם אתם משתמשים ב-Cloud Shell, אתם לא צריכים לעשות את זה.
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
אם אתם משתמשים במעטפת מקומית, צרו פרטי כניסה לאימות מקומי בחשבון המשתמש:
gcloud auth application-default login
אם אתם משתמשים ב-Cloud Shell, אתם לא צריכים לעשות את זה.
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
אם אתם משתמשים במעטפת מקומית, צרו פרטי כניסה לאימות מקומי בחשבון המשתמש:
gcloud auth application-default login
אם אתם משתמשים ב-Cloud Shell, אתם לא צריכים לעשות את זה.
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
אם אתם משתמשים במעטפת מקומית, צרו פרטי כניסה לאימות מקומי בחשבון המשתמש:
gcloud auth application-default login
אם אתם משתמשים ב-Cloud Shell, אתם לא צריכים לעשות את זה.
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
אם אתם משתמשים במעטפת מקומית, צרו פרטי כניסה לאימות מקומי בחשבון המשתמש:
gcloud auth application-default login
אם אתם משתמשים ב-Cloud Shell, אתם לא צריכים לעשות את זה.
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
המשך
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Go שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Java
כדי להשתמש בדוגמאות של Java שבדף הזה בסביבת פיתוח מקומית, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Node.js
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Node.js שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
PHP
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של PHP שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Python
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Python שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
REST
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.
התקינו את ה-CLI של Google Cloud.
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .
התפקידים הנדרשים
כדי לקבל את ההרשאות שנדרשות להשהיה או להפעלה מחדש של מכונת Compute, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) במכונה.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
זהו תפקיד שמוגדר מראש וכולל את ההרשאות שנדרשות להשעיה או להפעלה מחדש של מכונת Compute. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי להשהות או להפעיל מחדש מכונת וירטואלית, צריך את ההרשאות הבאות:
-
כדי להשעות מופע:
compute.instances.suspend -
כדי להפעיל מחדש מופע:
compute.instances.resume
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
הפעלת פעולות השעיה במערכת הפעלה של אורח
אם במכונה שלכם מותקנת מערכת ההפעלה Debian 8 או 9, או כל מערכת הפעלה של Windows, תצטרכו להגדיר את מערכת ההפעלה לפני שתוכלו להשהות ולהמשיך את המכונות. אם המופע שלכם משתמש במערכת הפעלה אחרת לאורח, אפשר לדלג על הקטע הזה.
הפעלת השעיה של פעולות ב-Debian 8 או 9
כדי להשעות או להמשיך מכונות Compute שמשתמשות ב-Debian 8 או 9 כמערכת הפעלה של אורח, צריך להגדיר את מערכת ההפעלה של האורח באחת מהשיטות הבאות:
הגדרת ACPID
כדי להפעיל את הפעולות של השהיה והמשך ב-Debian 8 או 9, אפשר להגדיר את הדמון של אירועי Advanced Configuration and Power Interface (ממשק מתקדם להגדרת תצורה וניהול צריכת חשמל, ACPID) כדי לטפל באירוע של לחצן השינה. אחרי שמפעילים את אירוע הלחצן של שינה עמוקה, אפשר להוסיף סקריפט מעטפת לטיפול באירוע השינה, כמו שמתואר בקטע הזה.
כדי להגדיר את ACPID כך שיתמוך בפעולות השהיה והמשך, מבצעים את הפעולות הבאות:
אם עדיין לא עשיתם זאת, מתחברים למופע Linux.
יוצרים את התיקייה
eventsבתיקייהacpi:sudo mkdir -p /etc/acpi/events/מגדירים את ה-ACPID לטיפול באירוע של כפתור ההשהיה:
cat <<EOF | sudo tee /etc/acpi/events/sleepbtn-acpi-support event=button[ /]sleep action=/etc/acpi/sleepbtn-acpi-support.sh EOFיוצרים את הסקריפט לטיפול באירוע השינה:
cat <<EOF | sudo tee /etc/acpi/sleepbtn-acpi-support.sh #!/bin/sh echo mem > /sys/power/state EOFמגדירים את ההרשאות לסקריפט:
sudo chmod 755 /etc/acpi/sleepbtn-acpi-support.shכדי שהשינויים ייכנסו לתוקף, מפעילים מחדש את ה-ACPID:
sudo systemctl restart acpid.service
התקנה של D-Bus
כדי להפעיל את הפעולה של השהיה והמשך ב-Debian 8 או 9, אפשר להתקין את D-Bus.
כדי להתקין את D-Bus במערכת ההפעלה האורחת של מופע החישוב כשמערכת ההפעלה משתמשת ב-Debian 8 או 9, צריך לבצע את הפעולות הבאות:
אם עדיין לא עשיתם זאת, מתחברים למכונה של Linux.
מתקינים את D-Bus:
sudo apt-get install dbusכדי שהשינויים ייכנסו לתוקף, צריך להפעיל מחדש את
logind:sudo systemctl restart systemd-logind.service
הפעלת השעיה של פעולות ב-Windows
כדי להשעות מופע שמשתמש במערכת הפעלה אורחת של Windows, צריך להשבית את מצב השינה במערכת ההפעלה. אם ייבאתם קובץ אימג' של Windows, יכול להיות שמצב השינה מופעל כברירת מחדל, ותצטרכו להשבית אותו כדי להשעות את המכונה.
כדי להשבית את מצב השינה ב-Windows, פועלים לפי השלבים הבאים:
אם עדיין לא עשיתם זאת, מתחברים למכונה של Windows.
פותחים את PowerShell כאדמין.
השבתת מצב שינה:
powercfg -h offמוודאים שמצב השינה מושבת:
powercfg -a
השעיית מכונה
אם מערכת ההפעלה האורחת של מכונת החישוב שלכם היא Debian 8 או 9, לפני השהיית המכונה, אתם צריכים להגדיר את מערכת ההפעלה האורחת כך שתתמוך בפעולות השהיה והפעלה מחדש, כמו שמתואר במסמך הזה.
כדי להשעות מכונה, משתמשים באחת מהשיטות הבאות, בהתאם לשאלה אם למכונה מצורפים דיסקים מסוג Local SSD:
אם לא מצורפים למופע דיסקים מקומיים מסוג SSD, אפשר לעיין במאמר בנושא השעיית מופע ללא דיסקים מקומיים מסוג SSD.
אם למכונה שלכם מצורפים דיסקים של SSD מקומי, ואתם רוצים להסיר או לשמור (תצוגה מקדימה) את נתוני ה-SSD המקומי בדיסקים, כדאי לעיין במאמר בנושא השהיית מכונה עם דיסקים של SSD מקומי.
השהיית מכונה ללא דיסקים מקומיים מסוג SSD
אפשר להשעות כמה מופעי מחשוב בו-זמנית או מופעים בודדים. אם יש כמה מכונות, אפשר להשתמש במסוף Google Cloud או ב-Google Cloud CLI (אם המכונות נמצאות באותו אזור). למופעים ספציפיים, בוחרים באחת מהאפשרויות הבאות:
המסוף
נכנסים לדף VM instances במסוף Google Cloud .
בוחרים מכונה אחת או יותר שרוצים להשעות.
לוחצים על השעיה ואז על השעיה כדי לאשר.
gcloud
כדי להשהות מכונה אחת או יותר באזור יחיד, משתמשים בפקודה gcloud compute instances suspend:
gcloud compute instances suspend INSTANCE_NAMES \
--zone=ZONE
מחליפים את מה שכתוב בשדות הבאים:
INSTANCE_NAMES: רשימה של שמות מכונות שמופרדים ברווחים, לדוגמהinstance-01 instance-02 instance-03.
ZONE: האזור שבו נמצאים המופעים.
המשך
Java
Node.js
PHP
Python
REST
כדי להשהות מכונה, שולחים בקשת POST אל ה-method instances.suspend:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/suspend
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט שבו נמצא המופע.
ZONE: האזור שבו נמצאת המכונה.
INSTANCE_NAME: השם של המכונה.
השהיית מכונה עם דיסקים מסוג SSD מקומי
בהתאם למספר מופעי המחשוב שרוצים להשהות בו-זמנית ולצורך לשמור את הנתונים של דיסקי ה-SSD המקומיים שמצורפים אליהם, מבצעים את הפעולות הבאות:
כדי לשמור את הנתונים של דיסקי ה-SSD המקומיים שמחוברים למכונה (לא כולל מכונות עם דיסקי Titanium SSD), צריך להשעות את המכונה באמצעות ה-CLI של gcloud או ה-API בארכיטקטורת REST.
כדי להשהות כמה מכונות בו-זמנית, משתמשים במסוף Google Cloud או ב-CLI של gcloud (למכונות שנמצאות באותו אזור).
כדי להשעות מכונה אחת או יותר שמחוברים אליה דיסקים מסוג SSD מקומי, בוחרים באחת מהאפשרויות הבאות:
המסוף
נכנסים לדף VM instances במסוף Google Cloud .
בוחרים מכונה אחת או יותר להשעיה.
לוחצים על השעיה ואז על השעיה כדי לאשר.
gcloud
כשמשעים מכונה אחת או יותר באזור יחיד עם דיסקים מסוג Local SSD שמחוברים אליהן, צריך לציין אם לבטל את הנתונים של Local SSD או לשמור אותם, באופן הבא:
כדי למחוק את הנתונים ב-SSD המקומי, משתמשים בפקודה
gcloud compute instances suspendעם הדגל--discard-local-ssd=true:gcloud compute instances suspend INSTANCE_NAMES \ --discard-local-ssd=true \ --zone=ZONEכדי לשמור את הנתונים של ה-SSD המקומי, משתמשים בפקודה
gcloud beta compute instances suspendעם הדגל--discard-local-ssd=false:gcloud beta compute instances suspend INSTANCE_NAMES \ --discard-local-ssd=false \ --zone=ZONE
מחליפים את מה שכתוב בשדות הבאים:
INSTANCE_NAMES: רשימה של שמות מכונות שמופרדים ברווחים, לדוגמהinstance-01 instance-02 instance-03.
ZONE: האזור שבו נמצאים המופעים.
REST
כשמשעים מכונה שמחוברים אליה דיסקים של SSD מקומי, צריך לציין אם למחוק או לשמור את הנתונים ב-SSD המקומי, באופן הבא:
כדי לבטל את הנתונים של SSD מקומי, צריך לשלוח בקשת
POSTל-methodinstances.suspend. בכתובת ה-URL של הבקשה, מוסיפים את הפרמטרdiscardLocalSsdשל השאילתה, מוגדר ל-true:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/suspend?discardLocalSsd=trueכדי לשמור את הנתונים ב-SSD מקומי, צריך לשלוח בקשת
POSTל-methodbeta.instances.suspend. בכתובת ה-URL של הבקשה, מוסיפים את פרמטר השאילתהdiscardLocalSsdשמוגדר לערךfalse:POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/suspend?discardLocalSsd=false
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט שבו נמצא המופע.
ZONE: האזור שבו נמצאת המכונה.
INSTANCE_NAME: השם של המכונה.
המשך של מכונה מושעית
לפני שממשיכים להשתמש במופע של מכונת חישוב שהושעתה, כדאי לשים לב לנקודות הבאות:
אפשר להפעיל מחדש מכונה רק אם יש מספיק קיבולת באזור שבו היא נמצאת. בדרך כלל זה לא מהווה בעיה. אם לא הצלחתם להפעיל מחדש את המכונה, נסו שוב מאוחר יותר.
אם חיברתם דיסקים של Local SSD למכונה ובחרתם לשמור את הנתונים של Local SSD כשאתם משעים אותה, יכול להיות שתצטרכו לטעון מחדש את הדיסקים של Local SSD אחרי שתפעילו אותה מחדש. למידע נוסף, קראו איך טוענים מחדש דיסקים שאינם דיסקי אתחול במכונות של Linux או במכונות של Windows.
אפשר להמשיך כמה מופעים בו-זמנית או מופעים בודדים. לכמה מכונות, אפשר להשתמש במסוף Google Cloud או ב-CLI של gcloud (אם המכונות ממוקמות באותו אזור). למופעים ספציפיים, בוחרים באחת מהאפשרויות הבאות:
המסוף
נכנסים לדף VM instances במסוף Google Cloud .
בוחרים מכונה אחת או יותר שהושעו כדי להפעיל אותן מחדש.
לוחצים על Start / Resume (התחלה / המשך) ואז על Start (התחלה).
gcloud
כדי להפעיל מחדש מכונה אחת או יותר שהושעו באזור אחד, משתמשים בפקודה gcloud compute instances resume:
gcloud compute instances resume INSTANCE_NAMES \
--zone=ZONE
מחליפים את מה שכתוב בשדות הבאים:
INSTANCE_NAMES: רשימה מופרדת ברווחים של שמות של מופעים – לדוגמה,instance-01 instance-02 instance-03.
ZONE: האזור שבו נמצאות המכונות המושעות.
המשך
Java
Node.js
PHP
Python
REST
כדי להפעיל מחדש מכונה מושעית, שולחים בקשת POST אל ה-method instances.resume:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/resume
מחליפים את מה שכתוב בשדות הבאים:
INSTANCE_NAME: השם של המכונה שרוצים להשהות כדי להפעיל אותה מחדש.
PROJECT_ID: מזהה הפרויקט שבו נמצא המכונה שהושהתה.
ZONE: האזור שבו נמצאת המכונה המושעית.