1. מבוא
שלום לכולם, תודה שהגעתם היום. מוכנים ללמוד את Google Compute Engine?
ב-Codelab הזה, נבחן את Compute Engine תוך שימוש באפליקציה לדוגמה של ספר אורחים.
אתם יוצרים מכונות של Compute Engine, פורסים את nginx ולבסוף מציבים מאזן עומסי רשת בחזית. אפשר ליצור מכונה של Compute Engine מהמסוף הגרפי או משורת הפקודה. בשיעור ה-Lab הזה תלמדו איך להשתמש בשורת הפקודה.
Google Compute Engine כולל מכונות וירטואליות שפועלות במרכזי הנתונים של Google, שמחוברים לרשת הסיבים העולמית שלה. הכלים ותהליך העבודה שמוצעים מאפשרים התאמה לעומס (scaling) ממכונות בודדות למחשוב ענן גלובלי עם איזון עומסים.
המכונות הווירטואליות האלה מופעלות במהירות, כוללות אחסון מתמיד (persistent disk) ומספקות ביצועים עקביים. המכונות זמינות בתצורות רבות, כולל גדלים מוגדרים מראש, ואפשר גם ליצור אותן עם סוגי מכונות בהתאמה אישית שמותאמים לצרכים הספציפיים שלכם.
לבסוף, מכונות וירטואליות של Compute Engine הן גם הטכנולוגיה שבה משתמשים מספר מוצרים אחרים של Google Cloud (Kubernetes Engine, Cloud Dataproc, Cloud Dataflow וכו').
2. הגדרה ודרישות
הגדרת סביבה בקצב עצמאי
- נכנסים למסוף Google Cloud ויוצרים פרויקט חדש או עושים שימוש חוזר בפרויקט קיים. אם אין לכם עדיין חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.
- Project name הוא השם המוצג של המשתתפים בפרויקט. זו מחרוזת תווים שלא נעשה בה שימוש ב-Google APIs, ואפשר לעדכן אותה בכל שלב.
- Project ID חייב להיות ייחודי בכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו (אי אפשר לשנות אותו אחרי שמגדירים אותו). מסוף Cloud יוצר מחרוזת ייחודית באופן אוטומטי; בדרך כלל לא מעניין אותך מה זה. ברוב ה-Codelabs תצטרכו להפנות אל מזהה הפרויקט (ובדרך כלל הוא מזוהה כ-
PROJECT_ID
), כך שאם הוא לא מוצא חן בעיניכם, תוכלו ליצור פרויקט אקראי אחר או לנסות בעצמכם ולבדוק אם הוא זמין. ואז המכשיר 'קפוא' לאחר יצירת הפרויקט. - יש ערך שלישי, Project Number, שחלק מממשקי ה-API משתמשים בו. מידע נוסף על כל שלושת הערכים האלה זמין במסמכי התיעוד.
- בשלב הבא צריך להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבים או בממשקי API של Cloud. מעבר ב-Codelab הזה לא אמור לעלות הרבה, אם בכלל. כדי להשבית את המשאבים ולא לצבור חיובים מעבר למדריך הזה, פועלים לפי ההנחיות למחיקת המשאבים. בסוף ה-Codelab. משתמשים חדשים ב-Google Cloud זכאים להצטרף לתוכנית תקופת ניסיון בחינם בשווי 1,200 ש"ח.
Google Cloud Shell
אפשר להפעיל את Google Cloud ואת Compute Engine מרחוק מהמחשב הנייד, אבל ב-Codelab הזה נשתמש ב-Google Cloud Shell, סביבת שורת הפקודה שפועלת ב-Cloud.
המכונה הווירטואלית הזו שמבוססת על Debian נטענת עם כל הכלים למפתחים שדרושים לכם. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר משמעותית את ביצועי הרשת והאימות. כלומר, כל מה שדרוש ל-Codelab הזה הוא דפדפן (כן, הוא פועל ב-Chromebook).
- כדי להפעיל את Cloud Shell ממסוף Cloud, לוחצים על Activate Cloud Shell (ההקצאה וההתחברות לסביבה אמורות להימשך כמה דקות).
אחרי ההתחברות ל-Cloud Shell, אתם אמורים לראות שכבר בוצע אימות ושהפרויקט כבר מוגדר ל-PROJECT_ID
שלכם.
gcloud auth list
פלט הפקודה
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
פלט הפקודה
[core] project = <PROJECT_ID>
אם מסיבה כלשהי הפרויקט לא מוגדר, פשוט מריצים את הפקודה הבאה:
gcloud config set project <PROJECT_ID>
רוצה למצוא את ה-PROJECT_ID
שלך? אתם יכולים לבדוק באיזה מזהה השתמשתם בשלבי ההגדרה או לחפש אותו במרכז הבקרה של מסוף Cloud:
Cloud Shell גם מגדירה משתני סביבה כברירת מחדל, והוא יכול להיות שימושי כשמריצים פקודות עתידיות.
echo $GOOGLE_CLOUD_PROJECT
פלט הפקודה
<PROJECT_ID>
- בשלב האחרון, מגדירים את ברירת המחדל של האזור והפרויקט.
gcloud config set compute/zone us-central1-f
אפשר לבחור מגוון אזורים שונים. מידע נוסף זמין במאמר אזורים ו אזורים.
3. יצירת מכונה של Compute Engine
כמו שהסברנו קודם, נשתמש בשורת הפקודה gcloud
ב-Codelab הזה. ניתן לעשות את כל מה שעושים כאן באמצעות המסוף (זמין בכתובת console.cloud.google.com).
קודם ניצור מופע עם הגדרות ברירת המחדל :
$ gcloud compute instances create myinstance Created [...]. NAME: myinstance ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING
כדאי לרשום את מה שחשוב לדעת בהמשך. EXTERNAL_IP
המכונה נוצרת באמצעות כמה ברירות מחדל :
- האזור שאתם בוחרים. כל המופעים נמצאים בתחום (zone). אפשר לבחור תחום (zone) בזמן היצירה של המכונה באמצעות הדגל
--zone
, או להגדיר תחום ברירת מחדל (כפי שעשינו בהגדרה הראשונית) ולהשמיט את הדגל--zone
. - התמונה העדכנית ביותר של Debian GNU/Linux 9 (רצועה). אם אתם משתמשים בתמונה מותאמת אישית משלכם, צריך לציין כאן את שם התמונה. לדוגמה,
--image my-own-image
. - סוג המכונה
n1-standard-1
. אפשר לבחור סוג מכונה אחר, כמוn1-highmem-4
אוn1-highcpu-6
. אם אף אחד מסוגי המכונות המוגדרים מראש לא מתאים לצרכים שלכם, צריך להשתמש בסוג מכונה בהתאמה אישית. - הרמה הבסיסית (root) של אחסון מתמיד (persistent disk) עם שם זהה למכונה. האחסון יתחבר באופן אוטומטי למכונה.
הריצו את gcloud compute instances create --help
כדי לראות את כל האפשרויות הזמינות.
4. הפעלת חומת אש ליציאה 80
כברירת מחדל, ב-Google Cloud Platform אפשר לבצע רק מעט יציאות. מכיוון שבקרוב נתקין את Nginx, קודם נפעיל את היציאה 80 בהגדרת חומת האש.
$ gcloud compute firewall-rules create allow-80 --allow tcp:80 Created [...]. NAME: allow-80 NETWORK: default DIRECTION: INGRESS PRIORITY: 1000 ALLOW: tcp:80 DENY: DISABLED: False
הפעולה הזו תיצור כלל חומת אש בשם allow-80
, שכולל רשימת ברירת מחדל של חסימות של כתובות IP שמורשות לבצע חיבורים נכנסים (--source-ranges
) שמוגדרים כ-0.0.0.0/0
(בכל מקום).
מריצים את הפקודה gcloud compute firewall-rules create --help
כדי לראות את כל ברירות המחדל ואת כל האפשרויות הזמינות, כולל האפשרות להחיל כללי חומת אש שמבוססים על תגים.
5. SSH למכונה
כדי להיכנס למכונה באמצעות SSH משורת הפקודה (עדיין מ-Cloud Shell) :
$ gcloud compute ssh myinstance Waiting for SSH key to propagate. Warning: Permanently added 'compute.12345' (ECDSA) to the list of known hosts. ... yourusername@myinstance:~#
זהו! די קל. (בסביבת הייצור, חשוב להזין ביטוי סיסמה :)
לחלופין, אפשר גם להיכנס עם SSH למכונה ישירות מהמסוף ( console.cloud.google.com), על ידי מעבר אל Compute Engine > מכונות וירטואליות, ולחיצה על SSH.
6. התקנת Nginx
נכנסים אל myinstance, למכונה החדשה שנוצרה ומתקינים את nginx:
$ sudo su - # apt update # apt install -y nginx # service nginx start # exit
בודקים שהשרת פועל באמצעות curl
מ-myinstance:
$ curl -s localhost | grep nginx <title>Welcome to nginx!</title> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and <a href="http://nginx.org/">nginx.org</a>.<br/> <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p>
כדי למצוא את כתובת ה-IP החיצונית של המכונה, מציגים את רשימת המופעים דרך ממשק המשתמש באינטרנט:
ודאו שיוצאים מ-SSH ומריצים את הפקודה הבאה מ-Cloud Shell:
$ gcloud compute instances list NAME: myinstance ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING
לאחר מכן עוברים אל http://EXTERNAL_IP/
, שבו EXTERNAL_IP
היא כתובת ה-IP הציבורית של myinstance אמורה להופיע בדף nginx:
7. סקריפט להפעלה
במקום להגדיר את המכונה בכל פעם, אפשר להשתמש בסקריפט לטעינה בזמן ההפעלה כדי לאתחל את המכונה בזמן ההפעלה.
יוצרים קובץ בשם startup.sh
עם התוכן הבא (אפשר להשתמש בעורך הטקסט המועדף עליכם: vim
, nano
או emacs
):
#! /bin/bash apt-get update apt-get install -y nginx service nginx start sed -i -- 's/nginx/Google Cloud Platform - '"$HOSTNAME"'/' /var/www/html/index.nginx-debian.html
כדי ליצור מכונת VM חדשה באמצעות הסקריפט ההתחלתי הזה, פשוט מקלידים :
$ gcloud compute instances create nginx \ --metadata-from-file startup-script=startup.sh Created [...]. NAME: nginx ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING
אם תעברי אל http://EXTERNAL_IP/
, תוכלי לראות את דף הבית המעודכן. אם הדף לא מופיע, יש לנסות שוב באופן מיידי לאחר מספר שניות, יכול להיות שהמארח עדיין מתחיל ב-nginx.
8. יצירת אשכול של שרתים
כדי ליצור אשכול של שרתים, צריך קודם ליצור תבנית מכונה. אחרי שיוצרים תבנית של מכונה, אפשר ליצור קבוצת מכונות כדי לנהל את מספר המופעים שאפשר ליצור.
קודם כל, יוצרים תבנית של מכונה באמצעות סקריפט ההפעלה :
$ gcloud compute instance-templates create nginx-template \ --metadata-from-file startup-script=startup.sh Created [...]. NAME: nginx-template MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: CREATION_TIMESTAMP: 2022-03-18T15:10:37.621-07:00
השלב השני הוא ליצור מאגר יעד. מאגר יעד מאפשר לנו לקבל נקודת גישה אחת לכל המכונות בקבוצה, והוא הכרחי לאיזון העומסים בשלבים הבאים.
$ gcloud compute target-pools create nginx-pool Created [...]. NAME: nginx-pool REGION: us-central1 SESSION_AFFINITY: NONE BACKUP: HEALTH_CHECKS:
לבסוף, יוצרים קבוצת מכונות באמצעות התבנית:
$ gcloud compute instance-groups managed create nginx-group \ --base-instance-name nginx \ --size 2 \ --template nginx-template \ --target-pool nginx-pool Created [...]. NAME: nginx-group LOCATION: us-central1-f SCOPE: zone BASE_INSTANCE_NAME: nginx SIZE: 0 TARGET_SIZE: 2 INSTANCE_TEMPLATE: nginx-template AUTOSCALED: no
הפעולה הזו תיצור שתי מכונות וירטואליות נוספות עם שמות שהקידומת שלהן היא nginx-
.
עכשיו תוכלו לראות את כל המופעים שנוצרו.
$ gcloud compute instances list NAME: myinstance ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING NAME: nginx ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING NAME: nginx-frpl ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING NAME: nginx-ztg4 ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING
9. יצירת מאזן עומסי רשת
יש כמה סוגים של מאזני עומסים ב-Google Cloud Platform, כולל :
בואו ניצור מאזן עומסי רשת אזורי שמטרגט את קבוצת המופעים שלנו:
$ gcloud compute forwarding-rules create nginx-lb \ --ports 80 \ --target-pool nginx-pool Created [...]. $ gcloud compute forwarding-rules list NAME: nginx-lb REGION: us-central1 IP_ADDRESS: X.X.X.X IP_PROTOCOL: TCP TARGET: us-central1/targetPools/nginx-pool
לאחר מכן אפשר להיכנס למאזן העומסים מהדפדפן http://IP_ADDRESS/
, שבו IP_ADDRESS
היא הכתובת שמוצגת כתוצאה מהרצת הפקודה הקודמת.
לכן לא ניצור היום מאזן עומסים מסוג HTTP.
10. ניקוי האשכול
לא לשכוח להשבית את האשכול, אחרת הוא ימשיך לפעול ולצבור עלויות. הפקודות הבאות ימחקו את המכונות של Google Compute Engine, קבוצת מכונות, קבוצת טירגוט ומאזן עומסים.
$ gcloud compute forwarding-rules delete nginx-lb $ gcloud compute instance-groups managed delete nginx-group $ gcloud compute target-pools delete nginx-pool $ gcloud compute instance-templates delete nginx-template $ gcloud compute instances delete nginx $ gcloud compute instances delete myinstance $ gcloud compute firewall-rules delete allow-80
כל אחת מהפקודות שלמעלה אמורה לבקש מכם אישור למחיקת המשאב.
11. מה השלב הבא?
כל הכבוד, השלמת את ה-codelab ב-Compute Engine!
תכונות נוספות של Compute Engine
Google Compute Engine כולל מגוון עשיר של תכונות. מומלץ להתעמק בחלק מהנושאים הבאים :
- Preemptible VMs – https://cloud.google.com/compute/docs/instances/create-start-preemptible-instance
- שרתים לדייר יחיד (sole-tenant) – https://cloud.google.com/compute/docs/nodes/create-nodes
- מעבדי GPU מעבדי TPU – https://cloud.google.com/compute/docs/gpus/add-gpus
- מכונות Windows – https://cloud.google.com/compute/docs/instances/windows/creating-managing-windows-instances
- משאבים להוספת תוויות – https://cloud.google.com/compute/docs/labeling-resources
- העברת מכונות וירטואליות ל-Compute Engine – https://cloud.google.com/compute/docs/vm-migration/
Google Kubernetes Engine
Google Kubernetes Engine (GKE) הוא חבילת Kubernetes מנוהלת ומנוהלת של Google Cloud. יש כמה שיעורי Lab זמינים שיעזרו לכם להתחיל עם GKE. הנה סיסמה טובה שאפשר להתחיל עם :
- Codelab של Google Kubernetes Engine – https://codelabs.developers.google.com/codelabs/cloud-gke-workshop-v2
נשמח לקבל ממך משוב
- כדאי למלא את הסקר הקצר מאוד שלנו