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

מאזן עומסי רשת פנימי אזורי שמבוסס על פרוקסי הוא מאזן עומסים אזורי בשכבה 4 שמאפשר להפעיל את תעבורת הנתונים של שירות TCP ולהרחיב אותה מאחורי כתובת IP פנימית שנגישה רק ללקוחות באותה רשת VPC או ללקוחות שמחוברים לרשת ה-VPC.

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

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

סקירה כללית

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

בדוגמה הזו, אתם מגדירים את הפריסה הבאה:

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

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

הרשאות

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

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

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

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

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

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

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

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

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

כדי להדגים גישה גלובלית, בדוגמה הזו נוצרת גם מכונה וירטואלית שנייה של לקוח לבדיקה באזור אחר (REGION_B) ורשת משנה עם טווח כתובות IP ראשי 10.3.4.0/24.

יצירת הרשתות ורשתות המשנה

המסוף

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

    מעבר לרשתות VPC

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

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

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

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

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

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

  8. יוצרים רשת משנה כדי להדגים גישה גלובלית. בקטע New subnet, מזינים את הפרטים הבאים:

    • Name (שם): test-global-access-subnet
    • אזור: REGION_B
    • טווח כתובות IP: 10.3.4.0/24
  9. לוחצים על סיום.

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

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
    

    מחליפים את REGION_A בשם של אזור היעד Google Cloud .

  3. יוצרים תת-רשת ברשת lb-network באזור REGION_B באמצעות הפקודה gcloud compute networks subnets create:

    gcloud compute networks subnets create test-global-access-subnet \
       --network=lb-network \
       --range=10.3.4.0/24 \
       --region=REGION_B
    

    מחליפים את REGION_B בשם של Google Cloud האזור שבו רוצים ליצור את רשת המשנה השנייה כדי לבדוק גישה גלובלית.

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

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

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

המסוף

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

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

  1. נכנסים לדף VPC networks במסוף Google Cloud .
    מעבר לרשתות VPC
  2. לוחצים על השם של רשת ה-VPC המשותפת: lb-network.
  3. לוחצים על הוספת רשת משנה.
  4. בשדה Name (שם), מזינים proxy-only-subnet.
  5. בשדה אזור, בוחרים באפשרות REGION_A.
  6. מגדירים את Purpose (מטרה) לערך Regional Managed Proxy (שרת proxy מנוהל אזורי).
  7. בשדה IP address range (טווח כתובות 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. כלל כניסה שחל על המופעים שמתבצע איזון העומסים שלהם, שמאפשר את כל תעבורת ה-TCP ממערכות בדיקת תקינות (ב-130.211.0.0/22 וב-35.191.0.0/16). בדוגמה הזו נעשה שימוש בתג היעד allow-health-check. Google Cloud

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

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

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

המסוף

  1. נכנסים לדף Firewall policies במסוף Google Cloud .
    מעבר אל Firewall policies
  2. לוחצים על יצירת כלל לחומת האש כדי ליצור את הכלל שיאפשר חיבורי SSH נכנסים:
    • Name (שם): fw-allow-ssh
    • רשת: lb-network
    • כיוון התנועה: כניסה
    • פעולה במקרה של התאמה: אישור
    • יעדים: תגי יעד שצוינו
    • תגי טירגוט: allow-ssh
    • מסנן מקור: טווחים של IPv4
    • טווחים של כתובות IPv4 של המקור: 0.0.0.0/0
    • פרוטוקולים ויציאות:
      • בוחרים באפשרות פרוטוקולים ויציאות שצוינו.
      • מסמנים את התיבה TCP ומזינים 22 כמספר היציאה.
  3. לוחצים על יצירה.
  4. לוחצים שוב על יצירת כלל לחומת האש כדי ליצור את הכלל שיאפשר בדיקות תקינות שלGoogle Cloud :
    • Name (שם): fw-allow-health-check
    • רשת: lb-network
    • כיוון התנועה: כניסה
    • פעולה במקרה של התאמה: אישור
    • יעדים: תגי יעד שצוינו
    • תגי טירגוט: allow-health-check
    • מסנן מקור: טווחים של IPv4
    • טווחי IPv4 של המקור: 130.211.0.0/22 ו-35.191.0.0/16
    • פרוטוקולים ויציאות:
      • בוחרים באפשרות פרוטוקולים ויציאות שצוינו.
      • מסמנים את התיבה TCP ומזינים 80 כמספר היציאה.
        מומלץ להגביל את הכלל הזה רק לפרוטוקולים ולפורטים שתואמים לאלה שמשמשים בבדיקת תקינות. אם משתמשים ב-tcp:80 לפרוטוקול וליציאה, Google Cloud יכול להשתמש ב-HTTP ביציאה 80 כדי ליצור קשר עם המכונות הווירטואליות, אבל הוא לא יכול להשתמש ב-HTTPS ביציאה 443 כדי ליצור איתן קשר.
  5. לוחצים על יצירה.
  6. לוחצים על יצירת כלל חומת אש בפעם השלישית כדי ליצור את הכלל שמאפשר לשרתי ה-Proxy של מאזן העומסים להתחבר לשרתים העורפיים:
    • Name (שם): fw-allow-proxy-only-subnet
    • רשת: lb-network
    • כיוון התנועה: כניסה
    • פעולה במקרה של התאמה: אישור
    • יעדים: תגי יעד שצוינו
    • תגי טירגוט: allow-proxy-only-subnet
    • מסנן מקור: טווחים של IPv4
    • טווחים של כתובות IPv4 של המקור: 10.129.0.0/23
    • פרוטוקולים ויציאות:
      • בוחרים באפשרות פרוטוקולים ויציאות שצוינו.
      • מסמנים את התיבה TCP ומזינים את הערך 80 עבור מספרי היציאות.
  7. לוחצים על יצירה.

gcloud

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

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

    gcloud compute firewall-rules create fw-allow-health-check \
       --network=lb-network \
       --action=allow \
       --direction=ingress \
       --source-ranges=130.211.0.0/22,35.191.0.0/16 \
       --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 פנימית סטטית למאזן העומסים, אפשר לעיין במאמר בנושא שמירת כתובת IPv4 או IPv6 פנימית סטטית חדשה.

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

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

המסוף

  1. יוצרים תבנית של הגדרות מכונה. נכנסים לדף Instance templates במסוף Google Cloud .

    כניסה לדף Instance templates

    1. לוחצים על Create instance template.
    2. בשדה Name (שם), מזינים int-tcp-proxy-backend-template.
    3. מוודאים שדיסק האתחול מוגדר לקובץ אימג' של Debian, כמו Debian GNU/Linux 12 (bookworm)‎. בהוראות האלה נעשה שימוש בפקודות שזמינות רק ב-Debian, כמו apt-get.
    4. לוחצים על אפשרויות מתקדמות.
    5. לוחצים על Networking ומגדירים את השדות הבאים:
      1. בשדה Network tags (תגי רשת), מזינים את הערכים allow-ssh, allow-health-check ו-allow-proxy-only-subnet.
      2. בקטע Network interfaces (ממשקי רשת), בוחרים באפשרויות הבאות:
        • רשת: lb-network
        • Subnet: backend-subnet
    6. לוחצים על ניהול. מזינים את הסקריפט הבא בשדה סקריפט לטעינה בזמן ההפעלה.

      #! /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
      
    7. לוחצים על יצירה.

  2. יוצרים קבוצה של מופעי מכונה מנוהלים. נכנסים לדף Instance groups במסוף Google Cloud .

    כניסה לדף Instance groups

    1. לוחצים על יצירת קבוצת מופעים.
    2. בוחרים באפשרות New managed instance group (stateless) (קבוצת מופעי מכונה מנוהלים חדשה (בלי שמירת מצב)). מידע נוסף מופיע במאמר קבוצות של מכונות וירטואליות בלי שמירת מצב או עם שמירת מצב.
    3. בשדה Name (שם), מזינים mig-a.
    4. בקטע מיקום, בוחרים באפשרות אזור יחיד.
    5. בשדה אזור, בוחרים באפשרות REGION_A.
    6. בשדה Zone, בוחרים באפשרות ZONE_A1.
    7. בקטע Instance template (תבנית של הגדרות מכונה), בוחרים באפשרות int-tcp-proxy-backend-template.
    8. מציינים את מספר המופעים שרוצים ליצור בקבוצה.

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

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

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

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

    1. Name (שם): mig-c
    2. אזור: ZONE_A2 משאירים את כל ההגדרות האחרות ללא שינוי.

gcloud

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

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

    gcloud compute instance-templates create int-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_A1.

    gcloud compute instance-groups managed create mig-a \
       --zone=ZONE_A1 \
       --size=2 \
       --template=int-tcp-proxy-backend-template
    

    מחליפים את ZONE_A1 בשם האזור באזור היעד Google Cloud .

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

    gcloud compute instance-groups managed create mig-c \
       --zone=ZONE_A2 \
       --size=2 \
       --template=int-tcp-proxy-backend-template
    

    מחליפים את ZONE_A2 בשם של אזור אחר באזור היעד Google Cloud .

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

המסוף

התחלת ההגדרה

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

    כניסה לדף איזון עומסים

  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 (פנימי או גלוי לכולם), בוחרים באפשרות Internal (פנימי) ולוחצים על Next (הבא).
  6. בקטע פריסה חוצה אזורים או פריסה באזור יחיד, בוחרים באפשרות הכי מתאים לעומסי עבודה אזוריים ולוחצים על הבא.
  7. לוחצים על Configure (הגדרה).

הגדרה בסיסית

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

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

כדי להזמין תת-רשת ל-Proxy בלבד:

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

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

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

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

  1. לוחצים על Frontend configuration.
  2. בשדה Name (שם), מזינים int-tcp-forwarding-rule.
  3. בשדה רשת משנה, בוחרים באפשרות backend-subnet.
  4. בשדה IP address, בוחרים את כתובת ה-IP ששמרתם קודם: LB_IP_ADDRESS
  5. בשדה מספר היציאה, מזינים 110. כלל ההעברה מעביר רק מנות עם יציאת יעד תואמת.
  6. בדוגמה הזו, לא מפעילים את פרוטוקול ה-Proxy כי הוא לא פועל עם תוכנת Apache HTTP Server. מידע נוסף זמין במאמר בנושא פרוטוקול proxy.
  7. לוחצים על סיום.
  8. במסוף Google Cloud , מוודאים שיש סימן וי ליד 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 internal-tcp-proxy-bs \
       --load-balancing-scheme=INTERNAL_MANAGED \
       --protocol=TCP \
       --region=REGION_A \
       --health-checks=tcp-health-check \
       --health-checks-region=REGION_A
    
  3. מוסיפים קבוצות של מכונות וירטואליות לשירות הקצה העורפי.

    gcloud compute backend-services add-backend internal-tcp-proxy-bs \
       --region=REGION_A \
       --instance-group=mig-a \
       --instance-group-zone=ZONE_A1 \
       --balancing-mode=UTILIZATION \
       --max-utilization=0.8
    
    gcloud compute backend-services add-backend internal-tcp-proxy-bs \
       --region=REGION_A \
       --instance-group=mig-c \
       --instance-group-zone=ZONE_A2 \
       --balancing-mode=UTILIZATION \
       --max-utilization=0.8
    
  4. יוצרים שרת proxy פנימי של TCP ביעד.

    gcloud compute target-tcp-proxies create int-tcp-target-proxy \
       --backend-service=internal-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 int-tcp-forwarding-rule \
       --load-balancing-scheme=INTERNAL_MANAGED \
       --network=lb-network \
       --subnet=backend-subnet \
       --region=REGION_A \
       --target-tcp-proxy=int-tcp-target-proxy \
       --target-tcp-proxy-region=REGION_A \
       --address=int-tcp-ip-address \
       --ports=110
    

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

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

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

יוצרים מכונה וירטואלית (VM) של לקוח (client-vm) באותו אזור שבו נמצא מאזן העומסים.

המסוף

  1. נכנסים לדף VM instances במסוף Google Cloud .

    כניסה לדף VM instances

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

  3. מגדירים את Name לערך client-vm.

  4. מגדירים את Zone לערך ZONE_A1.

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

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

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

gcloud

המכונה הווירטואלית של הלקוח צריכה להיות באותה רשת VPC ובאותו אזור כמו מאזן העומסים. היא לא צריכה להיות באותה רשת משנה או באותו אזור. הלקוח משתמש באותה רשת משנה כמו מכונות ה-VM של ה-backend.

gcloud compute instances create client-vm \
    --zone=ZONE_A1 \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=backend-subnet

הפניית תנועה למאזן העומסים

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

  1. משתמשים ב-SSH כדי להתחבר למכונת הלקוח.

    gcloud compute ssh client-vm \
       --zone=ZONE_A1
    
  2. מוודאים שמאזן העומסים מציג את שמות המארחים של הקצה העורפי כמצופה.

    1. משתמשים בפקודה compute addresses describe כדי לראות את כתובת ה-IP של מאזן העומסים:

      gcloud compute addresses describe int-tcp-ip-address \
       --region=REGION_A
      

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

    2. שליחת תעבורה למאזן העומסים. מחליפים את IP_ADDRESS בכתובת ה-IP של מאזן העומסים.

      curl IP_ADDRESS:110
      

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

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

הפעלה של גישה גלובלית

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

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

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

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

המסוף

יוצרים כלל העברה חדש למאזן העומסים:

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

    כניסה לדף איזון עומסים

  2. בעמודה Name (שם), לוחצים על מאזן העומסים.

  3. לוחצים על Frontend configuration.

  4. לוחצים על Add frontend IP and port.

  5. מזינים את השם ואת פרטי רשת המשנה של כלל ההעברה החדש.

  6. בשדה רשת משנה, בוחרים באפשרות backend-subnet.

  7. בשדה כתובת IP, אפשר לבחור את אותה כתובת IP כמו בכלל העברה קיים, לשמור כתובת IP חדשה או להשתמש בכתובת IP זמנית. אפשר לשתף את אותה כתובת IP בין כמה כללי העברה רק אם מגדירים את הדגל --purpose של כתובת ה-IP לערך SHARED_LOADBALANCER_VIP כשיוצרים את כתובת ה-IP.

  8. בשדה מספר היציאה, מזינים 110.

  9. בקטע גישה גלובלית, בוחרים באפשרות הפעלה.

  10. לוחצים על סיום.

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

gcloud

  1. יוצרים כלל העברה חדש למאזן העומסים עם הדגל --allow-global-access.

    gcloud compute forwarding-rules create int-tcp-forwarding-rule-global-access \
       --load-balancing-scheme=INTERNAL_MANAGED \
       --network=lb-network \
       --subnet=backend-subnet \
       --region=REGION_A \
       --target-tcp-proxy=int-tcp-target-proxy \
       --target-tcp-proxy-region=REGION_A \
       --address=int-tcp-ip-address \
       --ports=110 \
       --allow-global-access
    
  2. אפשר להשתמש בפקודה gcloud compute forwarding-rules describe כדי לבדוק אם הופעלה גישה גלובלית לכלל ההעברה. לדוגמה:

    gcloud compute forwarding-rules describe int-tcp-forwarding-rule-global-access \
       --region=REGION_A \
       --format="get(name,region,allowGlobalAccess)"
    

    כשהגישה הגלובלית מופעלת, המילה True מופיעה בפלט אחרי השם והאזור של כלל ההעברה.

יצירת מכונה וירטואלית של לקוח לבדיקת גישה גלובלית

המסוף

  1. נכנסים לדף VM instances במסוף Google Cloud .

    כניסה לדף VM instances

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

  3. מגדירים את Name לערך test-global-access-vm.

  4. מגדירים את Zone לערך ZONE_B1.

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

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

    1. בשדה Network tags (תגי רשת), מזינים allow-ssh.
    2. בקטע Network interfaces (ממשקי רשת), בוחרים באפשרויות הבאות:
      • רשת: lb-network
      • Subnet: test-global-access-subnet
  7. לוחצים על יצירה.

gcloud

יוצרים מכונה וירטואלית של לקוח באזור ZONE_B1.

gcloud compute instances create test-global-access-vm \
    --zone=ZONE_B1 \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=test-global-access-subnet

מחליפים את ZONE_B1 בשם האזור באזור REGION_B.

התחברות ל-VM של הלקוח ובדיקת הקישוריות

  1. משתמשים ב-ssh כדי להתחבר למופע הלקוח:

    gcloud compute ssh test-global-access-vm \
        --zone=ZONE_B1
    
  2. כדי לקבל את כתובת ה-IP של מאזן העומסים, משתמשים בפקודה gcloud compute addresses describe:

    gcloud compute addresses describe int-tcp-ip-address \
        --region=REGION_A
    

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

  3. שולחים תעבורה למאזן העומסים. מחליפים את IP_ADDRESS בכתובת ה-IP של מאזן העומסים:

    curl IP_ADDRESS:110
    

פרוטוקול PROXY לשמירת פרטי החיבור של הלקוח

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

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

מוודאים שהשרתים העורפיים (backend instance) של מאזן העומסים של ה-proxy פועלים בשרתים שתומכים בכותרות של פרוטוקול PROXY. אם השרתים לא מוגדרים לתמיכה בכותרות של פרוטוקול PROXY, המופעים העורפיים מחזירים תגובות ריקות.

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

כותרת פרוטוקול ה-PROXY היא בדרך כלל שורה אחת של טקסט שקריא למשתמש בפורמט הבא:

PROXY TCP4 <client IP> <load balancing IP> <source port> <dest port>\r\n

בדוגמה הבאה מוצג פרוטוקול PROXY:

PROXY TCP4 192.0.2.1 198.51.100.1 15221 110\r\n

בדוגמה שלמעלה, כתובת ה-IP של הלקוח היא 192.0.2.1, כתובת ה-IP של איזון העומסים היא 198.51.100.1, יציאת הלקוח היא 15221 ויציאת היעד היא 110.

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

PROXY UNKNOWN\r\n

עדכון כותרת פרוטוקול ה-PROXY עבור שרת ה-proxy של היעד

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

המסוף

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

    כניסה לדף איזון עומסים

  2. לוחצים על השם של מאזן העומסים שרוצים לערוך.
  3. לוחצים על Edit (עריכה) ליד מאזן העומסים.
  4. לוחצים על Frontend configuration.
  5. מוחקים את כתובת ה-IP והיציאה הישנות של חזית האתר.
  6. לוחצים על Add frontend IP and port.
    1. בשדה Name (שם), מזינים int-tcp-forwarding-rule.
    2. בשדה רשת משנה, בוחרים באפשרות backend-subnet.
    3. בשדה IP address, בוחרים את כתובת ה-IP ששמרתם קודם: LB_IP_ADDRESS
    4. בשדה מספר היציאה, מזינים 110. כלל ההעברה מעביר רק מנות עם יציאת יעד תואמת.
    5. משנים את הערך של השדה Proxy protocol (פרוטוקול שרת Proxy) ל-On (מופעל).
    6. לוחצים על סיום.
  7. לוחצים על עדכון כדי לשמור את השינויים.

gcloud

  1. בפקודה הבאה, עורכים את השדה --proxy-header ומגדירים אותו לערך NONE או PROXY_V1, בהתאם לדרישה.

       gcloud compute target-tcp-proxies create TARGET_PROXY_NAME \
           --backend-service=BACKEND_SERVICE \
           --proxy-header=[NONE | PROXY_V1] \
           --region=REGION
       
  2. מוחקים את כלל ההעברה הקיים.

       gcloud compute forwarding-rules delete int-tcp-forwarding-rule \
           --region=REGION
       
  3. יוצרים כלל העברה חדש ומשייכים אותו לשרת ה-proxy של היעד.

       gcloud compute forwarding-rules create int-tcp-forwarding-rule \
           --load-balancing-scheme=INTERNAL_MANAGED \
           --network=lb-network \
           --subnet=backend-subnet \
           --region=REGION \
           --target-tcp-proxy=TARGET_PROXY_NAME \
           --target-tcp-proxy-region=REGION \
           --address=LB_IP_ADDRESS \
           --ports=110
       

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

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

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

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

המסוף

כדי להפעיל זיקה לסשן לפי כתובת IP של לקוח:

  1. נכנסים לדף Load balancing במסוף Google Cloud .
    כניסה לדף איזון עומסים
  2. לוחצים על Backends.
  3. לוחצים על internal-tcp-proxy-bs (שם שירות לקצה העורפי שיצרתם בדוגמה הזו) ואז על Edit (עריכה).
  4. בדף פרטי שירות לקצה העורפי, לוחצים על הגדרות מתקדמות.
  5. בקטע Session affinity, בוחרים באפשרות Client IP מהתפריט.
  6. לוחצים על עדכון.

gcloud

משתמשים בפקודה הבאה של Google Cloud CLI כדי לעדכן את שירות ה-Backend‏ internal-tcp-proxy-bs, ומציינים את הזיקה לסשן עם כתובת IP של לקוח:

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

הפעלת זמן להשלמת תהליך (connection draining)

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

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