1. מבוא
אסטרטגיה היברידית היא פתרון פרגמטי שמאפשר לכם להסתגל לשינויים בביקוש בשוק ולהפוך את האפליקציות שלכם למודרניות יותר. התמיכה ההיברידית במאזני עומסים חיצוניים ופנימיים של Google Cloud ב-Google Cloud מרחיבים את איזון העומסים בענן לקצוות העורפיים שנמצאים בארגון ובעננים אחרים, והיא משמשת כגורם מרכזי לשיפור האסטרטגיה ההיברידית שלכם. ייתכן שהמעבר יתבצע באופן זמני כדי לאפשר העברה לפתרון מודרני מבוסס-ענן או לרכיב קבוע בתשתית ה-IT של הארגון.
בשיעור ה-Lab הזה תלמדו איך ליצור קבוצת נקודות קצה ברשת (NEG) באמצעות שתי מכונות וירטואליות שאפשר לגשת אליהן ממאזן עומסים גלובלי של HTTP(s) חיצוני. למרות שה-NEG בשיעור ה-Lab נמצא בתוך GCP, אותו תהליך משמש לתקשורת עם משאבים ציבוריים או מקומיים עם יכולת הגעה של כתובות IP.
מה תלמדו
- יצירת VPC בהתאמה אישית
- יצירת שתי מכונות וירטואליות (VM) שמשמשות כקבוצת קצה של רשת (NEG)
- יצירת מאזן עומסים היברידי, שירות לקצה העורפי ובדיקות תקינות משויכות
- יצירת כלל של חומת אש שמאפשר גישה למאזן העומסים
- ייווצרו Cloud Router ו-NAT כדי לאפשר עדכוני חבילות מהאינטרנט
- אימות יכולת ההגעה (reachability) של קבוצת נקודות קצה ברשת
מה צריך להכין
- היכרות עם מאזני עומסים
הגדרת סביבה בקצב עצמאי
- נכנסים למסוף Cloud ויוצרים פרויקט חדש או עושים שימוש חוזר בפרויקט קיים. אם אין לכם עדיין חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.
- Project Name (שם הפרויקט) הוא המזהה האישי שלכם לפרויקט. כל עוד אתם פועלים בהתאם למוסכמות של מתן השמות, תוכלו להשתמש בכל מה שתרצו ולעדכן אותו בכל שלב.
- Project ID חייב להיות ייחודי בכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו (אי אפשר לשנות אותו אחרי שמגדירים אותו). מסוף Cloud יוצר מחרוזת ייחודית באופן אוטומטי. בדרך כלל לא מעניין אותך מה זה. ברוב ה-Codelabs תצטרכו להפנות אל מזהה הפרויקט (ובדרך כלל הוא מזוהה כ-
PROJECT_ID
), כך שאם הוא לא מוצא חן בעיניכם, תוכלו ליצור פרויקט אקראי אחר או לנסות בעצמכם ולבדוק אם הוא זמין. ואז המכשיר 'קפוא' לאחר יצירת הפרויקט.
- בשלב הבא צריך להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבים של Google Cloud.
מעבר ב-Codelab הזה לא אמור לעלות הרבה, אם בכלל. חשוב לבצע את כל ההוראות בקטע 'ניקוי' שמסביר איך להשבית משאבים כדי שלא תצברו חיובים מעבר למדריך הזה. משתמשים חדשים ב-Google Cloud זכאים להצטרף לתוכנית תקופת ניסיון בחינם בשווי 1,200 ש"ח.
הפעלת Cloud Shell
אומנם אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל ב-Codelab הזה משתמשים ב-Google Cloud Shell, סביבת שורת הפקודה שפועלת ב-Cloud.
ממסוף GCP, לוחצים על הסמל של Cloud Shell בסרגל הכלים שבפינה השמאלית העליונה:
נדרשים רק כמה דקות כדי להקצות את הסביבה ולהתחבר אליה. בסיום התהליך, אתם אמורים לראות משהו כזה:
למכונה הווירטואלית הזו נטען כל כלי הפיתוח הדרושים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר משמעותית את ביצועי הרשת והאימות. כל העבודה בשיעור ה-Lab הזה יכולה להתבצע באמצעות דפדפן בלבד.
2. לפני שמתחילים
ב-Inside 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. יצירת שתי מכונות VM
במשימה הזו תיצרו שתי מכונות וירטואליות שמריצים את Apache, בהמשך השיעור. מכונות ה-VM האלה יהפכו לקבוצת נקודת קצה של רשת (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 צריך לקחת בחשבון שלצורכי ניתוב ואיזון עומסים, נקודות הקצה האלה נמצאות באזור us-west1-a GCP. אנחנו ממליצים שהאזור שהוגדר יהיה תואם לכל תחום שמשויך לאזור של שער ה-VPN או השער החיבור ל-Interconnect לצורך מדידות של איזון עומסים מבוססות-קרבה שמשמשות לאיזון עומסים.
יוצרים on-prem-neg-1
ב-Cloud Shell
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
יוצרים on-prem-neg-2
ב-Cloud Shell
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 שלכם.
קודם כול, יוצרים בדיקת תקינות בשם 'בדיקת בריאות מקומית' כדי לעקוב אחרי התקינות של נקודות הקצה ששייכות ל-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.
8. יצירת מאזן עומסים חיצוני של HTTP שיוך השירות לקצה העורפי
ממסוף Cloud, עוברים אל Load Balancing והאפשרות 'יצירת מאזן עומסים' שנבחרה
מזהים את איזון העומסים מסוג HTTP(S) ולוחצים על start configuration
בוחרים באפשרות "From Internet to my VMs" (מהאינטרנט למכונות הווירטואליות שלי) לפי צילום המסך שלמטה שמאפשר גישה ציבורית ל-VM
צריך לספק "xlb" בתור שם מאזן העומסים ולבחור את השירות לקצה העורפי שנוצר בעבר 'on-prem-backend-service' ואז 'אוקיי' לפי צילום המסך שסופק
בחירה של הגדרת הקצה הקדמי, עדכון השם 'xlb-fe' ובוחרים את כתובת ה-IPv4 הסטטית שנוצרה קודם לכן, מוודאים שצילום המסך תואם
בוחרים באפשרות 'בדיקה והשלמת התהליך'. לאחר התאמה לצילום המסך שסופק ובוחרים באפשרות 'יצירה'
אימות תקינות הקצה העורפי
ממסוף Cloud, יש לוודא שהקצה העורפי 'xlb' תקין, ירוקה לפי צילום המסך שסופק
9. בדיקה שאפשר לגשת ל-NEG מהאינטרנט
הכרת כתובת ה-IP הסטטית החיצונית ששימשה ליצירת מאזן העומסים, מעכשיו כתובת ה-IP של ממשק הקצה של נקודות הקצה של הרשת. מאפשר לבצע אימות של כתובת ה-IP לפני שנבצע את הבדיקה הסופית.
מ-Cloud Shell
gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress:
הפלט (כתובת ה-IP תהיה שונה)
הפלט מ-cloudshell
$ gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress: IPAddress: 34.96.103.132
באמצעות כתובת ה-IP הגלובלית של מאזן העומסים הקדמי אפשר לגשת לקצה העורפי של נקודת הקצה של הרשת. הערה: ב-Codelab, נקודת הקצה היא מכונה של GCE, אבל צריך להשתמש בה עם נקודות קצה בארגון, לדוגמה.
בתחנת העבודה המקומית, מפעילים טרמינל וסורקים את כתובת ה-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
כל הכבוד, פרסת בהצלחה מאזן עומסים היברידי L7 עם NEG
מזל טוב, השלמת את Codelab!
אילו נושאים דיברנו?
- יצירת VPC בהתאמה אישית
- יצירת שתי מכונות וירטואליות (VM) שמשמשות כקבוצת קצה של רשת (NEG)
- יצירת מאזן עומסים היברידי, שירות לקצה העורפי ובדיקות תקינות משויכות
- יצירת כלל של חומת אש שמאפשר גישה למאזן העומסים
- אימות יכולת ההגעה (reachability) של קבוצת נקודות קצה ברשת
10. שלבי ניקוי
בממשק המשתמש של מסוף Cloud, מזהים את האפשרות 'xlb' ומסמנים אותה מאזן עומסים ובוחרים באפשרות 'מחיקה' דרך שירותי רשת ← איזון עומסים. לאחר הבחירה, מסמנים את האפשרות 'שירות לקצה העורפי בארגון' & ‘on-premise-health-check' ובוחרים באפשרות 'מחיקה'
מממשק המשתמש של מסוף Cloud, עוברים אל Compute Engine ← קבוצות של נקודות קצה (endpoint) של Network. אחרי הבחירה, מסמנים את האפשרות 'on-prem-neg-1' & ‘on-prem-neg-2' ובוחרים באפשרות 'מחיקה'
מחיקת רכיבי שיעור ה-Lab מ-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