שימוש במאזן עומסים משולב מסוג HTTP(s) חיצוני כדי להגיע לקבוצת נקודות קצה ברשת

1. מבוא

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

3312e69c63b02f73.png

בשיעור ה-Lab הזה תלמדו איך ליצור קבוצת נקודות קצה ברשת (NEG) באמצעות שתי מכונות וירטואליות שאפשר לגשת אליהן ממאזן עומסים גלובלי של HTTP(s) חיצוני. למרות שה-NEG בשיעור ה-Lab נמצא בתוך GCP, אותו תהליך משמש לתקשורת עם משאבים ציבוריים או מקומיים עם יכולת הגעה של כתובות IP.

מה תלמדו

  • יצירת VPC בהתאמה אישית
  • יצירת שתי מכונות וירטואליות (VM) שמשמשות כקבוצת קצה של רשת (NEG)
  • יצירת מאזן עומסים היברידי, שירות לקצה העורפי ובדיקות תקינות משויכות
  • יצירת כלל של חומת אש שמאפשר גישה למאזן העומסים
  • ייווצרו Cloud Router ו-NAT כדי לאפשר עדכוני חבילות מהאינטרנט
  • אימות יכולת ההגעה (reachability) של קבוצת נקודות קצה ברשת

מה צריך להכין

  • היכרות עם מאזני עומסים

הגדרת סביבה בקצב עצמאי

  1. נכנסים למסוף Cloud ויוצרים פרויקט חדש או עושים שימוש חוזר בפרויקט קיים. אם אין לכם עדיין חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • Project Name (שם הפרויקט) הוא המזהה האישי שלכם לפרויקט. כל עוד אתם פועלים בהתאם למוסכמות של מתן השמות, תוכלו להשתמש בכל מה שתרצו ולעדכן אותו בכל שלב.
  • Project ID חייב להיות ייחודי בכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו (אי אפשר לשנות אותו אחרי שמגדירים אותו). מסוף Cloud יוצר מחרוזת ייחודית באופן אוטומטי. בדרך כלל לא מעניין אותך מה זה. ברוב ה-Codelabs תצטרכו להפנות אל מזהה הפרויקט (ובדרך כלל הוא מזוהה כ-PROJECT_ID), כך שאם הוא לא מוצא חן בעיניכם, תוכלו ליצור פרויקט אקראי אחר או לנסות בעצמכם ולבדוק אם הוא זמין. ואז המכשיר 'קפוא' לאחר יצירת הפרויקט.
  1. בשלב הבא צריך להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבים של Google Cloud.

מעבר ב-Codelab הזה לא אמור לעלות הרבה, אם בכלל. חשוב לבצע את כל ההוראות בקטע 'ניקוי' שמסביר איך להשבית משאבים כדי שלא תצברו חיובים מעבר למדריך הזה. משתמשים חדשים ב-Google Cloud זכאים להצטרף לתוכנית תקופת ניסיון בחינם בשווי 1,200 ש"ח.

הפעלת Cloud Shell

אומנם אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל ב-Codelab הזה משתמשים ב-Google Cloud Shell, סביבת שורת הפקודה שפועלת ב-Cloud.

ממסוף GCP, לוחצים על הסמל של Cloud Shell בסרגל הכלים שבפינה השמאלית העליונה:

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

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

70ccd168957e89d9.png

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

a55cd31dbeadfecc.png

צריך לספק "xlb" בתור שם מאזן העומסים ולבחור את השירות לקצה העורפי שנוצר בעבר 'on-prem-backend-service' ואז 'אוקיי' לפי צילום המסך שסופק

f1589df43bf9e3e8.png

בחירה של הגדרת הקצה הקדמי, עדכון השם 'xlb-fe' ובוחרים את כתובת ה-IPv4 הסטטית שנוצרה קודם לכן, מוודאים שצילום המסך תואם b47cd48c7c1ccfc3.png

בוחרים באפשרות 'בדיקה והשלמת התהליך'. לאחר התאמה לצילום המסך שסופק ובוחרים באפשרות 'יצירה'

bfa39f7dc3ad91e1.png

אימות תקינות הקצה העורפי

ממסוף Cloud, יש לוודא שהקצה העורפי 'xlb' תקין, ירוקה לפי צילום המסך שסופק

131bbfc955d6166c.png

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' ומסמנים אותה מאזן עומסים ובוחרים באפשרות 'מחיקה' דרך שירותי רשת ← איזון עומסים. לאחר הבחירה, מסמנים את האפשרות 'שירות לקצה העורפי בארגון' &amp; ‘on-premise-health-check&#39; ובוחרים באפשרות 'מחיקה'

53d7463fe354fe66.png

מממשק המשתמש של מסוף Cloud, עוברים אל Compute Engine ← קבוצות של נקודות קצה (endpoint) של Network. אחרי הבחירה, מסמנים את האפשרות 'on-prem-neg-1' &amp; ‘on-prem-neg-2&#39; ובוחרים באפשרות 'מחיקה'

4d8f04264b44d03c.png

מחיקת רכיבי שיעור ה-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