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

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



- שם הפרויקט הוא המזהה האישי שלכם לפרויקט הזה. כל עוד אתם פועלים לפי מוסכמות השמות, אתם יכולים להשתמש בכל שם שתרצו ולעדכן אותו בכל שלב.
- מזהה הפרויקט חייב להיות ייחודי בכל הפרויקטים ב-Google Cloud, והוא קבוע (אי אפשר לשנות אותו אחרי שמגדירים אותו). מסוף Cloud יוצר באופן אוטומטי מחרוזת ייחודית. בדרך כלל לא צריך להתייחס אליה. ברוב המעבדות ללימוד עצמי, תצטרכו להפנות למזהה הפרויקט (ובדרך כלל הוא מזוהה כ-
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. תציינו גם שצריך להתייחס לנקודות הקצה האלה לצורך ניתוב ואיזון עומסים כאילו הן נמצאות באזור 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)' ולוחצים על 'התחלת ההגדרה'.

בוחרים באפשרות From Internet to my VMs (מהאינטרנט למכונות הווירטואליות שלי) כמו בצילום המסך שלמטה, כדי לאפשר גישה ציבורית למכונה הווירטואלית.

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

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

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

9. אימות האפשרות להגיע ל-NEG מהאינטרנט
שימו לב שכתובת ה-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 עם קבוצות NEGs
כל הכבוד, סיימתם את ה-Codelab!
מה נכלל
- יצירת VPC בהתאמה אישית
- יצירת שתי מכונות וירטואליות (VM) שמשמשות כקבוצת נקודות קצה ברשת (NEG)
- יצירת מאזן עומסים היברידי, שירות לקצה העורפי ובדיקות תקינות משויכות
- יצירת כלל לחומת האש שמאפשר גישה למאזן העומסים
- אימות הנגישות של קבוצת נקודות קצה ברשת
10. שלבי הניקוי
בממשק המשתמש של מסוף Cloud, מזהים את מאזן העומסים xlb ומסמנים אותו, ואז בוחרים באפשרות 'מחיקה' דרך Network Services (שירותי רשת) → Load Balancing (איזון עומסים). אחרי שבוחרים, מסמנים את התיבות 'שירות backend מקומי' ו'בדיקת תקינות מקומית' ואז בוחרים באפשרות 'מחיקה'.

בממשק המשתמש של 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