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

1. מבוא

ברוכים הבאים ל-External HTTPs LB עם Codelab ניהול מתקדם (Envoy)!

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

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

מה תלמדו

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

מה צריך להכין

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

טופולוגיה של Codelab ו תרחיש לדוגמה

dd8bd5e8e1341878.png

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

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

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

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

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

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

הפעלת Cloud Shell

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

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

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

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

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

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

פרויקט עם רשימת ההגדרות האישיות של gcloud

פרויקט הגדרת התצורה של gcloud [YOUR-PROJECT-NAME]

PROJECT_ID=[YOUR-PROJECT-NAME]

הדהוד $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. קודם כל ניצור תבניות מכונות שמגדירות את ההגדרות האישיות של המכונות הווירטואליות שייווצרו לכל אזור. בשלב הבא, ניצור לקצה עורפי בכל אזור קבוצת מכונות מנוהלות שמפנה לתבנית של מכונה.

קבוצות מכונות מנוהלות יכולות להיות בהיקף אזורי או אזורי. בתרגיל ה-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-9 \
   --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-9 \
   --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-9 \
   --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 -> מכונות וירטואליות. חשוב לוודא שהמכונות החדשות (למשל us-east1-mig-xxx) נוצרו בהתאם להגדרות של קבוצות המופעים שלהן.

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

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

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

הוספת East 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 לשירות לקצה העורפי.

מ-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 לשירות לקצה העורפי.

מ-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 היא המקום שבו יפעלו התכונות המתקדמות לניהול תנועה בשיעור ה-Lab הזה. עלינו ליצור קובץ yaml שיכיל את ההגדרה שלו. יצרנו בקובץ ה- .yaml התאמת קידומת ב-/roundrobbin, כך שרק התאמת תנועה /roundrobbin תושפע מההגדרות האלה. ציינו ש-50% מהתנועה צריכה לעבור לשירות הקצה העורפי לכיוון המזרחי ו-50% מהתנועה צריכים לעבור לשירות הקצה העורפי לכיוון מערב. הוספנו גם את הערך {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...

בדיקה של הפצת העומס

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

במסוף Cloud, בתפריט הניווט, לוחצים על Network Services > איזון עומסים. בוחרים את מאזן העומסים web-map-http. עוברים לכרטיסייה Monitoring כדי לראות את התרשים הבא.

f4d6803db44be253.png

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

כדי לוודא שהמדיניות של שיקוף התנועה שיצרתם פועלת, צריך לבדוק את השימוש בקבוצת המופעים המנוהלים של שירות קצה עורפי מרכזי. כדי לעשות זאת, עוברים אל 'Compute Engine', 'Compute Engine' ו'קבוצות של מכונות', ובוחרים ב-us-central1-mig. בשלב הבא עוברים לכרטיסייה 'מעקב'.

cf25e44d511529e7.png

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

עצירת המצור

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

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

לפני הניקוי אפשר לוודא במהירות שכותרת התגובה המתאימה נשלחת על ידי מאזן העומסים של 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. מעולה!

השלמת את ה-External HTTPs LB באמצעות Codelab לניהול מתקדם של תעבורת נתונים (Envoy)!

אילו נושאים דיברנו?

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

השלבים הבאים

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