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

מאזן עומסי רשת אזורי חיצוני בשרת proxy הוא מאזן עומסים אזורי בשכבה 4 שמבוסס על proxy. הוא מאפשר להפעיל את תעבורת הנתונים של שירות TCP ולהרחיב אותה באזור יחיד מאחורי כתובת IP חיצונית אזורית. מאזני העומסים האלה מפזרים תעבורת TCP חיצונית מהאינטרנט לקצה העורפי באותו אזור.

לפני שמתחילים, מומלץ לקרוא את המאמר סקירה כללית על מאזן עומסי רשת חיצוני לשרת proxy.

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

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

בדוגמה הזו, נשתמש במאזן העומסים כדי לחלק את תעבורת ה-TCP בין מכונות וירטואליות (VM) בעורף המערכת בשתי קבוצות של מופעי מכונה בניהול אזורי באזור א'. לצורך הדוגמה, השירות הוא קבוצה של שרתי Apache שהוגדרו להגיב ביציאה 110. הרבה דפדפנים לא מאפשרים שימוש ביציאה 110, ולכן בקטע הבדיקה נעשה שימוש ביציאה curl.

מאזן עומסי רשת אזורי חיצוני בשרת proxy הוא מאזן עומסים אזורי. כל הרכיבים של מאזן העומסים צריכים להיות באותו אזור שבו נמצא מאזן העומסים.

הרשאות

כדי לפעול לפי המדריך הזה, אתם צריכים להיות מסוגלים ליצור מופעים ולשנות רשת בפרויקט. צריכות להיות לכם הרשאות בעלים או עריכה בפרויקט, או תפקידי ה-IAM הבאים ב-Compute Engine.

משימה התפקיד הנדרש
יצירת רשתות, רשתות משנה ורכיבים של מאזן עומסים אדמין ברשת Compute (roles/compute.networkAdmin)
הוספה והסרה של כללים לחומת האש אדמין לענייני אבטחה ב-Compute (roles/compute.securityAdmin)
יצירת מופעים אדמין מכונות של Compute (roles/compute.instanceAdmin)

מידע נוסף זמין במדריכים הבאים:

אופציונלי: שימוש בכתובות BYOIP

באמצעות העברת כתובות IP משלכם (BYOIP), אתם יכולים לייבא כתובות ציבוריות משלכם אלCloud de Confiance by S3NS כדי להשתמש בכתובות עם משאבי Cloud de Confiance . לדוגמה, אם מייבאים כתובות IPv4 משלכם, אפשר להקצות אחת מהן לכלל ההעברה כשמגדירים את מאזן העומסים. כשפועלים לפי ההוראות במאמר הזה כדי להגדיר את מאזן העומסים, צריך לציין את כתובת ה-IP של BYOIP ככתובת ה-IP.

מידע נוסף על השימוש ב-BYOIP זמין במאמר בנושא העברת כתובות IP משלכם.

הגדרת הרשת ורשתות המשנה

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

בדוגמה הזו נעשה שימוש ברשת ה-VPC, באזור ובתת-רשתות הבאים:

  • רשת: רשת VPC במצב מותאם אישית בשם lb-network

  • תת-רשת לשרתי קצה עורפיים: תת-רשת בשם backend-subnet באזור א' שמשתמשת ב-10.1.2.0/24 כטווח כתובות ה-IP הראשי שלה

  • תת-רשת לשרתי proxy: תת-רשת בשם proxy-only-subnet באזור ב' שמשתמשת ב-10.129.0.0/23 כטווח כתובות ה-IP הראשי שלה

יצירת הרשתות והתת-רשתות

המסוף

  1. נכנסים לדף VPC networks במסוף Cloud de Confiance .

    מעבר לרשתות VPC

  2. לוחצים על יצירת רשת VPC.

  3. בשדה Name (שם), מזינים lb-network.

  4. בקטע רשתות משנה, מגדירים את מצב יצירת רשתות משנה למותאם אישית.

  5. יוצרים רשת משנה לשרתי הבק-אנד של מאזן העומסים. בקטע New subnet (רשת משנה חדשה), מזינים את הפרטים הבאים:

    • Name (שם): backend-subnet
    • אזור: REGION_A
    • טווח כתובות IP: 10.1.2.0/24
  6. לוחצים על סיום.

  7. לוחצים על יצירה.

gcloud

  1. כדי ליצור רשת VPC בהתאמה אישית, משתמשים בפקודה gcloud compute networks create:

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. כדי ליצור תת-רשת ברשת lb-network באזור REGION_A, משתמשים בפקודה gcloud compute networks subnets create:

    gcloud compute networks subnets create backend-subnet \
        --network=lb-network \
        --range=10.1.2.0/24 \
        --region=REGION_A
    

יצירת תת-רשת לשרת proxy בלבד

רשת משנה רק לשרתי proxy מספקת קבוצה של כתובות IP ש-Google משתמשת בהן כדי להפעיל שרתי proxy של Envoy בשמכם. הפרוקסיים מסיימים חיבורים מהלקוח ויוצרים חיבורים חדשים לשרתי הקצה.

כל מאזני העומסים שמבוססים על Envoy באזור א' של רשת ה-VPC‏ lb-network משתמשים ברשת המשנה הזו שמוגדרת ל-proxy בלבד.

המסוף

אם אתם משתמשים במסוף Cloud de Confiance , אתם יכולים לחכות וליצור את רשת המשנה של ה-proxy בלבד מאוחר יותר בדף איזון עומסים.

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

  1. נכנסים לדף VPC networks במסוף Cloud de Confiance .

    מעבר לרשתות VPC

  2. לוחצים על השם של רשת ה-VPC: ‏ lb-network.

  3. לוחצים על הוספת רשת משנה.

  4. בשדה Name (שם), מזינים proxy-only-subnet.

  5. בשדה אזור, בוחרים באפשרות REGION_A.

  6. מגדירים את Purpose (מטרה) לערך Regional Managed Proxy (שרת proxy מנוהל אזורי).

  7. בשדה טווח כתובות IP, מזינים 10.129.0.0/23.

  8. לוחצים על הוספה.

gcloud

כדי ליצור את רשת המשנה של ה-proxy בלבד, משתמשים בפקודה gcloud compute networks subnets create:

gcloud compute networks subnets create proxy-only-subnet \
    --purpose=REGIONAL_MANAGED_PROXY \
    --role=ACTIVE \
    --region=REGION_A \
    --network=lb-network \
    --range=10.129.0.0/23

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

בדוגמה הזו, יוצרים את הכללים הבאים לחומת האש:

  • fw-allow-ssh. כלל תעבורת נתונים נכנסת (ingress) שחל על המכונות שמתבצע בהן איזון עומסים, שמאפשר קישוריות SSH נכנסת ביציאת TCP‏ 22 מכל כתובת. אפשר לבחור טווח IP של מקור מוגבל יותר לכלל הזה. לדוגמה, אפשר לציין רק את טווחי ה-IP של המערכת שממנה מתחילים סשנים של SSH. בדוגמה הזו נשתמש בתג היעד allow-ssh.

  • fw-allow-health-check. כלל תעבורה נכנסת (ingress) שחל על המופעים שמתבצע לגביהם איזון עומסים, שמאפשר את כל תעבורת ה-TCP מCloud de Confiance טווחים של בדיקות תקינות. בדוגמה הזו נשתמש בתג היעד allow-health-check.

  • fw-allow-proxy-only-subnet. כלל תעבורת נתונים נכנסת (ingress) שמאפשר חיבורים מתת-הרשת של שרת proxy בלבד לשרתים העורפיים (backend).

בלי כללי חומת האש האלה, הכלל default deny ingress חוסם תנועה נכנסת למופעי ה-backend.

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

המסוף

  1. נכנסים לדף Firewall policies במסוף Cloud de Confiance .

    לדף Firewall policies

  2. לוחצים על יצירת כלל לחומת האש כדי ליצור את הכלל שיאפשר חיבורי SSH נכנסים. ממלאים את השדות הבאים:

    • Name (שם): fw-allow-ssh
    • רשת: lb-network
    • כיוון התנועה: כניסה
    • פעולה במקרה של התאמה: אישור
    • יעדים: תגי יעד שצוינו
    • תגי טירגוט: allow-ssh
    • מסנן מקור: טווחים של כתובות IPv4
    • טווחי IPv4 של המקור: 0.0.0.0/0
    • פרוטוקולים ויציאות:
      • בוחרים באפשרות Specified protocols and ports (פרוטוקולים ויציאות ספציפיים).
      • מסמנים את תיבת הסימון TCP ומזינים 22 כמספר היציאה.
  3. לוחצים על יצירה.

  4. לוחצים שוב על יצירת כלל לחומת האש כדי ליצור את הכלל שיאפשר בדיקות תקינות שלCloud de Confiance :

    • Name (שם): fw-allow-health-check
    • רשת: lb-network
    • כיוון התנועה: כניסה
    • פעולה במקרה של התאמה: אישור
    • יעדים: תגי יעד שצוינו
    • תגי טירגוט: allow-health-check
    • מסנן מקור: טווחים של כתובות IPv4
    • טווחים של כתובות IPv4 של המקור: 177.222.80.0/23
    • פרוטוקולים ויציאות:

      • בוחרים באפשרות Specified protocols and ports (פרוטוקולים ויציאות ספציפיים).
      • מסמנים את תיבת הסימון TCP ומזינים 80 כמספר היציאה.

      מומלץ להגביל את הכלל הזה רק לפרוטוקולים ולפורטים שתואמים לאלה שמשמשים את בדיקת התקינות. אם משתמשים ב-tcp:80 לפרוטוקול וליציאה, Cloud de Confiance יכול להשתמש ב-HTTP ביציאה 80 כדי ליצור קשר עם המכונות הווירטואליות, אבל הוא לא יכול להשתמש ב-HTTPS ביציאה 443 כדי ליצור איתן קשר.

  5. לוחצים על יצירה.

  6. לוחצים על Create firewall rule (יצירת כלל חומת אש) בפעם השלישית כדי ליצור את הכלל שיאפשר לשרתי ה-Proxy של מאזן העומסים להתחבר לשרתי הקצה:

    • Name (שם): fw-allow-proxy-only-subnet
    • רשת: lb-network
    • כיוון התנועה: כניסה
    • פעולה במקרה של התאמה: אישור
    • יעדים: תגי יעד שצוינו
    • תגי טירגוט: allow-proxy-only-subnet
    • מסנן מקור: טווחים של כתובות IPv4
    • טווחי IPv4 של המקור: 10.129.0.0/23
    • פרוטוקולים ויציאות:
      • בוחרים באפשרות Specified protocols and ports (פרוטוקולים ויציאות ספציפיים).
      • מסמנים את התיבה TCP ומזינים 80 כמספר היציאה.
  7. לוחצים על יצירה.

gcloud

  1. יוצרים את כלל חומת האש fw-allow-ssh כדי לאפשר קישוריות SSH למכונות וירטואליות עם תג הרשת allow-ssh. אם לא מציינים את source-ranges, Cloud de Confiance מפרש את הכלל כאילו הוא מתייחס לכל מקור.

    gcloud compute firewall-rules create fw-allow-ssh \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-ssh \
        --rules=tcp:22
    
  2. יוצרים את הכלל fw-allow-health-check כדי לאפשר Cloud de Confianceבדיקות תקינות. בדוגמה הזו, כל תנועת ה-TCP מבודקי בדיקת תקינות מותרת, אבל אתם יכולים להגדיר קבוצה מצומצמת יותר של יציאות בהתאם לצרכים שלכם.

    gcloud compute firewall-rules create fw-allow-health-check \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --source-ranges=177.222.80.0/23 \
        --target-tags=allow-health-check \
        --rules=tcp:80
    
  3. יוצרים את כלל fw-allow-proxy-only-subnet כדי לאפשר לשרתי ה-proxy של Envoy באזור להתחבר לשרתי הקצה העורפיים. מגדירים את --source-ranges לטווחים שהוקצו לתת-הרשת של שרת ה-proxy בלבד – בדוגמה הזו, 10.129.0.0/23.

    gcloud compute firewall-rules create fw-allow-proxy-only-subnet \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --source-ranges=10.129.0.0/23 \
        --target-tags=allow-proxy-only-subnet \
        --rules=tcp:80
    

שמירת כתובת ה-IP של מאזן העומסים

שמירת כתובת IP סטטית למאזן העומסים.

המסוף

  1. נכנסים לדף Reserve a static address במסוף Cloud de Confiance .

    מעבר אל Reserve a static address

  2. בוחרים שם לכתובת החדשה.

  3. בקטע Network Service Tier, בוחרים באפשרות Standard.

  4. בשביל IP version, בוחרים IPv4. אין תמיכה בכתובות IPv6.

  5. בקטע Type, בוחרים באפשרות Regional.

  6. בשדה אזור, בוחרים באפשרות REGION_A.

  7. משאירים את האפשרות מצורף אל במצב ללא. אחרי שיוצרים את מאזן העומסים, כתובת ה-IP הזו מצורפת לכלל ההעברה של מאזן העומסים.

  8. לוחצים על שמירה כדי לשמור את כתובת ה-IP.

gcloud

  1. כדי לשמור כתובת IP חיצונית סטטית, משתמשים בפקודה gcloud compute addresses create:

    gcloud compute addresses create ADDRESS_NAME  \
        --region=REGION_A \
        --network-tier=STANDARD
    

    מחליפים את ADDRESS_NAME בשם שרוצים לתת לכתובת הזו.

  2. כדי לראות את התוצאה, משתמשים בפקודה gcloud compute addresses describe:

    gcloud compute addresses describe ADDRESS_NAME
    

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

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

המסוף

יצירת תבנית של הגדרות מכונה

  1. נכנסים לדף Instance templates במסוף Cloud de Confiance .

    כניסה לדף Instance templates

  2. לוחצים על Create instance template.

  3. בשדה Name (שם), מזינים ext-reg-tcp-proxy-backend-template.

  4. מוודאים שדיסק האתחול מוגדר לקובץ אימג' של Debian, כמו Debian GNU/Linux 12 (bookworm)‎. בהוראות האלה נעשה שימוש בפקודות שזמינות רק ב-Debian, כמו apt-get.

  5. לוחצים על אפשרויות מתקדמות.

  6. לוחצים על Networking ומגדירים את השדות הבאים:

    1. בשדה Network tags (תגים של רשת), מזינים את הערכים allow-ssh, allow-health-check, ו-allow-proxy-only-subnet.
    2. בקטע Network interfaces (ממשקי רשת), בוחרים באפשרויות הבאות:
      • רשת: lb-network
      • Subnet (רשת משנה): backend-subnet
  7. לוחצים על ניהול. מזינים את הסקריפט הבא בשדה סקריפט לטעינה בזמן ההפעלה:

     #! /bin/bash
     apt-get update
     apt-get install apache2 -y
     a2ensite default-ssl
     a2enmod ssl
     vm_hostname="$(curl -H "Metadata-Flavor:Google" \
     http://metadata.google.internal/computeMetadata/v1/instance/name)"
     echo "Page served from: $vm_hostname" | \
     tee /var/www/html/index.html
     systemctl restart apache2
     
  8. לוחצים על יצירה.

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

  1. נכנסים לדף Instance groups במסוף Cloud de Confiance .

    כניסה לדף Instance groups

  2. לוחצים על יצירת קבוצת מופעים.

  3. בוחרים באפשרות New managed instance group (stateless) (קבוצת מופעי מכונה מנוהלים חדשה (בלי שמירת מצב)). מידע נוסף זמין במאמר בנושא יצירת קבוצת מופעים מנוהלת עם דיסקים עם שמירת מצב.

  4. בשדה Name (שם), מזינים mig-a.

  5. בקטע מיקום, בוחרים באפשרות אזור יחיד.

  6. בשדה אזור, בוחרים באפשרות REGION_A.

  7. בשדה Zone, בוחרים באפשרות ZONE_A.

  8. בשדה תבנית של הגדרות מכונה, בוחרים באפשרות ext-reg-tcp-proxy-backend-template.

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

    בדוגמה הזו, מציינים את האפשרויות הבאות עבור שינוי גודל אוטומטי:

    • בקטע מצב שינוי גודל אוטומטי, בוחרים באפשרות Off:do not autoscale.
    • בשדה מספר מופעים מקסימלי, מזינים 2.
  10. בקטע מיפוי יציאות, לוחצים על הוספת יציאה.

    • בשדה שם הניוד, מזינים tcp80.
    • בשדה מספר יציאה, מזינים 80.
  11. לוחצים על יצירה.

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

    • Name (שם): mig-b
    • Zone (תחום): ZONE_B

    משאירים את כל שאר ההגדרות ללא שינוי.

gcloud

ההוראות ל-Google Cloud CLI במדריך הזה מבוססות על ההנחה שאתם משתמשים ב-Cloud Shell או בסביבה אחרת שבה מותקן bash.

  1. כדי ליצור תבנית של הגדרות מכונה עם שרת HTTP, משתמשים בפקודה gcloud compute instance-templates create:

    gcloud compute instance-templates create ext-reg-tcp-proxy-backend-template \
        --region=REGION_A \
        --network=lb-network \
        --subnet=backend-subnet \
        --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \
        --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://metadata.google.internal/computeMetadata/v1/instance/name)"
           echo "Page served from: $vm_hostname" | \
           tee /var/www/html/index.html
           systemctl restart apache2'
    
  2. יוצרים קבוצת מופעי מכונה מנוהלים באזור ZONE_A:

    gcloud compute instance-groups managed create mig-a \
        --zone=ZONE_A \
        --size=2 \
        --template=ext-reg-tcp-proxy-backend-template
    
  3. יוצרים קבוצת מופעי מכונה מנוהלים באזור ZONE_B:

    gcloud compute instance-groups managed create mig-b \
        --zone=ZONE_B \
        --size=2 \
        --template=ext-reg-tcp-proxy-backend-template
    

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

המסוף

התחלת ההגדרה

  1. נכנסים לדף Load balancing במסוף Cloud de Confiance .

    כניסה לדף Load balancing

  2. לוחצים על Create load balancer (יצירת מאזן עומסים).
  3. בקטע Type of load balancer (סוג מאזן העומסים), בוחרים באפשרות Network Load Balancer (TCP/UDP/SSL) (מאזן עומסים ברשת (TCP/UDP/SSL)) ולוחצים על Next (הבא).
  4. בקטע Proxy or passthrough (פרוקסי או העברה), בוחרים באפשרות Proxy load balancer (מאזן עומסים של פרוקסי) ולוחצים על Next (הבא).
  5. בקטע Public facing or internal (פנימי או גלוי לכולם), בוחרים באפשרות Public facing (external) (גלוי לכולם – חיצוני) ולוחצים על Next (הבא).
  6. אם בוחרים באפשרות פריסה גלובלית או פריסה באזור יחיד, בוחרים באפשרות הכי טוב לעומסי עבודה אזוריים ולוחצים על הבא.
  7. לוחצים על Configure (הגדרה).

הגדרה בסיסית

  1. בשדה Name (שם), מזינים my-ext-tcp-lb.
  2. בשדה אזור, בוחרים באפשרות REGION_A.
  3. בשדה רשת, בוחרים באפשרות lb-network.

הזמנת רשת משנה לשרת proxy בלבד

  1. לוחצים על Reserve.
  2. בשדה שם מזינים proxy-only-subnet.
  3. בשדה טווח כתובות IP, מזינים 10.129.0.0/23.
  4. לוחצים על הוספה.

הגדרת הקצוות העורפיים

  1. לוחצים על Backend configuration.
  2. ברשימה Backend type (סוג ה-Backend), בוחרים באפשרות Instance group (קבוצת מופעים).
  3. ברשימה Protocol בוחרים באפשרות TCP.
  4. בשדה Named port, מזינים tcp80.
  5. מגדירים את בדיקת התקינות:
    1. ברשימה Health check, בוחרים באפשרות Create a health check.
    2. בשדה שם מזינים tcp-health-check.
    3. ברשימה Protocol בוחרים באפשרות TCP.
    4. בשדה יציאה מזינים 80.
    5. לוחצים על יצירה.
  6. מגדירים את הקצה העורפי הראשון:
    1. בקטע New backend (קצה עורפי חדש), בוחרים באפשרות instance group (קבוצת מכונות) mig-a.
    2. בשדה מספרי יציאה, מזינים 80.
    3. משאירים את ערכי ברירת המחדל בשאר השדות ולוחצים על סיום.
  7. מגדירים את הקצה העורפי השני:
    1. לוחצים על הוספת קצה עורפי.
    2. בקטע New backend (קצה עורפי חדש), בוחרים באפשרות instance group (קבוצת מכונות) mig-b.
    3. בשדה מספרי יציאה, מזינים 80.
    4. משאירים את ערכי ברירת המחדל בשאר השדות ולוחצים על סיום.
  8. משאירים את ערכי ברירת המחדל הנותרים ולוחצים על שמירה.
  9. במסוף Cloud de Confiance , מוודאים שמופיע סימן וי ליד Backend configuration. אם לא, צריך לוודא שהשלמתם את כל השלבים.

הגדרת הקצה הקדמי

  1. לוחצים על Frontend configuration.
  2. בשדה Name (שם), מזינים ext-reg-tcp-forwarding-rule.
  3. בקטע Network Service Tier, בוחרים באפשרות Standard.
  4. בשביל IP address, בוחרים את כתובת ה-IP ששמרתם קודם: LB_IP_ADDRESS
  5. בשדה מספר יציאה, מזינים 110. כלל ההעברה מעביר רק מנות עם יציאת יעד תואמת.
  6. בשדה Proxy protocol, בוחרים באפשרות Off כי פרוטוקול ה-PROXY לא פועל עם תוכנת Apache HTTP Server. מידע נוסף מופיע במאמר בנושא פרוטוקול PROXY.
  7. לוחצים על סיום.
  8. במסוף Cloud de Confiance , מוודאים שיש סימן וי ליד Frontend configuration. אם לא, בודקים שוב שהשלמתם את כל השלבים הקודמים.

בדיקה וסיום

  1. לוחצים על Review and finalize.
  2. בודקים את הגדרות התצורה של מאזן העומסים.
  3. אופציונלי: לוחצים על Equivalent code (קוד מקביל) כדי לראות את בקשת API בארכיטקטורת REST שמשמשת ליצירת מאזן העומסים.
  4. לוחצים על יצירה.

gcloud

  1. יוצרים בדיקת תקינות אזורית:

    gcloud compute health-checks create tcp tcp-health-check \
        --region=REGION_A \
        --use-serving-port
    
  2. יוצרים שירות לקצה העורפי:

    gcloud compute backend-services create ext-reg-tcp-proxy-bs \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=TCP \
        --port-name=tcp80 \
        --region=REGION_A \
        --health-checks=tcp-health-check \
        --health-checks-region=REGION_A
    
  3. הוספת קבוצות של מכונות וירטואליות לשירות הקצה העורפי:

    gcloud compute backend-services add-backend ext-reg-tcp-proxy-bs \
        --region=REGION_A \
        --instance-group=mig-a \
        --instance-group-zone=ZONE_A \
        --balancing-mode=UTILIZATION \
        --max-utilization=0.8
     
    gcloud compute backend-services add-backend ext-reg-tcp-proxy-bs \
        --region=REGION_A \
        --instance-group=mig-b \
        --instance-group-zone=ZONE_B \
        --balancing-mode=UTILIZATION \
        --max-utilization=0.8
    
  4. יוצרים שרת proxy של TCP ביעד:

    gcloud compute target-tcp-proxies create ext-reg-tcp-target-proxy \
        --backend-service=ext-reg-tcp-proxy-bs \
        --proxy-header=NONE \
        --region=REGION_A
    

    אם רוצים להפעיל את כותרת ה-proxy, צריך להגדיר אותה ל-PROXY_V1 במקום ל-NONE. בדוגמה הזו, לא מפעילים את פרוטוקול ה-PROXY כי הוא לא פועל עם תוכנת Apache HTTP Server. מידע נוסף מופיע במאמר בנושא פרוטוקול PROXY.

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

    gcloud compute forwarding-rules create ext-reg-tcp-forwarding-rule \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --network-tier=STANDARD \
        --network=lb-network \
        --region=REGION_A \
        --target-tcp-proxy=ext-reg-tcp-target-proxy \
        --target-tcp-proxy-region=REGION_A \
        --address=LB_IP_ADDRESS \
        --ports=110
    

בדיקת מאזן העומסים

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

  1. מוצאים את כתובת ה-IP של מאזן העומסים.

    כדי לקבל את כתובת ה-IPv4, מריצים את הפקודה הבאה:

    gcloud compute addresses describe ADDRESS_NAME
    
  2. כדי לשלוח תנועה למאזן העומסים, מריצים את הפקודה הבאה. מחליפים את LB_IP_ADDRESS בכתובת ה-IPv4 של איזון העומסים.

    curl -m1 LB_IP_ADDRESS:9090
    

אפשרויות הגדרה נוספות

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

יצירת מאזן עומסים עם נתיבי TLS

בקטע הזה מוסבר איך ליצור מאזן עומסים שיכול להשתמש בניתוב מבוסס SNI. ניתוב מבוסס-SNI מאפשר למאזני עומסים מסוג proxy לנתב תנועה לשירותי קצה עורפיים ספציפיים על סמך שם המארח של Server Name Indication ‏ (SNI) שסופק במהלך לחיצת היד של TLS.

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

הגדרה של מאזן עומסי רשת אזורי חיצוני בשרת proxy עם נתיבי TLS.
הגדרה של מאזן עומסי רשת אזורי חיצוני בשרת proxy עם נתיבי TLS.

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

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

ההוראות ל-Google Cloud CLI במדריך הזה מבוססות על ההנחה שאתם משתמשים ב-Cloud Shell או בסביבה אחרת שבה מותקן bash.

  1. יוצרים תבנית של הגדרות מכונה עם שירות HTTPS מסוג echo שנחשף ביציאה 443.

    gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --region=REGION_A \
    --network=NETWORK \
    --subnet=SUBNET_A \
    --stack-type=IPv4_ONLY \
    --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --metadata=startup-script='#! /bin/bash
    sudo sed -i "s/^#DNS=.*/DNS=8.8.8.8 8.8.4.4/" /etc/systemd/resolved.conf
    sudo systemctl restart systemd-resolved
    sudo rm -rf /var/lib/apt/lists/*
    sudo apt-get -y clean
    sudo apt-get -y update
    sudo apt-get -y install ca-certificates curl gnupg software-properties-common
    sudo curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
    sudo add-apt-repository -y "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
    sudo apt-get -y update
    sudo apt-get -y install docker-ce
    sudo which docker
    echo "{ \"registry-mirrors\": [\"https://mirror.gcr.io\"] }" | sudo tee -a /etc/docker/daemon.json
    sudo service docker restart
    sudo docker run -e HTTPS_PORT=9999 -p 443:9999 --rm -dt mendhak/http-https-echo:22'
    

    מחליפים את מה שכתוב בשדות הבאים:

    • INSTANCE_TEMPLATE_NAME: שם לתבנית של הגדרות המכונה.
    • REGION_A: האזור של תבנית של הגדרות מכונה.
    • NETWORK: שם הרשת.
    • SUBNET_A: השם של רשת המשנה.
  2. יוצרים קבוצה של מופעי מכונה מנוהלים על סמך תבנית המכונה:

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
      --zone=ZONE_A \
      --size=2 \
      --template=INSTANCE_TEMPLATE_NAME
    

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

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

    gcloud compute instance-groups managed set-named-ports INSTANCE_GROUP_NAME \
      --named-ports=PORT_NAME:PORT_NUMBER \
      --zone=ZONE_A
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PORT_NAME: שם של יציאת ההגשה – לדוגמה, tcp443.
    • PORT_NUMBER: מספר היציאה של יציאת ההגשה, לדוגמה 443.

הגדרת חומת האש

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

gcloud compute firewall-rules create FIREWALL_RULE_NAME \
    --network=NETWORK \
    --action=allow \
    --direction=ingress \
    --source-ranges=177.222.80.0/23 \
    --target-tags=allow-health-check \
    --rules=tcp:443

מחליפים את FIREWALL_RULE_NAME בשם של כלל חומת האש.

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

  1. יוצרים בדיקת תקינות ב-HTTPS:

    gcloud compute health-checks create http HTTPS_HEALTH_CHECK_NAME \
        --region=REGION_A \
        --port=HC_PORT
    

    מחליפים את מה שכתוב בשדות הבאים:

    • HTTPS_HEALTH_CHECK_NAME: שם לבדיקת תקינות.
    • HC_PORT: היציאה לבדיקת תקינות, לדוגמה 443.
    • REGION_A: האזור של בדיקת תקינות.
  2. יוצרים שירות לקצה העורפי:

    gcloud compute backend-services create BACKEND_SERVICE_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=TCP \
        --port-name=PORT_NAME \
        --health-checks=HTTPS_HEALTH_CHECK_NAME \
        --health-checks-region=REGION_A \
        --region=REGION_A
    

    מחליפים את מה שכתוב בשדות הבאים:

    • BACKEND_SERVICE_NAME: שם לשירות העורפי.
    • PORT_NAME: שם היציאה של שירות ה-Backend. משתמשים באותו פורט עם שם שהוגדר בקבוצת המכונות – לדוגמה, tcp443.
    • HTTPS_HEALTH_CHECK_NAME: השם של בדיקת תקינות HTTPS.
  3. מוסיפים את קבוצת המכונות לקצה העורפי לשירות הקצה העורפי:

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
        --balancing-mode=UTILIZATION \
        --max-utilization=0.8
        --instance-group=INSTANCE_GROUP_NAME \
        --instance-group-zone=ZONE_A \
        --region=REGION_A
      

    מחליפים את מה שכתוב בשדות הבאים:

    • INSTANCE_GROUP_NAME: השם של קבוצת השרתים העורפיים.
    • ZONE_A: האזור של קבוצת המכונות.
  4. יוצרים שרת proxy של TCP ביעד.

    gcloud beta compute target-tcp-proxies create TARGET_TCP_PROXY_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --proxy-header=NONE \
        --region=REGION_A
    

    מחליפים את TARGET_TCP_PROXY_NAME בשם של פרוקסי TCP היעד.

  5. יוצרים מפרט של נתיב TLS ושומרים אותו בקובץ YAML.

    cat <<EOF | tee YAML_FILE_NAME
    name: TLS_ROUTE_NAME
    targetProxies:
    - projects/PROJECT_NUMBER/locations/REGION_A/targetTcpProxies/TARGET_TCP_PROXY
    rules:
    - matches:
      - sniHost:
        - example.com
      action:
      destinations:
      - serviceName: projects/PROJECT_NUMBER/locations/REGION_A/backendServices/BACKEND_SERVICE_NAME
    EOF
    

    מחליפים את מה שכתוב בשדות הבאים:

    • YAML_FILE_NAME: שם לקובץ ה-YAML, לדוגמה tls-route.yaml.
    • TLS_ROUTE_NAME: שם לנתיב ה-TLS.
    • PROJECT_NUMBER: מספר הפרויקט.
  6. משתמשים בקובץ המפרט של YAML כדי ליצור את משאב נתיב ה-TLS.

    gcloud network-services tls-routes import TLS_ROUTE_NAME \
      --source=YAML_FILE_NAME \
      --location=REGION_A
    
  7. יוצרים את כלל ההעברה.

    gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network-tier=STANDARD \
      --network=NETWORK \
      --region=REGION_A \
      --target-tcp-proxy=TARGET_TCP_PROXY_NAME \
      --target-tcp-proxy-region=REGION_A \
      --address=IP_ADDRESS \
      --ports=PORT_NUMBER
    

    מחליפים את מה שכתוב בשדות הבאים:

    • FORWARDING_RULE_NAME: שם לכלל ההעברה.
    • NETWORK: שם הרשת.
    • SUBNET_A: השם של רשת המשנה באותו אזור כמו מאזן העומסים.
    • IP_ADDRESS: כתובת ה-IP של מאזן העומסים.
    • PORT_NUMBER: היציאה שמשמשת את כלל ההעברה, לדוגמה 443.

בדיקת מאזן העומסים

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

  1. מוודאים שיש לכם גישה לשירות ה-HTTPS דרך מאזן העומסים.

    curl https://example.com --resolve example.com:443:IP_ADDRESS -k
    

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

    "path": "/",
    "headers": {
      "host": "example.com",
      "user-agent": "curl/7.81.0",
      "accept": "*/*"
    },
    "method": "GET",
    "body": "",
    "fresh": false,
    "hostname": "example.com",
    "ip": "::ffff:10.142.0.2",
    "ips": [],
    "protocol": "https",
    "query": {},
    "subdomains": [],
    "xhr": false,
    "os": {
      "hostname": "0cd3aec9b351"
    },
    "connection": {
      "servername": "example.com"
    }
    

    כדי לוודא זאת, אפשר לספק שם מארח שונה של SNI שלא תואם לנתיב TLS, או לא לספק שם מארח של SNI בכלל. במקרה כזה, הבקשה תידחה.

    • מריצים בדיקה עם שם מארח של SNI שלא תואם ל-example.com, כדי לוודא שהחיבור נדחה.
    curl https://unknown.com --resolve unknown.com:443:IP_ADDRESS -k
    
    • מריצים בדיקה עם חיבור טקסט פשוט ללא TLS, כדי לוודא שהחיבור נדחה.
    curl example.com:443 --resolve example.com:443:IP_ADDRESS -k
    

    הפקודות האלה מחזירות את השגיאה הבאה.

    curl: (35) OpenSSL SSL_connect: Connection reset by peer in connection
    

    קוד השגיאה connection_refused יופיע ביומני proxyStatus כשמאזן העומסים ידחה חיבורים לא תקינים כאלה.

הפעלת זיקה לסשן

ההגדרה לדוגמה יוצרת שירות לקצה העורפי ללא זיקה לסשן (session affinity).

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

כשזיקה לכתובת IP של לקוח מופעלת, מאזן העומסים (LB) מפנה בקשות של לקוח מסוים לאותה מכונה וירטואלית (VM) בעורף, על סמך גיבוב שנוצר מכתובת ה-IP של הלקוח וכתובת ה-IP של מאזן העומסים (כתובת ה-IP הפנימית של כלל העברה פנימי).

כדי להפעיל זיקה לסשן (session affinity) לפי כתובת IP של לקוח, מבצעים את השלבים הבאים.

המסוף

  1. נכנסים לדף Load balancing במסוף Cloud de Confiance .

    כניסה לדף Load balancing

  2. לוחצים על Backends.

  3. לוחצים על ext-reg-tcp-proxy-bs (השם של שירות לקצה העורפי שיצרתם בדוגמה הזו) ואז על עריכה.

  4. בדף Backend service details (פרטי שירות לקצה העורפי), לוחצים על Advanced configuration (הגדרה מתקדמת).

  5. בקטע Session affinity (זיקה לסשן), בוחרים באפשרות Client IP (כתובת IP של לקוח).

  6. לוחצים על עדכון.

gcloud

כדי לעדכן את שירות לקצה העורפי ext-reg-tcp-proxy-bs ולציין את זיקה לסשן (session affinity) לכתובת IP של לקוח, משתמשים בפקודה gcloud compute backend-services update ext-reg-tcp-proxy-bs:

gcloud compute backend-services update ext-reg-tcp-proxy-bs \
    --region=REGION_A \
    --session-affinity=CLIENT_IP

המאמרים הבאים