1. מבוא
אסטרטגיה היברידית היא פתרון פרגמטי שיעזור לכם להסתגל לשינויים בביקוש בשוק ולעדכן את האפליקציות שלכם בהדרגה. תמיכה היברידית במאזני עומסים חיצוניים ופנימיים של HTTP(S) ב-Google Cloud מרחיבה את איזון העומסים בענן גם לשרתי קצה שנמצאים בפריסה מקומית ובעננים אחרים, והיא מרכיב חיוני באסטרטגיה ההיברידית שלכם. יכול להיות שההגדרה הזו זמנית, כדי לאפשר מעבר לפתרון מודרני מבוסס-ענן, או שהיא קבועה בתשתית ה-IT של הארגון.

בשיעור ה-Lab הזה תלמדו איך ליצור קבוצת נקודות קצה ברשת (NEG) באמצעות שתי מכונות וירטואליות שאפשר לגשת אליהן ממאזן עומסים גלובלי חיצוני מסוג HTTP(S). למרות שקבוצת ה-NEG במעבדה נמצאת ב-GCP, משתמשים באותו הליך כדי לתקשר עם משאבים ציבוריים או מקומיים עם נגישות ל-IP.
מה תלמדו
- יצירת VPC בהתאמה אישית
- יצירת שתי מכונות וירטואליות (VM) שמשמשות כקבוצת נקודות קצה ברשת (NEG)
- יצירת מאזן עומסים היברידי, שירות לקצה העורפי ובדיקות תקינות משויכות
- יצירת כלל לחומת האש שמאפשר גישה למאזן העומסים
- ייווצרו Cloud Router ו-NAT כדי לאפשר עדכוני חבילות מהאינטרנט
- אימות הנגישות של קבוצת נקודות קצה ברשת
מה תצטרכו
- ידע במאזני עומסים
הגדרת סביבה בקצב אישי
- נכנסים אל Cloud Console ויוצרים פרויקט חדש או משתמשים בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או Google Workspace, אתם צריכים ליצור חשבון.



- שם הפרויקט הוא המזהה האישי שלכם בפרויקט הזה. כל עוד אתם פועלים לפי מוסכמות השמות, אתם יכולים להשתמש בכל שם שתרצו ולעדכן אותו מתי שתרצו.
- מזהה הפרויקט חייב להיות ייחודי בכל הפרויקטים ב-Google Cloud, והוא קבוע (אי אפשר לשנות אותו אחרי שמגדירים אותו). מסוף Cloud יוצר באופן אוטומטי מחרוזת ייחודית, ובדרך כלל לא צריך להתייחס אליה. ברוב ה-codelab, תצטרכו להפנות למזהה הפרויקט (ובדרך כלל הוא מזוהה כ-
PROJECT_ID), אז אם אתם לא אוהבים אותו, תוכלו ליצור מזהה אקראי אחר, או לנסות מזהה משלכם ולראות אם הוא זמין. אחרי שהפרויקט נוצר, הוא 'קפוא'.
- לאחר מכן, תצטרכו להפעיל את החיוב ב-Cloud Console כדי להשתמש במשאבים של Google Cloud.
העלות של התרגול הזה לא אמורה להיות גבוהה, ואולי אפילו לא תצטרכו לשלם בכלל. חשוב לפעול לפי ההוראות בקטע 'ניקוי' כדי להשבית את המשאבים, וכך לא תחויבו אחרי שתסיימו את המדריך הזה. משתמשים חדשים ב-Google Cloud זכאים לתוכנית תקופת ניסיון בחינם בשווי 300$.
מפעילים את Cloud Shell
אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל ב-codelab הזה תשתמשו ב-Google Cloud Shell, סביבת שורת פקודה שפועלת בענן.
ב-GCP Console, לוחצים על סמל Cloud Shell בסרגל הכלים שבפינה הימנית העליונה:

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

המכונה הווירטואלית הזו כוללת את כל הכלים שדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר מאוד את הביצועים והאימות ברשת. אפשר לבצע את כל העבודה ב-Lab הזה רק באמצעות דפדפן.
2. לפני שמתחילים
ב-Cloud Shell, מוודאים שמזהה הפרויקט מוגדר
gcloud config list project gcloud config set project [YOUR-PROJECT-ID] Perform setting your projectID: projectid=YOUR-PROJECT-ID echo $projectid
3. יצירת רשת VPC חדשה במצב מותאם אישית
במשימה הזו תיצרו ענן וירטואלי פרטי (VPC), שהוא הבסיס של הרשת.
רשת VPC
מ-Cloud Shell
gcloud compute networks create hybrid-network-lb --subnet-mode custom
יצירת רשת משנה
מ-Cloud Shell
gcloud compute networks subnets create network-endpoint-group-subnet --network hybrid-network-lb --range 192.168.10.0/24 --region us-west1
יצירת מופע Cloud NAT
למרות שחיבור לאינטרנט לא נדרש לרשתות היברידיות, מופע המחשוב צריך חיבור לאינטרנט כדי להוריד אפליקציות ועדכונים.
במשימה הזו תיצרו Cloud Router ומופע NAT שיאפשרו קישוריות לאינטרנט למכונות וירטואליות.
יצירת Cloud Router
מ-Cloud Shell
gcloud compute routers create crnat --network hybrid-network-lb --region us-west1
יצירת Cloud NAT
מ-Cloud Shell
gcloud compute routers nats create cloudnat --router=crnat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --enable-logging --region us-west1
4. יצירת שתי מכונות וירטואליות
במשימה הזו תיצרו שתי מכונות וירטואליות שמריצות Apache. בהמשך שיעור ה-Lab, המכונות הווירטואליות האלה יהפכו לקבוצת נקודות קצה ברשת (NEG).
מ-Cloud Shell יוצרים את המכונה הראשונה בפריסה המקומית, on-prem-neg-1
gcloud compute instances create on-prem-neg-1 \
--zone=us-west1-a \
--tags=allow-health-check \
--image-family=debian-9 \
--image-project=debian-cloud \
--subnet=network-endpoint-group-subnet --no-address \
--metadata=startup-script='#! /bin/bash
apt-get update
apt-get install apache2 -y
a2ensite default-ssl
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'
מ-Cloud Shell יוצרים את המכונה הראשונה בפריסה המקומית, on-prem-neg-2
gcloud compute instances create on-prem-neg-2 \
--zone=us-west1-a \
--tags=allow-health-check \
--image-family=debian-9 \
--image-project=debian-cloud \
--subnet=network-endpoint-group-subnet --no-address \
--metadata=startup-script='#! /bin/bash
apt-get update
apt-get install apache2 -y
a2ensite default-ssl
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'
5. יצירת NEG שמכיל את נקודת הקצה המקומית
קודם כול, יוצרים NEG בשם on-prem-neg-1 ו-on-prem-neg-2. תציינו גם שה-LB צריך להתייחס לנקודות הקצה האלה לצורך ניתוב ואיזון עומסים כאילו הן נמצאות באזור GCP us-west1-a. מומלץ שהאזור שהוגדר יתאים לכל אזור שמשויך לאזור של חיבור ה-Interconnect או שער ה-VPN, לצורך מדידות של איזון עומסים שמבוססות על קרבה, שמשמשות לאיזון עומסים.
מ-Cloud Shell יוצרים on-prem-neg-1
gcloud compute network-endpoint-groups create on-prem-neg-1 \
--network-endpoint-type NON_GCP_PRIVATE_IP_PORT \
--zone "us-west1-a" \
--network hybrid-network-lb
מ-Cloud Shell יוצרים on-prem-neg-2
gcloud compute network-endpoint-groups create on-prem-neg-2 \
--network-endpoint-type NON_GCP_PRIVATE_IP_PORT \
--zone "us-west1-a" \
--network hybrid-network-lb
ב-codelab, קבוצת נקודות הקצה ברשת היא מופע GCE שבו פועל Apache ב-GCP. אפשר גם לציין נקודת קצה מקומית או נקודת קצה באינטרנט כנקודת הקצה של הרשת
מזהים את כתובות ה-IP של GCE מ-Cloud Shell
gcloud compute instances list | grep -i on-prem
משייכים את קבוצת נקודות הקצה ברשת לכתובת ה-IP של מופע GCE שזוהתה בשלב הקודם. לכל קבוצת נקודות קצה ברשת, on-prem-neg-1 & on-prem-neg-2.
מ-Cloud Shell, משייכים את on-prem-neg-1, מעדכנים את x.x.x.x עם כתובת ה-IP שזוהתה
gcloud compute network-endpoint-groups update on-prem-neg-1 \
--zone="us-west1-a" \
--add-endpoint="ip=x.x.x.x,port=80"
מ-Cloud Shell, משייכים את on-prem-neg-2, מעדכנים את x.x.x.x עם כתובת ה-IP שזוהתה
gcloud compute network-endpoint-groups update on-prem-neg-2 \
--zone="us-west1-a" \
--add-endpoint="ip=x.x.x.x,port=80"
6. יצירת בדיקת תקינות מסוג HTTP, שירות קצה עורפי וחומת אש
בשלב הזה תיצרו שירות לקצה עורפי גלובלי בשם on-prem-backend-service. שירות הלקצה העורפי הזה מגדיר איך מישור הנתונים ישלח תנועה ל-NEG.
קודם כול, יוצרים בדיקת תקינות בשם on-prem-health-check כדי לעקוב אחרי התקינות של נקודות קצה ששייכות ל-NEG הזה (כלומר, נקודת הקצה המקומית).
מ-Cloud Shell
gcloud compute health-checks create http on-prem-health-check
יוצרים שירות לקצה העורפי בשם on-prem-backend-service ומשייכים אותו לבדיקת התקינות.
מ-Cloud Shell
gcloud compute backend-services create on-prem-backend-service \
--global \
--load-balancing-scheme=EXTERNAL \
--health-checks on-prem-health-check
מאזן עומסים חיצוני מסוג HTTP(S) ושרת קצה עורפי מבצעים בדיקות תקינות שמקורן ברשתות המשנה 35.191.0.0/16 ו-130.211.0.0/22. לכן, נדרש כלל חומת אש כדי לאפשר ניתוב ממאזן העומסים לשרת הקצה העורפי.
מ-Cloud Shell
gcloud compute firewall-rules create fw-allow-health-check \
--network=hybrid-network-lb \
--action=allow \
--direction=ingress \
--source-ranges=130.211.0.0/22,35.191.0.0/16 \
--target-tags=allow-health-check \
--rules=tcp:80
7. משייכים את ה-NEG ואת שירות הקצה העורפי
הוספת ה-NEG on-prem-neg-1 לשירות הקצה העורפי הזה
מ-Cloud Shell
gcloud compute backend-services add-backend on-prem-backend-service \
--global \
--network-endpoint-group on-prem-neg-1 \
--network-endpoint-group-zone us-west1-a \
--balancing-mode RATE \
--max-rate-per-endpoint 5
הוספת ה-NEG on-prem-neg-2 לשירות לקצה העורפי הזה
מ-Cloud Shell
gcloud compute backend-services add-backend on-prem-backend-service \
--global \
--network-endpoint-group on-prem-neg-2 \
--network-endpoint-group-zone us-west1-a \
--balancing-mode RATE \
--max-rate-per-endpoint 5
שמירת כתובת IP סטטית מסוג IPv4 שמשמשת לגישה לנקודת הקצה של הרשת
מ-Cloud Shell
gcloud compute addresses create hybrid-lb-ip --project=$projectid --global
סיימנו את ההגדרה של ה-CLI. עכשיו נסיים את ההגדרה מ-Cloud Console.
8. יצירת מאזן עומסים חיצוני מסוג HTTP ושיוך השירות לקצה העורפי
במסוף Cloud, עוברים אל Load Balancing (איזון עומסים) ובוחרים באפשרות Create load balancer (יצירת מאזן עומסים).
מזהים את איזון העומסים ב-HTTP(S) ולוחצים על 'התחלת ההגדרה'.

בוחרים באפשרות 'מהאינטרנט אל המכונות הווירטואליות שלי' כמו בצילום המסך שלמטה, כדי לאפשר גישה ציבורית למכונה הווירטואלית

מזינים xlb כשם מאזן העומסים ובוחרים בשירות הקצה העורפי שיצרתם קודם, on-prem-backend-service, ואז לוחצים על ok, כמו בצילום המסך שמופיע למעלה.

בוחרים באפשרות Frontend configuration (תצורת קצה קדמי), מעדכנים את השם xlb-fe ובוחרים את כתובת ה-IPv4 הסטטית שנוצרה קודם. חשוב לוודא שההגדרות זהות לאלה שמופיעות בצילום המסך 
בוחרים באפשרות 'בדיקה וסיום' כדי להתאים את צילום המסך שסופק, ואז בוחרים באפשרות 'יצירה'.

אימות תקינות של ה-Backend
במסוף Cloud, מוודאים שהקצה העורפי xlb תקין (ירוק) לפי צילום המסך שסופק

9. אימות האפשרות להגיע ל-NEG מהאינטרנט
שימו לב שכתובת ה-IP החיצונית הסטטית שבה השתמשתם כשיצרתם את מאזן העומסים היא עכשיו כתובת ה-IP של ממשק הקצה של נקודות הקצה ברשת. לפני שנבצע את הבדיקה הסופית, נבצע אימות של כתובת ה-IP.
מ-Cloud Shell
gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress:
פלט (כתובת ה-IP שלכם תהיה שונה)
פלט מ-Cloud Shell
$ gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress: IPAddress: 34.96.103.132
אפשר לגשת לבק-אנד של נקודת הקצה ברשת באמצעות כתובת ה-IP של ממשק הקצה של מאזן העומסים הגלובלי. הערה: ב-Codelab, נקודת הקצה היא מכונת GCE, אבל אפשר להשתמש בה גם עם נקודות קצה מקומיות, למשל.
מתחנת העבודה המקומית, מפעילים מסוף ומבצעים curl לכתובת ה-IP של מאזן העומסים
מבצעים curl מתוך תחנת העבודה מול כתובת ה-IP של חזית האתר. בודקים את התגובה 200 OK ואת פרטי הדף שכוללים את שם המופע של ה-NEG והאזור.
myworkstation$ curl -v 34.96.103.132
* Trying 34.96.103.132...
* TCP_NODELAY set
* Connected to 34.96.103.132 (34.96.103.132) port 80 (#0)
> GET / HTTP/1.1
> Host: 34.96.103.132
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Tue, 10 Aug 2021 01:21:54 GMT
< Server: Apache/2.4.25 (Debian)
< Last-Modified: Tue, 10 Aug 2021 00:35:41 GMT
< ETag: "24-5c929ae7384f4"
< Accept-Ranges: bytes
< Content-Length: 36
< Content-Type: text/html
< Via: 1.1 google
<
Page on on-prem-neg-2 in us-west1-a
* Connection #0 to host 34.96.103.132 left intact
* Closing connection 0
מזל טוב, פרסת בהצלחה מאזן עומסים היברידי ברמה 7 עם קבוצות NEG
כל הכבוד, סיימתם את ה-Codelab!
מה נכלל
- יצירת VPC בהתאמה אישית
- יצירת שתי מכונות וירטואליות (VM) שמשמשות כקבוצת נקודות קצה ברשת (NEG)
- יצירת מאזן עומסים היברידי, שירות לקצה העורפי ובדיקות תקינות משויכות
- יצירת כלל לחומת האש שמאפשר גישה למאזן העומסים
- אימות הנגישות של קבוצת נקודות קצה ברשת
10. שלבי הניקוי
בממשק המשתמש של מסוף Cloud, מזהים את מאזן העומסים xlb ומסמנים אותו, ואז בוחרים באפשרות 'מחיקה' דרך Network Services (שירותי רשת) → Load Balancing (איזון עומסים). אחרי שבוחרים את השירות, מסמנים את התיבות 'on-premise-backend service' (שירות עורפי מקומי) ו-'on-premise-health-check' (בדיקת תקינות מקומית) ואז בוחרים באפשרות 'מחיקה'.

בממשק המשתמש של Cloud Console, מנווטים אל Compute Engine → Network Endpoint Groups (קבוצות של נקודות קצה ברשת). אחרי שבוחרים, מסמנים את התיבות 'on-prem-neg-1' ו-'on-prem-neg-2' ואז בוחרים באפשרות 'מחיקה'.

מחיקת רכיבי מעבדה מ-Cloud Shell
gcloud compute routers nats delete cloudnat --router=crnat --region us-west1 --quiet gcloud compute routers delete crnat --region us-west1 --quiet gcloud compute instances delete on-prem-neg-1 --zone=us-west1-a --quiet gcloud compute instances delete on-prem-neg-2 --zone=us-west1-a --quiet gcloud compute firewall-rules delete fw-allow-health-check --quiet gcloud compute networks subnets delete network-endpoint-group-subnet --region=us-west1 --quiet gcloud compute networks delete hybrid-network-lb --quiet gcloud compute addresses delete hybrid-lb-ip --global --quiet