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

Google Cloud מאזני עומסי רשת גלובליים חיצוניים לשרת proxy מאפשרים לכם להשתמש בכתובת IP אחת לכל המשתמשים בעולם. מאזני עומסים גלובליים חיצוניים לשרת proxy מנתבים אוטומטית את תעבורת הנתונים למופעי קצה עורפיים שהכי קרובים למשתמש.

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

סקירה כללית של ההגדרה

בדוגמה הזו מוסבר איך להגדיר מאזן עומסי רשת חיצוני לשרת proxy בשביל שירות שקיים בשני אזורים: אזור א' ואזור ב'. לצורך הדוגמה, השירות הוא קבוצה של שרתי Apache שהוגדרו להגיב ביציאה 110. דפדפנים רבים לא מאפשרים שימוש ביציאה 110, ולכן בקטע הבדיקה נעשה שימוש ביציאה curl.

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

  1. ארבעה מופעים שמפוזרים בין שני אזורים
  2. קבוצות של מכונות, שמכילות את המכונות
  3. בדיקת תקינות לאימות התקינות של מופע
  4. שירות קצה עורפי, שמנטר את המופעים ומונע מהם לחרוג מהשימוש שהוגדר
  5. שרת ה-TCP Proxy היעד
  6. כתובת IPv4 חיצונית סטטית וכלל העברה ששולח את תנועת המשתמשים לשרת ה-proxy
  7. כתובת IPv6 חיצונית סטטית וכלל העברה ששולח את תנועת המשתמשים לשרת ה-proxy
  8. כלל חומת אש שמאפשר תעבורת נתונים ממאזן העומסים ומבודק תקינות המערכת אל המופעים

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

הרשאות

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

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

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

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

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

המסוף

כדי לתמוך בתנועה מסוג IPv4 ו-IPv6, פועלים לפי השלבים הבאים:

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

    מעבר לרשתות VPC

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

  3. מזינים שם לרשת.

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

    1. בשדה VPC network ULA internal IPv6 range (טווח IPv6 פנימי של ULA ברשת VPC), בוחרים באפשרות Enabled (מופעל).
    2. בקטע הקצאת טווח פנימי של IPv6, בוחרים באפשרות אוטומטית או ידנית.

      אם בוחרים באפשרות Manually, צריך להזין טווח של /48 מתוך הטווח fd20::/20. אם הטווח נמצא בשימוש, תתבקשו לספק טווח אחר.

  5. בקטע Subnet creation mode (מצב יצירת רשת משנה), בוחרים באפשרות Custom (בהתאמה אישית).

  6. בקטע New subnet (רשת משנה חדשה), מגדירים את השדות הבאים:

    1. בשדה Name, מציינים שם לרשת המשנה.
    2. בשדה אזור, בוחרים אזור.
    3. בשביל IP stack type, בוחרים באפשרות IPv4 and IPv6 (dual-stack).
    4. בשדה טווח כתובות IP, מזינים טווח של כתובות IP. זהו טווח ה-IPv4 הראשי של רשת המשנה.

      אפשר להגדיר טווח כתובות IPv4 עבור רשת המשנה, אבל אי אפשר לבחור את טווח כתובות ה-IPv6 עבור רשת המשנה. ‫Google מספקת בלוק CIDR של IPv6 בגודל קבוע (/64).

    5. בשדה IPv6 access type, בוחרים באפשרות External.

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

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

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

כדי לתמוך בתנועת נתונים ב-IPv4 בלבד, פועלים לפי השלבים הבאים:

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

    מעבר לרשתות VPC

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

  3. בשדה Name, מזינים שם לרשת.

  4. בקטע Subnet creation mode (מצב יצירת רשת משנה), בוחרים באפשרות Custom (בהתאמה אישית).

  5. בקטע New subnet (רשת משנה חדשה), מגדירים את האפשרויות הבאות:

    1. בשדה Name, מציינים שם לרשת המשנה.
    2. בשדה אזור, בוחרים אזור.
    3. בשביל IP stack type, בוחרים באפשרות IPv4 (single-stack).
    4. בשדה טווח כתובות IP, מזינים את טווח כתובות ה-IPv4 הראשי של רשת המשנה.
  6. לוחצים על סיום.

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

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

gcloud

  1. יוצרים את רשת ה-VPC במצב בהתאמה אישית:

    gcloud compute networks create NETWORK \
        --subnet-mode=custom
    
  2. ברשת, יוצרים רשת משנה לשרתי קצה עורפיים.

    כדי לעדכן רשת משנה בשביל תנועת IPv4 ו-IPv6, משתמשים בפקודה הבאה:

    gcloud compute networks subnets create SUBNET \
       --stack-type=IPV4_IPV6 \
       --ipv6-access-type=EXTERNAL \
       --network=NETWORK \
       --range=IPV4_RANGE \
       --region=REGION_A
    
    gcloud compute networks subnets create SUBNET_B \
       --stack-type=IPV4_IPV6 \
       --ipv6-access-type=EXTERNAL \
       --network=NETWORK \
       --range=IPV4_RANGE_B \
       --region=REGION_B
    

    כדי להגדיר תנועת IPv4 בלבד, משתמשים בפקודה הבאה:

    gcloud compute networks subnets create SUBNET \
       --network=NETWORK \
       --stack-type=IPV4_ONLY \
       --range=IPV4_RANGE \
       --region=REGION_A
    
    gcloud compute networks subnets create SUBNET_B \
       --network=NETWORK \
       --stack-type=IPV4_ONLY \
       --range=IPV4_RANGE_B \
       --region=REGION_B
    

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

  • NETWORK: שם לרשת ה-VPC

  • IPV4_RANGE: טווח ה-IPv4 הראשי של תת-הרשת החדשה, בסימון CIDR. לדוגמה, 10.1.2.0/24.

  • SUBNET: שם לרשת המשנה

  • REGION_A או REGION_B: שם האזור

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

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

הגדרת מופעים

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

בדוגמה הזו, המכונות נוצרות עם התג tcp-lb. התג הזה משמש בהמשך את כלל חומת האש.

המסוף

יצירת מופעים

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

    כניסה לדף VM instances

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

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

  4. מגדירים את Region לערך REGION_A.

  5. מגדירים את Zone לערך ZONE_A.

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

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

    • בקטע תגי רשת, מזינים tcp-lb,allow-health-check-ipv6.

    כדי לתמוך בתנועה מסוג IPv4 ו-IPv6, פועלים לפי השלבים הבאים:

    1. בקטע Network interfaces, לוחצים על Edit ומבצעים את השינויים הבאים:
      • רשת: NETWORK
      • Subnet: SUBNET
      • סוג מחסנית IP: IPv4 ו-IPv6 (מחסנית כפולה)
    2. לוחצים על סיום
  8. לוחצים על ניהול. מזינים את הסקריפט הבא בשדה סקריפט לטעינה בזמן ההפעלה.

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>vm-a1</h1></body></html>' | sudo tee /var/www/html/index.html
  9. לוחצים על יצירה.

  10. יוצרים את vm-a2 עם אותן הגדרות, אבל עם הסקריפט הבא בשדה סקריפט לטעינה בזמן ההפעלה:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>vm-a2</h1></body></html>' | sudo tee /var/www/html/index.html

  11. יוצרים את vm-b1 עם אותן הגדרות, אבל עם Region שמוגדר ל-REGION_B ועם Zone שמוגדר ל-ZONE_B. מזינים את הסקריפט הבא בשדה סקריפט לטעינה בזמן ההפעלה:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>vm-b1</h1></body></html>' | sudo tee /var/www/html/index.html

  12. יוצרים את vm-b2 עם אותן הגדרות, אבל עם Region שמוגדר ל-REGION_B ועם Zone שמוגדר ל-ZONE_B. מזינים את הסקריפט הבא בשדה סקריפט לטעינה בזמן ההפעלה:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>vm-b2</h1></body></html>' | sudo tee /var/www/html/index.html

gcloud

  1. יצירת vm-a1 באזור ZONE_A

    gcloud compute instances create vm-a1 \
       --image-family debian-12 \
       --image-project debian-cloud \
       --tags tcp-lb \
       --zone ZONE_A \
       --metadata startup-script="#! /bin/bash
         sudo apt-get update
         sudo apt-get install apache2 -y
         sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
         sudo service apache2 restart
         echo '<!doctype html><html><body><h1>vm-a1</h1></body></html>' | tee /var/www/html/index.html
         EOF"
    
  2. יצירת vm-a2 באזור ZONE_A

    gcloud compute instances create vm-a2 \
       --image-family debian-12 \
       --image-project debian-cloud \
       --tags tcp-lb \
       --zone ZONE_A \
       --metadata startup-script="#! /bin/bash
         sudo apt-get update
         sudo apt-get install apache2 -y
         sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
         sudo service apache2 restart
         echo '<!doctype html><html><body><h1>vm-a2</h1></body></html>' | tee /var/www/html/index.html
         EOF"
    
  3. יצירת vm-b1 באזור ZONE_B

    gcloud compute instances create vm-b1 \
       --image-family debian-12 \
       --image-project debian-cloud \
       --tags tcp-lb \
       --zone ZONE_B \
       --metadata startup-script="#! /bin/bash
         sudo apt-get update
         sudo apt-get install apache2 -y
         sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
         sudo service apache2 restart
         echo '<!doctype html><html><body><h1>vm-b1</h1></body></html>' | tee /var/www/html/index.html
         EOF"
    
  4. יצירת vm-b2 באזור ZONE_B

    gcloud compute instances create vm-b2 \
       --image-family debian-12 \
       --image-project debian-cloud \
       --tags tcp-lb \
       --zone ZONE_B \
       --metadata startup-script="#! /bin/bash
         sudo apt-get update
         sudo apt-get install apache2 -y
         sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
         sudo service apache2 restart
         echo '<!doctype html><html><body><h1>vm-b2</h1></body></html>' | tee /var/www/html/index.html
         EOF"
    

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

בקטע הזה יוצרים קבוצת מופעים בכל אזור ומוסיפים את המופעים.

המסוף

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

    כניסה לדף Instance groups

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

  3. לוחצים על קבוצת מופעים חדשה לא מנוהלת.

  4. מגדירים את Name לערך instance-group-a.

  5. מגדירים את Zone לערך ZONE_A.

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

    1. מגדירים את שם הניוד לערך tcp110.
    2. מגדירים את ניוד מספרים ל-110.
  7. בקטע VM instances, בוחרים באפשרויות vm-a1 ו-vm-a2.

  8. משאירים את שאר ההגדרות כמו שהן.

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

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

    • Name (שם): instance-group-b
    • אזור: REGION_B
    • Zone (תחום): ZONE_B
    • שם היציאה: tcp110
    • מספרי יציאות: 110
    • Instances: vm-b1 and vm-b2.

gcloud

  1. יוצרים את קבוצת המכונות instance-group-a.

    gcloud compute instance-groups unmanaged create instance-group-a \
       --zone ZONE_A
    
  2. יוצרים יציאה עם שם לקבוצת המופעים.

    gcloud compute instance-groups set-named-ports instance-group-a \
       --named-ports tcp110:110 \
       --zone ZONE_A
    
  3. הוספה של vm-a1 ושל vm-a2 אל instance-group-a.

    gcloud compute instance-groups unmanaged add-instances instance-group-a \
       --instances vm-a1,vm-a2 \
       --zone ZONE_A
    
  4. יוצרים את קבוצת המכונות us-ig2.

    gcloud compute instance-groups unmanaged create instance-group-b \
       --zone ZONE_B
    
  5. יוצרים יציאה עם שם לקבוצת המופעים.

    gcloud compute instance-groups set-named-ports instance-group-b \
       --named-ports tcp110:110 \
       --zone ZONE_B
    
  6. הוספה של vm-b1 ושל vm-b2 לקבוצת המופעים instance-group-b

    gcloud compute instance-groups unmanaged add-instances instance-group-b \
       --instances vm-b1,vm-b2 \
       --zone ZONE_B
    

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

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

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

המסוף

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

    לדף Firewall policies

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

  3. בשדה שם מזינים allow-tcp-lb-and-health.

  4. בוחרים רשת.

  5. בקטע יעדים, בוחרים באפשרות תגי יעד ספציפיים.

  6. מגדירים את Target tags ל-tcp-lb.

  7. מגדירים את Source filter בתור IPv4 ranges.

  8. מגדירים את Source IPv4 ranges (טווחים של כתובות IPv4 של המקור) ל-130.211.0.0/22,35.191.0.0/16.

  9. בקטע פרוטוקולים ויציאות, מגדירים את פרוטוקולים ויציאות שצוינו לערך tcp:110.

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

gcloud

gcloud compute firewall-rules create allow-tcp-lb-and-health \
   --source-ranges 130.211.0.0/22,35.191.0.0/16 \
   --target-tags tcp-lb \
   --allow tcp:110

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

חשוב לוודא שיש לכם כלל תעבורה נכנסת (ingress) שחל על המופעים שמתבצע איזון עומסים ביניהם, ושמאפשר תעבורה ממערכות בדיקת תקינות (2600:2d00:1:b029::/64). בדוגמה הזו נעשה שימוש בתג היעד allow-health-check-ipv6 כדי לזהות את המופעים של המכונות הווירטואליות שעליהם הוא חל. Google Cloud

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

המסוף

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

    לדף Firewall policies

  2. כדי לאפשר תעבורה של רשת משנה ב-IPv6, לוחצים שוב על יצירת כלל חומת אש ומזינים את הפרטים הבאים:

    • Name (שם): fw-allow-lb-access-ipv6
    • בוחרים את הרשת.
    • עדיפות: 1000
    • כיוון התנועה: תעבורת נתונים נכנסת (ingress)
    • יעדים: תגי יעד שצוינו
    • תגי טירגוט: allow-health-check-ipv6
    • מסנן מקור: טווחים של IPv6
    • טווחים של כתובות IPv6 של המקור: 2600:2d00:1:b029::/64,2600:2d00:1:1::/64
    • פרוטוקולים ויציאות: אישור הכול
  3. לוחצים על יצירה.

gcloud

יוצרים את כלל חומת האש fw-allow-lb-access-ipv6 כדי לאפשר תקשורת עם תת-הרשת:

gcloud compute firewall-rules create fw-allow-lb-access-ipv6 \
  --network=NETWORK \
  --action=/proxy/https/docs.cloud.google.com/load-balancing/docs/tcp/allow \
  --direction=ingress \
  --target-tags=allow-health-check-ipv6 \
  --source-ranges=2600:2d00:1:b029::/64,2600:2d00:1:1::/64 \
  --rules=all

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

המסוף

התחלת ההגדרה

  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 (פנימי או חיצוני), בוחרים באפשרות Public facing (external) (חיצוני) ולוחצים על Next (הבא).
  6. לפריסה גלובלית או פריסה באזור יחיד, בוחרים באפשרות הכי מתאים לעומסי עבודה גלובליים ולוחצים על הבא.
  7. בקטע Load balancer generation (יצירת מאזן עומסים), בוחרים באפשרות Global external proxy Network Load Balancer (מאזן עומסי רשת גלובלי חיצוני בשרת proxy) ולוחצים על Next (הבא).
  8. לוחצים על Configure (הגדרה).

הגדרה בסיסית

מגדירים את Name לערך my-tcp-lb.

Backend configuration

  1. לוחצים על Backend configuration.
  2. ברשימה Backend type (סוג ה-Backend), בוחרים באפשרות Instance groups (קבוצות של מכונות).
  3. ברשימה פרוטוקול, בוחרים באפשרות TCP.
  4. ברשימה IP address selection policy בוחרים באפשרות Prefer IPv6.
  5. מגדירים את בדיקת התקינות:
    • ברשימה בדיקת תקינות, בוחרים באפשרות יצירת בדיקת תקינות.
    • בשדה שם מזינים my-tcp-health-check.
    • ברשימה פרוטוקול, בוחרים באפשרות TCP.
    • בשדה יציאה, מזינים 110.
    • משאירים את שאר ערכי ברירת המחדל.
    • לוחצים על יצירה.
  6. מגדירים את הקצה העורפי הראשון:
    1. בקטע New backend (עורף חדש), בוחרים בקבוצת מכונות instance-group-a.
    2. משאירים את שאר ערכי ברירת המחדל.
  7. מגדירים את הקצה העורפי השני:

      כדי לתמוך בתנועה של IPv4 ו-IPv6:

      • בשדה IP stack type, בוחרים באפשרות IPv4 and IPv6 (dual-stack).
    1. לוחצים על הוספת קצה עורפי.
    2. בוחרים קבוצת מכונות instance-group-b.
    3. בקטע ניוד מספרים, מוחקים את 80 ומוסיפים את 110.
  8. במסוף Google Cloud , מוודאים שיש סימן וי ליד Backend configuration. אם לא, צריך לוודא שהשלמתם את כל השלבים.

Frontend configuration

  1. לוחצים על Frontend configuration.
  2. מוסיפים את כלל ההעברה הראשון:
    1. מזינים שם של my-tcp-lb-forwarding-rule.
    2. בקטע Protocol, בוחרים באפשרות TCP.
    3. בקטע כתובת IP, בוחרים באפשרות יצירת כתובת IP:
      1. מזינים שם של tcp-lb-static-ip.
      2. לוחצים על Reserve.
    4. מגדירים את Port לערך 110.
    5. בדוגמה הזו, לא מפעילים את פרוטוקול ה-Proxy כי הוא לא פועל עם תוכנת Apache HTTP Server. מידע נוסף זמין במאמר בנושא פרוטוקול proxy.
    6. לוחצים על סיום.
  3. במסוף Google Cloud , מוודאים שיש סימן וי ליד Frontend configuration. אם לא, בודקים שוב שביצעתם את כל השלבים הקודמים.

בדיקה וסיום

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

gcloud

  1. יצירת בדיקת תקינות.
        gcloud compute health-checks create tcp my-tcp-health-check --port 110
        
  2. יוצרים שירות לקצה העורפי.
        gcloud beta compute backend-services create my-tcp-lb \
            --load-balancing-scheme EXTERNAL_MANAGED \
            --global-health-checks \
            --global \
            --protocol TCP \
            --ip-address-selection-policy=PREFER_IPV6 \
            --health-checks my-tcp-health-check \
            --timeout 5m \
            --port-name tcp110
        

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

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

        gcloud beta compute backend-services add-backend my-tcp-lb \
            --global \
            --instance-group instance-group-a \
            --instance-group-zone ZONE_A \
            --balancing-mode UTILIZATION \
            --max-utilization 0.8
        
        gcloud beta compute backend-services add-backend my-tcp-lb \
            --global \
            --instance-group instance-group-b \
            --instance-group-zone ZONE_B \
            --balancing-mode UTILIZATION \
            --max-utilization 0.8
        
  4. מגדירים שרת proxy של TCP ביעד. אם רוצים להפעיל את כותרת ה-proxy, צריך להגדיר אותה ל-PROXY_V1 במקום ל-NONE.
        gcloud beta compute target-tcp-proxies create my-tcp-lb-target-proxy \
            --backend-service my-tcp-lb \
            --proxy-header NONE
        
  5. שמירת כתובות IPv4 ו-IPv6 סטטיות גלובליות.

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

        gcloud compute addresses create tcp-lb-static-ipv4 \
            --ip-version=IPV4 \
            --global
        
        gcloud compute addresses create tcp-lb-static-ipv6 \
            --ip-version=IPV6 \
            --global
        
  6. מגדירים כללי העברה גלובליים לשתי הכתובות.
        gcloud beta compute forwarding-rules create my-tcp-lb-ipv4-forwarding-rule \
            --load-balancing-scheme EXTERNAL_MANAGED \
            --global \
            --target-tcp-proxy my-tcp-lb-target-proxy \
            --address tcp-lb-static-ipv4 \
            --ports 110
        

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

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

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

    gcloud compute addresses describe tcp-lb-static-ipv4
    

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

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

    curl -m1 LB_IP_ADDRESS:110
    

    לדוגמה, אם כתובת ה-IPv6 שהוקצתה היא [2001:db8:1:1:1:1:1:1/96]:110, הפקודה צריכה להיראות כך:

    curl -m1 http://[2001:db8:1:1:1:1:1:1]: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. לוחצים על Edit (עריכה) ליד מאזן העומסים.
  3. לוחצים על Frontend configuration.
  4. משנים את הערך של השדה Proxy protocol (פרוטוקול שרת Proxy) ל-On (מופעל).
  5. לוחצים על עדכון כדי לשמור את השינויים.

gcloud

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

gcloud compute target-tcp-proxies update TARGET_PROXY_NAME \
    --proxy-header=[NONE | PROXY_V1]

הגדרת זיקה לסשן

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

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

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

המסוף

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

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

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

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

  3. לוחצים על my-tcp-lb (השם של שירות לקצה העורפי שיצרתם בדוגמה הזו) ואז על Edit (עריכה).

  4. בדף פרטי שירות לקצה העורפי, לוחצים על הגדרות מתקדמות.

  5. בקטע Session affinity, בוחרים באפשרות Client IP מהתפריט.

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

gcloud

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

gcloud compute backend-services update my-tcp-lb \
    --global \
    --session-affinity=CLIENT_IP

API

כדי להגדיר זיקה לסשן (session affinity) של כתובת IP של לקוח, שולחים בקשת PATCH אל ה-method‏ backendServices/patch.

PATCH https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/us-west1/backendServices/my-tcp-lb
{
  "sessionAffinity": "CLIENT_IP"
}

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

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

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