מאזן עומסי רשת פנימי אזורי שמבוסס על פרוקסי הוא מאזן עומסים אזורי בשכבה 4 שמאפשר להפעיל את תעבורת הנתונים של שירות TCP ולהרחיב אותה מאחורי כתובת IP פנימית שנגישה רק ללקוחות באותה רשת VPC או ללקוחות שמחוברים לרשת ה-VPC.
המדריך הזה כולל הוראות להגדרה של מאזן עומסי רשת אזורי פנימי בשרת proxy עם קצה עורפי של קבוצת מופעי מכונה מנוהלים (MIG).
לפני שמתחילים, כדאי לקרוא את סקירת מאזן עומסי רשת אזורי פנימי לשרת proxy.
סקירה כללית
בדוגמה הזו, נשתמש במאזן העומסים כדי להפיץ תנועת TCP בין מכונות וירטואליות (VM) בעורף המערכת בשתי קבוצות של מכונות מנוהלות אזוריות באזור REGION_A. לצורך הדוגמה, השירות הוא קבוצה של שרתי Apache שהוגדרו להגיב ביציאה 110.
הרבה דפדפנים לא מאפשרים שימוש ביציאה 110, ולכן בקטע הבדיקה נעשה שימוש ביציאה curl.
בדוגמה הזו, אתם מגדירים את הפריסה הבאה:
מאזן עומסי רשת אזורי פנימי בשרת 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.
יצירת הרשתות ורשתות המשנה
המסוף
נכנסים לדף VPC networks במסוף Google Cloud .
לוחצים על יצירת רשת VPC.
בשדה Name (שם), מזינים
lb-network.בקטע רשתות משנה, מגדירים את מצב יצירת רשתות משנה למותאם אישית.
יוצרים רשת משנה לשרתי הבק-אנד של מאזן העומסים. בקטע New subnet (רשת משנה חדשה), מזינים את הפרטים הבאים:
- Name (שם):
backend-subnet - אזור:
REGION_A - טווח כתובות IP:
10.1.2.0/24
- Name (שם):
לוחצים על סיום.
לוחצים על הוספת רשת משנה.
יוצרים רשת משנה כדי להדגים גישה גלובלית. בקטע New subnet, מזינים את הפרטים הבאים:
- Name (שם):
test-global-access-subnet - אזור:
REGION_B - טווח כתובות IP:
10.3.4.0/24
- Name (שם):
לוחצים על סיום.
לוחצים על יצירה.
gcloud
יוצרים את רשת ה-VPC המותאמת אישית באמצעות הפקודה
gcloud compute networks create:gcloud compute networks create lb-network --subnet-mode=custom
יוצרים תת-רשת ברשת
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 .
יוצרים תת-רשת ברשת
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 בלבד, פועלים לפי השלבים הבאים:
- נכנסים לדף VPC networks במסוף Google Cloud .
מעבר לרשתות VPC - לוחצים על השם של רשת ה-VPC המשותפת:
lb-network. - לוחצים על הוספת רשת משנה.
- בשדה Name (שם), מזינים
proxy-only-subnet. - בשדה אזור, בוחרים באפשרות
REGION_A. - מגדירים את Purpose (מטרה) לערך Regional Managed Proxy (שרת proxy מנוהל אזורי).
- בשדה IP address range (טווח כתובות IP), מזינים
10.129.0.0/23. - לוחצים על הוספה.
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 נכנסת ביציאת TCP22מכל כתובת. אתם יכולים לבחור טווח IP של מקור מגביל יותר לכלל הזה. לדוגמה, אתם יכולים לציין רק את טווחי ה-IP של המערכת שממנה אתם מפעילים סשנים של SSH. בדוגמה הזו נשתמש בתג היעדallow-ssh.
fw-allow-health-check. כלל כניסה שחל על המופעים שמתבצע איזון העומסים שלהם, שמאפשר את כל תעבורת ה-TCP ממערכות בדיקת תקינות (ב-130.211.0.0/22וב-35.191.0.0/16). בדוגמה הזו נעשה שימוש בתג היעדallow-health-check. Google Cloudfw-allow-proxy-only-subnet. כלל תעבורת נתונים נכנסת (ingress) שמאפשר חיבורים מתת-רשת של שרת proxy בלבד לשרתים העורפיים (backend).
בלי כללי חומת האש האלה, הכלל default deny ingress חוסם תנועה נכנסת למופעי ה-Backend.
תגי היעד מגדירים את מופעי ה-Backend. בלי תגי היעד, כללי חומת האש חלים על כל מופעי ה-Backend ברשת ה-VPC. כשיוצרים את מכונות ה-VM של ה-Backend, חשוב לכלול את תגי היעד שצוינו, כמו שמוסבר במאמר יצירת קבוצת מופעים מנוהלת.
המסוף
- נכנסים לדף Firewall policies במסוף Google Cloud .
מעבר אל Firewall policies - לוחצים על יצירת כלל לחומת האש כדי ליצור את הכלל שיאפשר חיבורי SSH נכנסים:
- Name (שם):
fw-allow-ssh - רשת:
lb-network - כיוון התנועה: כניסה
- פעולה במקרה של התאמה: אישור
- יעדים: תגי יעד שצוינו
- תגי טירגוט:
allow-ssh - מסנן מקור: טווחים של IPv4
- טווחים של כתובות IPv4 של המקור:
0.0.0.0/0 - פרוטוקולים ויציאות:
- בוחרים באפשרות פרוטוקולים ויציאות שצוינו.
- מסמנים את התיבה TCP ומזינים
22כמספר היציאה.
- Name (שם):
- לוחצים על יצירה.
- לוחצים שוב על יצירת כלל לחומת האש כדי ליצור את הכלל שיאפשר בדיקות תקינות של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כדי ליצור איתן קשר.
- Name (שם):
- לוחצים על יצירה.
- לוחצים על יצירת כלל חומת אש בפעם השלישית כדי ליצור את הכלל שמאפשר לשרתי ה-Proxy של מאזן העומסים להתחבר לשרתים העורפיים:
- Name (שם):
fw-allow-proxy-only-subnet - רשת:
lb-network - כיוון התנועה: כניסה
- פעולה במקרה של התאמה: אישור
- יעדים: תגי יעד שצוינו
- תגי טירגוט:
allow-proxy-only-subnet - מסנן מקור: טווחים של IPv4
- טווחים של כתובות IPv4 של המקור:
10.129.0.0/23 - פרוטוקולים ויציאות:
- בוחרים באפשרות פרוטוקולים ויציאות שצוינו.
- מסמנים את התיבה TCP ומזינים את הערך
80עבור מספרי היציאות.
- Name (שם):
- לוחצים על יצירה.
gcloud
יוצרים את כלל חומת האש
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
יוצרים את הכלל
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
יוצרים את כלל
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 לבדיקות.
המסוף
יוצרים תבנית של הגדרות מכונה. נכנסים לדף Instance templates במסוף Google Cloud .
- לוחצים על Create instance template.
- בשדה Name (שם), מזינים
int-tcp-proxy-backend-template. - מוודאים שדיסק האתחול מוגדר לקובץ אימג' של Debian, כמו Debian GNU/Linux 12 (bookworm). בהוראות האלה נעשה שימוש בפקודות
שזמינות רק ב-Debian, כמו
apt-get. - לוחצים על אפשרויות מתקדמות.
- לוחצים על Networking ומגדירים את השדות הבאים:
- בשדה Network tags (תגי רשת), מזינים את הערכים
allow-ssh,allow-health-checkו-allow-proxy-only-subnet. - בקטע Network interfaces (ממשקי רשת), בוחרים באפשרויות הבאות:
- רשת:
lb-network - Subnet:
backend-subnet
- רשת:
- בשדה Network tags (תגי רשת), מזינים את הערכים
לוחצים על ניהול. מזינים את הסקריפט הבא בשדה סקריפט לטעינה בזמן ההפעלה.
#! /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
לוחצים על יצירה.
יוצרים קבוצה של מופעי מכונה מנוהלים. נכנסים לדף Instance groups במסוף Google Cloud .
- לוחצים על יצירת קבוצת מופעים.
- בוחרים באפשרות New managed instance group (stateless) (קבוצת מופעי מכונה מנוהלים חדשה (בלי שמירת מצב)). מידע נוסף מופיע במאמר קבוצות של מכונות וירטואליות בלי שמירת מצב או עם שמירת מצב.
- בשדה Name (שם), מזינים
mig-a. - בקטע מיקום, בוחרים באפשרות אזור יחיד.
- בשדה אזור, בוחרים באפשרות
REGION_A. - בשדה Zone, בוחרים באפשרות
ZONE_A1. - בקטע Instance template (תבנית של הגדרות מכונה), בוחרים באפשרות
int-tcp-proxy-backend-template. מציינים את מספר המופעים שרוצים ליצור בקבוצה.
בדוגמה הזו, מציינים את האפשרויות הבאות בקטע התאמה אוטומטית לעומס:
- בקטע מצב שינוי גודל אוטומטי, בוחרים באפשרות
Off:do not autoscale. - בשדה מספר מופעים מקסימלי, מזינים
2.
- בקטע מצב שינוי גודל אוטומטי, בוחרים באפשרות
בקטע מיפוי יציאות, לוחצים על הוספת יציאה.
- בשדה שם הניוד, מזינים
tcp80. - בשדה מספר היציאה, מזינים
80.
- בשדה שם הניוד, מזינים
לוחצים על יצירה.
חוזרים על שלב 2 כדי ליצור קבוצה שנייה של מופעי מכונה מנוהלים עם ההגדרות הבאות:
- Name (שם):
mig-c - אזור:
ZONE_A2משאירים את כל ההגדרות האחרות ללא שינוי.
- Name (שם):
gcloud
ההוראות ל-gcloud במדריך הזה מבוססות על ההנחה שאתם משתמשים ב-Cloud Shell או בסביבה אחרת שבה מותקן bash.
יוצרים תבנית של הגדרות מכונה עם שרת 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'יוצרים קבוצת מופעי מכונה מנוהלים באזור
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 .
יוצרים קבוצת מופעי מכונה מנוהלים באזור
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 .
הגדרת מאזן העומסים
המסוף
התחלת ההגדרה
נכנסים לדף Load balancing במסוף Google Cloud .
- לוחצים על Create load balancer (יצירת מאזן עומסים).
- בקטע Type of load balancer (סוג מאזן העומסים), בוחרים באפשרות Network Load Balancer (TCP/UDP/SSL) (מאזן עומסים ברשת (TCP/UDP/SSL)) ולוחצים על Next (הבא).
- בקטע Proxy or passthrough (פרוקסי או העברה), בוחרים באפשרות Proxy load balancer (מאזן עומסים של פרוקסי) ולוחצים על Next (הבא).
- בקטע Public facing or internal (פנימי או גלוי לכולם), בוחרים באפשרות Internal (פנימי) ולוחצים על Next (הבא).
- בקטע פריסה חוצה אזורים או פריסה באזור יחיד, בוחרים באפשרות הכי מתאים לעומסי עבודה אזוריים ולוחצים על הבא.
- לוחצים על Configure (הגדרה).
הגדרה בסיסית
- בשדה Name (שם), מזינים
my-int-tcp-lb. - בשדה אזור, בוחרים באפשרות
REGION_A. - בקטע רשת, בוחרים באפשרות
lb-network.
הזמנת רשת משנה לשרת proxy בלבד
כדי להזמין תת-רשת ל-Proxy בלבד:
- לוחצים על שמירת רשת משנה.
- בשדה Name (שם), מזינים
proxy-only-subnet. - בשדה IP address range (טווח כתובות IP), מזינים
10.129.0.0/23. - לוחצים על הוספה.
הגדרת הקצה העורפי
- לוחצים על Backend configuration.
- בשדה Backend type, בוחרים באפשרות Instance group.
- בשדה Protocol, בוחרים באפשרות TCP.
- בשדה Named port (יציאה עם שם), מזינים
tcp80. - ברשימה בדיקת תקינות, לוחצים על יצירת בדיקת תקינות ומזינים את הפרטים הבאים:
- Name (שם):
tcp-health-check - Protocol: TCP
- יציאה:
80
- Name (שם):
- לוחצים על יצירה.
- מגדירים את הקצה העורפי הראשון:
- בקטע New backend (עורף חדש), בוחרים בקבוצת מכונות
mig-a. - בשדה מספרי יציאות, מזינים
80. - משאירים את ערכי ברירת המחדל שנותרו ולוחצים על סיום.
- בקטע New backend (עורף חדש), בוחרים בקבוצת מכונות
- מגדירים את הקצה העורפי השני:
- לוחצים על הוספת קצה עורפי.
- בקטע New backend (עורף חדש), בוחרים בקבוצת מכונות
mig-c. - בשדה מספרי יציאות, מזינים
80. - משאירים את ערכי ברירת המחדל שנותרו ולוחצים על סיום.
- במסוף Google Cloud , מוודאים שיש סימן וי לצד Backend configuration. אם לא, צריך לוודא שהשלמתם את כל השלבים.
הגדרות הקצה הקדמי
- לוחצים על Frontend configuration.
- בשדה Name (שם), מזינים
int-tcp-forwarding-rule. - בשדה רשת משנה, בוחרים באפשרות backend-subnet.
- בשדה IP address, בוחרים את כתובת ה-IP ששמרתם קודם: LB_IP_ADDRESS
- בשדה מספר היציאה, מזינים
110. כלל ההעברה מעביר רק מנות עם יציאת יעד תואמת. - בדוגמה הזו, לא מפעילים את פרוטוקול ה-Proxy כי הוא לא פועל עם תוכנת Apache HTTP Server. מידע נוסף זמין במאמר בנושא פרוטוקול proxy.
- לוחצים על סיום.
- במסוף Google Cloud , מוודאים שיש סימן וי ליד Frontend configuration. אם לא, בודקים שוב שהשלמתם את כל השלבים הקודמים.
בדיקה וסיום
- לוחצים על Review and finalize.
- בודקים את הגדרות ההגדרה של מאזן העומסים.
- אופציונלי: לוחצים על Equivalent code (קוד מקביל) כדי לראות את בקשת API בארכיטקטורת REST שתשמש ליצירת מאזן העומסים.
- לוחצים על יצירה.
gcloud
יצירת בדיקת תקינות אזורית.
gcloud compute health-checks create tcp tcp-health-check \ --region=REGION_A \ --use-serving-port
יוצרים שירות לקצה העורפי.
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
מוסיפים קבוצות של מכונות וירטואליות לשירות הקצה העורפי.
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
יוצרים שרת 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.יוצרים את כלל ההעברה. בשדה
--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) באותו אזור שבו נמצא מאזן העומסים.
המסוף
נכנסים לדף VM instances במסוף Google Cloud .
לוחצים על Create instance.
מגדירים את Name לערך
client-vm.מגדירים את Zone לערך
ZONE_A1.לוחצים על אפשרויות מתקדמות.
לוחצים על Networking ומגדירים את השדות הבאים:
- בשדה Network tags (תגי רשת), מזינים
allow-ssh. - בקטע Network interfaces (ממשקי רשת), בוחרים באפשרויות הבאות:
- רשת:
lb-network - Subnet:
backend-subnet
- רשת:
- בשדה Network tags (תגי רשת), מזינים
לוחצים על יצירה.
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 של מאזן העומסים.
משתמשים ב-SSH כדי להתחבר למכונת הלקוח.
gcloud compute ssh client-vm \ --zone=ZONE_A1
מוודאים שמאזן העומסים מציג את שמות המארחים של הקצה העורפי כמצופה.
משתמשים בפקודה
compute addresses describeכדי לראות את כתובת ה-IP של מאזן העומסים:gcloud compute addresses describe int-tcp-ip-address \ --region=REGION_A
חשוב לשים לב לכתובת ה-IP.
שליחת תעבורה למאזן העומסים. מחליפים את IP_ADDRESS בכתובת ה-IP של מאזן העומסים.
curl IP_ADDRESS:110
אפשרויות הגדרה נוספות
בקטע הזה אנחנו מרחיבים את דוגמת ההגדרה ומציגים אפשרויות הגדרה חלופיות ונוספות. כל המשימות הן אופציונליות. אפשר לבצע אותן בכל סדר.
הפעלה של גישה גלובלית
אתם יכולים להפעיל גישה גלובלית למאזן העומסים כדי שיהיה נגיש ללקוחות בכל האזורים. שרתי הבק-אנד של מאזן העומסים לדוגמה עדיין צריכים להיות ממוקמים באזור אחד (REGION_A).
אי אפשר לשנות כלל העברה אזורי קיים כדי להפעיל גישה גלובלית. לשם כך, צריך ליצור כלל חדש להעברה. בנוסף, אחרי שיוצרים כלל העברה עם גישה גלובלית, אי אפשר לשנות אותו. כדי להשבית את הגישה הגלובלית, צריך ליצור כלל העברה אזורי חדש לגישה ולמחוק את כלל ההעברה הקודם לגישה גלובלית.
כדי להגדיר גישה גלובלית, מבצעים את שינויי ההגדרה הבאים.
המסוף
יוצרים כלל העברה חדש למאזן העומסים:
נכנסים לדף Load balancing במסוף Google Cloud .
בעמודה Name (שם), לוחצים על מאזן העומסים.
לוחצים על Frontend configuration.
לוחצים על Add frontend IP and port.
מזינים את השם ואת פרטי רשת המשנה של כלל ההעברה החדש.
בשדה רשת משנה, בוחרים באפשרות backend-subnet.
בשדה כתובת IP, אפשר לבחור את אותה כתובת IP כמו בכלל העברה קיים, לשמור כתובת IP חדשה או להשתמש בכתובת IP זמנית. אפשר לשתף את אותה כתובת IP בין כמה כללי העברה רק אם מגדירים את הדגל
--purposeשל כתובת ה-IP לערךSHARED_LOADBALANCER_VIPכשיוצרים את כתובת ה-IP.בשדה מספר היציאה, מזינים
110.בקטע גישה גלובלית, בוחרים באפשרות הפעלה.
לוחצים על סיום.
לוחצים על עדכון.
gcloud
יוצרים כלל העברה חדש למאזן העומסים עם הדגל
--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
אפשר להשתמש בפקודה
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מופיעה בפלט אחרי השם והאזור של כלל ההעברה.
יצירת מכונה וירטואלית של לקוח לבדיקת גישה גלובלית
המסוף
נכנסים לדף VM instances במסוף Google Cloud .
לוחצים על Create instance.
מגדירים את Name לערך
test-global-access-vm.מגדירים את Zone לערך
ZONE_B1.לוחצים על אפשרויות מתקדמות.
לוחצים על Networking ומגדירים את השדות הבאים:
- בשדה Network tags (תגי רשת), מזינים
allow-ssh. - בקטע Network interfaces (ממשקי רשת), בוחרים באפשרויות הבאות:
- רשת:
lb-network - Subnet:
test-global-access-subnet
- רשת:
- בשדה Network tags (תגי רשת), מזינים
לוחצים על יצירה.
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 של הלקוח ובדיקת הקישוריות
משתמשים ב-
sshכדי להתחבר למופע הלקוח:gcloud compute ssh test-global-access-vm \ --zone=ZONE_B1כדי לקבל את כתובת ה-IP של מאזן העומסים, משתמשים בפקודה
gcloud compute addresses describe:gcloud compute addresses describe int-tcp-ip-address \ --region=REGION_Aחשוב לשים לב לכתובת ה-IP.
שולחים תעבורה למאזן העומסים. מחליפים את 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. השתמש בשלבים אלה כדי ליצור קצה קדמי חדש עם ההגדרות הנדרשות:
המסוף
נכנסים לדף Load balancing במסוף Google Cloud .
- לוחצים על השם של מאזן העומסים שרוצים לערוך.
- לוחצים על Edit (עריכה) ליד מאזן העומסים.
- לוחצים על Frontend configuration.
- מוחקים את כתובת ה-IP והיציאה הישנות של חזית האתר.
- לוחצים על Add frontend IP and port.
- בשדה Name (שם), מזינים
int-tcp-forwarding-rule. - בשדה רשת משנה, בוחרים באפשרות backend-subnet.
- בשדה IP address, בוחרים את כתובת ה-IP ששמרתם קודם: LB_IP_ADDRESS
- בשדה מספר היציאה, מזינים
110. כלל ההעברה מעביר רק מנות עם יציאת יעד תואמת. - משנים את הערך של השדה Proxy protocol (פרוטוקול שרת Proxy) ל-On (מופעל).
- לוחצים על סיום.
- בשדה Name (שם), מזינים
- לוחצים על עדכון כדי לשמור את השינויים.
gcloud
בפקודה הבאה, עורכים את השדה
--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מוחקים את כלל ההעברה הקיים.
gcloud compute forwarding-rules delete int-tcp-forwarding-rule \ --region=REGIONיוצרים כלל העברה חדש ומשייכים אותו לשרת ה-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 של לקוח:
- נכנסים לדף Load balancing במסוף Google Cloud .
כניסה לדף איזון עומסים - לוחצים על Backends.
- לוחצים על internal-tcp-proxy-bs (שם שירות לקצה העורפי שיצרתם בדוגמה הזו) ואז על Edit (עריכה).
- בדף פרטי שירות לקצה העורפי, לוחצים על הגדרות מתקדמות.
- בקטע Session affinity, בוחרים באפשרות Client IP מהתפריט.
- לוחצים על עדכון.
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) זמין במאמרי עזרה בנושא הפעלת ניתוק חיבורים.
המאמרים הבאים
- המרת מאזן עומסי רשת לשרת proxy ל-IPv6
- סקירה כללית על מאזן עומסי רשת אזורי פנימי בשרת proxy
- שימוש במעקב
- ניקוי ההגדרות של מאזן העומסים