HTTPs חיצוניים LB עם Codelab ניהול תעבורת נתונים מתקדם (Envoy)

1. מבוא

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

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

  • חלוקת תנועה משוקללת
  • בקשה לשיתוף מסך
  • זיהוי חריגים
  • ניסיונות חוזרים של בקשות
  • הזרקת תקלות
  • אפשרויות נוספות של שיוך סשנים לשרת קצה עורפי
  • אפשרויות נוספות לשינוי כותרות
  • שיתוף משאבים בין מקורות (CORS)
  • אלגוריתמים חדשים לאיזון עומסים

מה תלמדו

  • איך מגדירים קבוצת מופעים מנוהלת ואת ה-VPC וכללי חומת האש שמשויכים אליה
  • איך משתמשים בתכונות המתקדמות לניהול תנועה של מאזן העומסים החדש
  • איך לוודא שהתכונות המתקדמות לניהול תנועה פועלות כמצופה.

מה צריך להכין

  • ידע בסיסי ברשתות וב-HTTP
  • ידע בסיסי בשורת הפקודה של Unix/Linux

טופולוגיה ותיאור מקרה של Codelab

dd8bd5e8e1341878.png

איור 1 – טופולוגיית ניתוב של מאזן עומסים מסוג HTTP

במהלך שיעור ה-Lab הזה תגדירו שלוש קבוצות של מכונות מנוהלות, אחת במזרח, אחת במערב ואחת במרכז. תצרו מאזן עומסים גלובלי חיצוני מסוג HTTPS. מאזן העומסים ישתמש בכמה תכונות מהרשימה של היכולות המתקדמות שמאזן העומסים מבוסס-Envoy תומך בהן. אחרי הפריסה, יוצרים עומס מדומה ומוודאים שההגדרות שהגדרתם פועלות כמו שצריך.

2. הגדרה ודרישות

הגדרת סביבה בקצב אישי

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

הפעלת Cloud Shell

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

ב-Google Cloud Console, לוחצים על סמל Cloud Shell בסרגל הכלים שבפינה הימנית העליונה:

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

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

לפני שמתחילים

ב-Cloud Shell, מוודאים שמזהה הפרויקט מוגדר

gcloud config list project

gcloud config set project [YOUR-PROJECT-NAME]

PROJECT_ID=[YOUR-PROJECT-NAME]

echo $PROJECT_ID

הפעלת ממשקי API

הפעלת כל השירותים הנדרשים

gcloud services enable compute.googleapis.com
gcloud services enable logging.googleapis.com
gcloud services enable monitoring.googleapis.com

3. יצירת רשת VPC

יצירת רשת VPC

מ-Cloud Shell

gcloud compute networks create httplbs --subnet-mode=auto

פלט

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/httplbs].
NAME: httplbs
SUBNET_MODE: AUTO
BGP_ROUTING_MODE: REGIONAL
IPV4_RANGE:
GATEWAY_IPV4:

יצירת כללים לחומת האש ב-VPC

אחרי שיוצרים את ה-VPC, יוצרים כללים לחומת האש. כלל חומת האש ישמש כדי לאפשר לכל כתובות ה-IP לגשת לכתובת ה-IP החיצונית של אתר אפליקציית הבדיקה ביציאה 80 לתנועת HTTP.

מ-Cloud Shell

gcloud compute firewall-rules create httplb-allow-http-rule \
--allow tcp:80 \
--network httplbs \
--source-ranges 0.0.0.0/0 \
--priority 700

פלט

Creating firewall...working..Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls/httplb-allow-http-rule].
Creating firewall...done.
NAME: httplb-allow-http-rule
NETWORK: httplbs
DIRECTION: INGRESS
PRIORITY: 700
ALLOW: tcp:80
DENY:
DISABLED: False

4. הגדרת קבוצות של מופעי מכונה מנוהלים

צריך להגדיר קבוצות של מכונות וירטואליות מנוהלות שכוללות את התבניות של משאבי הקצה העורפי שמשמשים את מאזן העומסים של HTTP. קודם ניצור תבניות של מופעים שמגדירות את התצורה של מכונות וירטואליות שייווצרו לכל אזור. בשלב הבא, ניצור קבוצה של מופעי מכונה מנוהלים (MIG) לכל קצה עורפי באזור, עם הפניה לתבנית של מופע מכונה.

קבוצות של מופעי מכונה בניהול יכולות להיות אזוריות או אזוריות. בשיעור ה-Lab הזה ניצור שלוש קבוצות אזוריות של מכונות מנוהלות, אחת באזור us-east1, אחת באזור us-west1 ואחת באזור us-central1.

בקטע הזה אפשר לראות סקריפט לטעינה בזמן ההפעלה שנוצר מראש, שיהיה רלוונטי ליצירת המכונה. סקריפט ההפעלה הזה מתקין ומפעיל יכולות של שרת אינטרנט, שבהן נשתמש כדי לדמות אפליקציית אינטרנט. מוזמנים לעיין בסקריפט הזה.

יצירת תבניות מכונה למזרח, למערב ולמרכז

השלב הראשון הוא ליצור את תבנית המכונה us-east-1.

מ-Cloud Shell

gcloud compute instance-templates create us-east1-template \
   --region=us-east1 \
   --network=httplbs \
   --tags=http-server, \
   --image-family=debian-12 \
   --image-project=debian-cloud \
   --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)"
     echo "Page served from: $vm_hostname" | \
     tee /var/www/html/index.html
     systemctl restart apache2'

פלט

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates/us-east1-template].
NAME: us-east1-template
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
CREATION_TIMESTAMP: 2021-11-11T11:02:37.511-08:00

השלב הבא הוא ליצור את תבנית המכונה us-west-1.

מ-Cloud Shell

gcloud compute instance-templates create us-west1-template \
   --region=us-west1 \
   --network=httplbs \
   --tags=http-server, \
   --image-family=debian-12 \
   --image-project=debian-cloud \
   --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)"
     echo "Page served from: $vm_hostname" | \
     tee /var/www/html/index.html
     systemctl restart apache2'

פלט

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates/us-west1-template].
NAME: us-west1-template
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
CREATION_TIMESTAMP: 2021-11-11T11:03:08.577-08:00

השלב הבא הוא ליצור את תבנית המכונה us-central-1.

מ-Cloud Shell

gcloud compute instance-templates create us-central1-template \
   --region=us-central1 \
   --network=httplbs \
   --tags=http-server, \
   --image-family=debian-12 \
   --image-project=debian-cloud \
   --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)"
     echo "Page served from: $vm_hostname" | \
     tee /var/www/html/index.html
     systemctl restart apache2'

פלט

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates/us-central1-template].
NAME: us-central1-template
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
CREATION_TIMESTAMP: 2021-11-11T11:03:44.179-08:00

עכשיו אפשר לוודא שתבניות המופעים נוצרו בהצלחה באמצעות הפקודה הבאה ב-gcloud:

מ-Cloud Shell

gcloud compute instance-templates list

פלט

NAME                  MACHINE_TYPE   PREEMPTIBLE  CREATION_TIMESTAMP
us-central1-template   n1-standard-1         2021-11-09T09:25:37.263-08:00
us-east1-template      n1-standard-1         2021-11-09T09:24:35.275-08:00
us-west1-template      n1-standard-1         2021-11-09T09:25:08.016-08:00

יצירה של קבוצות מנוהלות של מופעי מכונה במזרח, במערב ובמרכז

עכשיו צריך ליצור קבוצה של מופעי מכונה מנוהלים מתבניות המכונות שיצרנו קודם.

מ-Cloud Shell

gcloud compute instance-groups managed create us-east1-mig \
--base-instance-name=us-east1-mig \
--size=1 \
--template=us-east1-template \
--zone=us-east1-b 

פלט

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-east1-b/instanceGroupManagers/us-east1-mig].
NAME: us-east1-mig
LOCATION: us-east1-b
SCOPE: zone
BASE_INSTANCE_NAME: us-east1-mig
SIZE: 0
TARGET_SIZE: 1
INSTANCE_TEMPLATE: us-east1-template
AUTOSCALED: no

מ-Cloud Shell

gcloud compute instance-groups managed create us-west1-mig \
--base-instance-name=us-west1-mig \
--size=1 \
--template=us-west1-template \
--zone=us-west1-a  

פלט

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroupManagers/us-west1-mig].
NAME: us-west1-mig
LOCATION: us-west1-a
SCOPE: zone
BASE_INSTANCE_NAME: us-west1-mig
SIZE: 0
TARGET_SIZE: 1
INSTANCE_TEMPLATE: us-west1-template
AUTOSCALED: no

מ-Cloud Shell

gcloud compute instance-groups managed create us-central1-mig \
--base-instance-name=us-central1-mig \
--size=1 \
--template=us-central1-template \
--zone=us-central1-a 

פלט

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-central1-a/instanceGroupManagers/us-central1-mig].
NAME: us-central1-mig
LOCATION: us-central1-a
SCOPE: zone
BASE_INSTANCE_NAME: us-central1-mig
SIZE: 0
TARGET_SIZE: 1
INSTANCE_TEMPLATE: us-central1-template
AUTOSCALED: no

כדי לוודא שקבוצות המופעים נוצרו בהצלחה, מריצים את הפקודה הבאה ב-gcloud:

מ-Cloud Shell

gcloud compute instance-groups list

פלט

NAME                  LOCATION      SCOPE   NETWORK         MANAGED INSTANCES
us-central1-mig       us-central1   zone    httplbs          Yes      1
us-west1-mig          us-west1      zone    httplbs          Yes      1
us-east1-mig          us-east1      zone    httplbs          Yes      1

אימות הפונקציונליות של שרת האינטרנט

כל מופע מוגדר להפעיל שרת אינטרנט של Apache עם סקריפט PHP פשוט שמציג:

c87ca81d3125ac61.png

כדי לוודא ששרתי האינטרנט פועלים בצורה תקינה, עוברים אל Compute Engine -> VM instances (מכונות וירטואליות). מוודאים שהמופעים החדשים (לדוגמה, us-east1-mig-xxx) נוצרו בהתאם להגדרות של קבוצת המופעים.

עכשיו, שולחים בקשת אינטרנט בדפדפן כדי לוודא ששרת האינטרנט פועל (יכול להיות שייקח דקה עד שהוא יתחיל לפעול). בדף VM instances (מכונות וירטואליות) בקטע Compute Engine, בוחרים מופע שנוצר על ידי קבוצת המופעים ולוחצים על כתובת ה-IP החיצונית (הציבורית) שלו.

לחלופין, בדפדפן, עוברים אל http://<IP_Address>

5. הגדרת מאזן העומסים

יצירת בדיקת תקינות

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

מ-Cloud Shell

gcloud compute health-checks create http http-basic-check \
    --port 80

שמירת כתובת IP חיצונית

בשלב הזה צריך לשמור כתובת IP סטטית שזמינה באופן גלובלי, שתצורף בהמשך למאזן העומסים.

מ-Cloud Shell

gcloud compute addresses create lb-ipv4-2 \
    --ip-version=IPV4 \
    --global

חשוב לשים לב לכתובת ה-IP שהוזמנה.

gcloud compute addresses describe lb-ipv4-2 \
    --format="get(address)" \
    --global

יצירת שירותים לקצה העורפי

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

יצירת שירות לקצה העורפי עבור קבוצת המופעים המנוהלים במזרח.

מ-Cloud Shell

gcloud compute backend-services create east-backend-service \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTP \
    --port-name=http \
    --health-checks=http-basic-check \
    --global

יצירת שירות לקצה העורפי עבור קבוצת המופעים המנוהלים במערב.

מ-Cloud Shell

gcloud compute backend-services create west-backend-service \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTP \
    --port-name=http \
    --health-checks=http-basic-check \
    --global

יצירת שירות קצה עורפי לקבוצת המופעים המנוהלים המרכזית.

מ-Cloud Shell

gcloud compute backend-services create central-backend-service \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTP \
    --port-name=http \
    --health-checks=http-basic-check \
    --global

הוספת קבוצות של מכונות וירטואליות ל-Backend Services

אחרי שיצרנו את השירותים המתאימים לקצה העורפי לכל אשכול אפליקציות, אנחנו צריכים להוסיף לכל שירות לקצה העורפי את קבוצות המכונות המנוהלות שיצרנו קודם.

מוסיפים את ה-MIG המזרחי לשירות הקצה העורפי.

מ-Cloud Shell

gcloud compute backend-services add-backend east-backend-service \
    --balancing-mode='UTILIZATION' \
    --instance-group=us-east1-mig \
    --instance-group-zone=us-east1-b \
    --global

הוספת West MIG לשירות backend.

מ-Cloud Shell

gcloud compute backend-services add-backend west-backend-service \
    --balancing-mode='UTILIZATION' \
    --instance-group=us-west1-mig \
    --instance-group-zone=us-west1-a \
    --global

הוספת Central MIG לשירות backend.

מ-Cloud Shell

gcloud compute backend-services add-backend central-backend-service \
    --balancing-mode='UTILIZATION' \
    --instance-group=us-central1-mig \
    --instance-group-zone=us-central1-a \
    --global

יצירת מפת כתובות URL

מיפוי כתובות ה-URL הוא המקום שבו יופיעו התכונות המתקדמות לניהול תנועה במעבדה הזו. צריך ליצור קובץ ‎ .yaml שיכיל את ההגדרות. בקובץ ‎ .yaml שיצרנו, הגדרנו התאמה של קידומת בנתיב ‎/roundrobbin, כך שהתצורות האלה ישפיעו רק על תנועה שתואמת לנתיב הזה. הגדרנו ש-50% מהתנועה יועברו אל east-backend-service ו-50% מהתנועה יועברו אל west-backend-service. בנוסף, הוספנו ערך של כותרת תגובה:{test}, שיופיע בכל התגובות. בנוסף, הוספנו שכל התנועה תשוכפל לשירות העורפי המרכזי. התנועה משוכפלת ונשלחת לכאן למטרות בדיקה בלבד.

שומרים את הדוגמה כקובץ ‎ .yaml במחשב.

defaultService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/east-backend-service
kind: compute #urlMap
name: web-map-http
hostRules:
- hosts:
  - '*'
  pathMatcher: matcher1
pathMatchers:
- defaultService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/east-backend-service
  name: matcher1
  routeRules:
  - matchRules:
    - prefixMatch: /roundrobbin
    priority: 2
    headerAction:
        responseHeadersToAdd:
          - headerName: test
            headerValue: value
            replace: True
    routeAction:
        weightedBackendServices:
        - backendService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/east-backend-service
          weight: 50
        - backendService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/west-backend-service
          weight: 50
        retryPolicy:
            retryConditions: ['502', '504']
            numRetries: 3
            perTryTimeout:
                seconds: 1
                nanos: 50
        requestMirrorPolicy:
          backendService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/central-backend-service

יוצרים את מיפוי כתובות ה-URL על ידי ייבוא המסמך מהמחשב. שימו לב: נתיב המקור יהיה שונה בהתאם למיקום שבו שמרתם את קובץ ה-‎ .yaml.

מ-Cloud Shell

gcloud compute url-maps import web-map-http \
   --source /Users/[USERNAME]/Documents/Codelab/lbconfig.yaml \
   --global

יצירת חזית עורפית של HTTP

השלב האחרון ביצירת מאזן העומסים הוא יצירת חזית. כך תמפו את כתובת ה-IP ששמרתם קודם למפת כתובות ה-URL של איזון העומסים שיצרתם.

מ-Cloud Shell

gcloud compute target-http-proxies create http-lb-proxy-adv \
    --url-map=web-map-http

לאחר מכן צריך ליצור כלל העברה גלובלי שימפה את כתובת ה-IP שהוזמנה קודם לשרת ה-proxy של HTTP.

מ-Cloud Shell

gcloud compute forwarding-rules create http-content-rule \
    --load-balancing-scheme EXTERNAL_MANAGED \
    --address=lb-ipv4-2 \
    --global \
    --target-http-proxy=http-lb-proxy-adv \
    --ports=80

6. איך מוודאים שהתכונות המתקדמות לניהול תנועה פועלות

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

יצירת כלל של חומת אש שמאפשר SSH

כדי להתחבר למכונה הווירטואלית באמצעות SSH, שממנה ניצור תעבורת נתונים, קודם צריך ליצור כלל של חומת אש שיאפשר תעבורת נתונים של SSH למכונה הווירטואלית.

מ-Cloud Shell

gcloud compute firewall-rules create fw-allow-ssh \
    --network=httplbs \
    --action=allow \
    --direction=ingress \
    --target-tags=allow-ssh \
    --rules=tcp:22

פלט

NAME          NETWORK  DIRECTION  PRIORITY  ALLOW   DENY  DISABLED
fw-allow-ssh  httplbs  INGRESS    1000      tcp:22        False

יצירת Siege-vm

עכשיו תיצרו את siege-vm שבו תשתמשו כדי ליצור עומס

מ-Cloud Shell

gcloud compute instances create siege-vm \
    --network=httplbs \
    --zone=us-east4-c \
    --machine-type=e2-medium \
    --tags=allow-ssh,http-server \
    --metadata=startup-script='sudo apt-get -y install siege'

פלט

NAME     ZONE        MACHINE_TYPE INTERNAL_IP  EXTERNAL_IP    STATUS
siege-vm us-east4-c  e2-medium    10.150.0.3   34.85.218.119  RUNNING

אחר כך תוכלו להתחבר ב-SSH למכונה הווירטואלית שיצרתם. אחרי שיוצרים את המכונה, לוחצים על SSH כדי להפעיל טרמינל ולהתחבר.

אחרי שמתחברים, מריצים את הפקודה הבאה כדי ליצור עומס. משתמשים בכתובת ה-IP ששמרתם קודם למאזן העומסים החיצוני של HTTP.

מ-Cloud Shell

siege -c 250 http://[$lb-ipv4-2]/roundrobbin

פלט

New configuration template added to /home/cloudcurriculumdeveloper/.siege
Run siege -C to view the current settings in that file
[alert] Zip encoding disabled; siege requires zlib support to enable it: No such file or directory
** SIEGE 4.0.2
** Preparing 250 concurrent users for battle.
The server is now under siege...

בדיקת חלוקת העומס

עכשיו, כשה-Siege פועל, הגיע הזמן לבדוק שהתנועה מתחלקת באופן שווה בין קבוצות המופעים המנוהלות במזרח ובמערב. בנוסף, אפשר לבדוק שהשיקוף של התנועה פועל והתנועה נשלחת לקבוצת המופעים המנוהלת המרכזית.

ב-Cloud Console, בתפריט הניווט, לוחצים על Network Services (שירותי רשת) > Load balancing (איזון עומסים). בוחרים את מאזן העומסים web-map-http. עוברים לכרטיסייה 'מעקב' ורואים את התרשים שבהמשך.

f4d6803db44be253.png

תוכלו לראות את פיצול התנועה בזמן אמת ל-MIG הזה. התנועה מחולקת באופן שווה כי הגדרתם חלוקה של 50/50 בשיטת Round Robin.

כדי לוודא שמדיניות שיקוף התנועה שיצרתם פועלת, צריך לבדוק את ניצול המשאבים של קבוצת המופעים המנוהלת central-backend-service. כדי לעשות זאת, עוברים אל compute (מחשוב),‏ compute engine,‏ instance groups (קבוצות מופעים) ובוחרים באפשרות us-central1-mig. לאחר מכן עוברים לכרטיסייה 'מעקב'.

cf25e44d511529e7.png

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

Stop the Siege

עכשיו, אחרי שהוכחתם שחלוקת התנועה המתקדמת פועלת, הגיע הזמן להפסיק את המצור. כדי לעשות זאת, חוזרים לטרמינל ה-SSH של siege-vm ומקישים על CTRL+C כדי להפסיק את הפעלת siege.

אימות של כותרת התגובה שנשלחת

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

מ-Cloud Shell

curl -svo /dev/null http://lb-ipv4-2/roundrobbin

פלט

*   Trying lb-ipv4-2..
* TCP_NODELAY set
* Connected to  lb-ipv4-2 ( lb-ipv4-2) port 80 (#0)
> GET /roundrobbin HTTP/1.1
> Host:  lb-ipv4-2
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 404 Not Found
< date: Wed, 10 Nov 2021 17:05:27 GMT
< server: envoy
< Content-Length: 273
< content-type: text/html; charset=iso-8859-1
< via: 1.1 google
< test: value
<
{ [273 bytes data]
* Connection #0 to host 34.149.2.26 left intact
* Closing connection 0

7. הסרת המשאבים מסביבת שיעור ה-Lab

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

מ-Cloud Shell

gcloud compute instances delete siege-vm --zone=us-east4-c

gcloud compute forwarding-rules delete http-content-rule --global
gcloud compute target-http-proxies delete http-lb-proxy-adv
gcloud compute url-maps delete web-map-http
gcloud compute backend-services delete east-backend-service --global
gcloud compute backend-services delete west-backend-service --global
gcloud compute backend-services delete central-backend-service --global

gcloud compute addresses delete lb-ipv4-2 --global
gcloud compute health-checks delete http-basic-check 

gcloud compute instance-groups managed delete us-east1-mig --zone us-east1-b
gcloud compute instance-groups managed delete us-west1-mig --zone us-west1-a
gcloud compute instance-groups managed delete us-central1-mig --zone us-central1-a

gcloud compute instance-templates delete "us-east1-template" 
gcloud compute instance-templates delete "us-west1-template" 
gcloud compute instance-templates delete "us-central1-template" 

gcloud compute firewall-rules delete httplb-allow-http-rule
gcloud compute firewall-rules delete fw-allow-ssh

gcloud compute networks delete httplbs 

8. מעולה!

סיימתם את ה-Codelab בנושא מאזן עומסים חיצוני מסוג HTTPs עם ניהול מתקדם של תעבורת נתונים (Envoy).

מה למדנו

  • איך מגדירים קבוצת מופעים מנוהלת ואת ה-VPC וכללי חומת האש שמשויכים אליה
  • איך משתמשים בתכונות המתקדמות לניהול תנועה של מאזן העומסים החדש
  • איך לוודא שהתכונות המתקדמות לניהול תנועה פועלות כמצופה.

השלבים הבאים

  • אפשר לנסות תכונות מתקדמות אחרות של ניתוב, כמו כתיבה מחדש של כתובות URL, הוספה של כותרות CORS ועוד ( קישור)