מאזן עומסי רשת פנימי אזורי מבוסס-פרוקסי הוא מאזן עומסים אזורי בשכבה 4, שמאפשר להפעיל את תעבורת שירותי ה-TCP ולהרחיב אותה מאחורי כתובת IP פנימית שנגישה רק ללקוחות באותה רשת VPC או ללקוחות שמחוברים לרשת ה-VPC.
לפני שמתחילים, כדאי לקרוא את סקירת מאזן עומסי רשת אזורי פנימי לשרת proxy.
המדריך הזה כולל הוראות להגדרת מאזן עומסי רשת אזורי פנימי בשרת proxy עם קצה עורפי של קבוצת מופעי מכונה מנוהלים (MIG). בדוגמה הזו, מגדירים את הפריסה הבאה:
בדוגמה הזו, נשתמש במאזן העומסים כדי לחלק את תעבורת ה-TCP בין מכונות וירטואליות בעורף המערכת בשתי קבוצות של מכונות מנוהלות אזוריות באזור REGION_A. לצורך הדוגמה, השירות הוא קבוצה של שרתי Apache שהוגדרו להגיב ביציאה 110. דפדפנים רבים לא מאפשרים שימוש ביציאה 110, ולכן בקטע הבדיקה נעשה שימוש ביציאה curl.
מאזן עומסי רשת אזורי פנימי בשרת proxy הוא מאזן עומסים אזורי. כל הרכיבים של מאזן העומסים צריכים להיות באותו אזור שבו נמצא מאזן העומסים.
הרשאות
כדי לפעול לפי המדריך הזה, אתם צריכים להיות מסוגלים ליצור מופעים ולשנות רשת בפרויקט. כדי לבצע את הפעולה הזו, אתם צריכים להיות בעלים או בעלי הרשאת עריכה בפרויקט, או שיהיו לכם את כל תפקידי ה-IAM הבאים ב-Compute Engine:
| משימה | התפקיד הנדרש |
|---|---|
| יצירת רשתות, רשתות משנה ורכיבים של מאזן עומסים | אדמין רשתות |
| הוספה והסרה של כללים לחומת האש | Security Admin |
| יצירת מופעים | Compute Instance Admin |
מידע נוסף זמין במדריכים הבאים:
הגדרת הרשת ורשתות המשנה
צריך רשת 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 במסוף Cloud de Confiance .
לוחצים על יצירת רשת 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 בשם של אזור היעד Cloud de Confiance .
יוצרים תת-רשת ברשת
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 בשם של Cloud de Confiance האזור שבו רוצים ליצור את רשת המשנה השנייה כדי לבדוק גישה גלובלית.
יצירת תת-רשת לשרת proxy בלבד
תת-רשת של proxy בלבד מספקת קבוצה של כתובות IP ש-Google משתמשת בהן כדי להפעיל שרתי proxy של Envoy בשמכם. הפרוקסיים מסיימים חיבורים מהלקוח ויוצרים חיבורים חדשים לשרתי הקצה.
כל מאזני העומסים שמבוססים על Envoy באזור REGION_A של רשת ה-VPC lb-network משתמשים ברשת המשנה הזו שמוגדרת לשרת proxy בלבד.
המסוף
אם אתם משתמשים במסוף Cloud de Confiance , אתם יכולים לחכות וליצור את רשת המשנה של ה-proxy בלבד מאוחר יותר בדף Load balancing.
כדי ליצור עכשיו את רשת המשנה של ה-proxy בלבד, פועלים לפי השלבים הבאים:
- נכנסים לדף VPC networks במסוף Cloud de Confiance .
מעבר לרשתות VPC - לוחצים על השם של רשת ה-VPC המשותפת:
lb-network. - לוחצים על הוספת רשת משנה.
- בשדה Name (שם), מזינים
proxy-only-subnet. - בשדה אזור, בוחרים באפשרות
REGION_A. - מגדירים את Purpose (מטרה) לערך Regional Managed Proxy (שרת proxy מנוהל אזורי).
- בשדה טווח כתובות 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. כלל תעבורה נכנסת (ingress) שחל על המופעים שמתבצע איזון העומסים שלהם, ומאפשר את כל תעבורת ה-TCP מCloud de Confiance טווחים של בדיקות תקינות. בדוגמה הזו נשתמש בתג היעדallow-health-check.fw-allow-proxy-only-subnet. כלל תעבורת נתונים נכנסת (ingress) שמאפשר לחיבורים מתת-הרשת של ה-proxy להגיע לשרתי הקצה העורפיים.
בלי כללי חומת האש האלה, הכלל default deny ingress חוסם תנועה נכנסת למופעי ה-Backend.
תגי היעד מגדירים את מופעי ה-Backend. בלי תגי היעד, כללי חומת האש חלים על כל מופעי ה-Backend ברשת ה-VPC. כשיוצרים את מכונות ה-VM של ה-Backend, חשוב לכלול את תגי היעד שצוינו, כמו שמוסבר במאמר יצירת קבוצת מופעים מנוהלת.
המסוף
- נכנסים לדף Firewall policies במסוף Cloud de Confiance .
מעבר אל Firewall policies - לוחצים על יצירת כלל חומת אש כדי ליצור את הכלל שיאפשר חיבורי SSH נכנסים:
- Name (שם):
fw-allow-ssh - רשת:
lb-network - כיוון התנועה: כניסה
- פעולה במקרה של התאמה: אישור
- יעדים: תגי יעד שצוינו
- תגי טירגוט:
allow-ssh - מסנן מקור: טווחים של כתובות IPv4
- טווחי IPv4 של המקור:
0.0.0.0/0 - פרוטוקולים ויציאות:
- בוחרים באפשרות פרוטוקולים ויציאות שצוינו.
- מסמנים את תיבת הסימון TCP ומזינים
22כמספר היציאה.
- Name (שם):
- לוחצים על יצירה.
- לוחצים שוב על יצירת כלל לחומת האש כדי ליצור את הכלל שיאפשר בדיקות תקינות שלCloud de Confiance :
- Name (שם):
fw-allow-health-check - רשת:
lb-network - כיוון התנועה: כניסה
- פעולה במקרה של התאמה: אישור
- יעדים: תגי יעד שצוינו
- תגי טירגוט:
allow-health-check - מסנן מקור: טווחים של כתובות IPv4
- טווחים של כתובות IPv4 של המקור:
177.222.80.0/23 - פרוטוקולים ויציאות:
- בוחרים באפשרות פרוטוקולים ויציאות שצוינו.
- מסמנים את תיבת הסימון TCP ומזינים
80כמספר היציאה.
מומלץ להגביל את הכלל הזה רק לפרוטוקולים ולפורטים שתואמים לאלה שמשמשים בבדיקת תקינות. אם משתמשים ב-tcp:80לפרוטוקול וליציאה, Cloud de Confiance יכול להשתמש ב-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, 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
יוצרים את הכלל
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יוצרים את כלל
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 לתעבורת HTTP, אבל נהוג להשתמש בתוכנת Apache לבדיקות.
המסוף
יוצרים תבנית של הגדרות מכונה. נכנסים לדף Instance templates במסוף Cloud de Confiance .
- לוחצים על 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 במסוף Cloud de Confiance .
- לוחצים על יצירת קבוצת מופעים.
- בוחרים באפשרות 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
ההוראות במדריך הזה מבוססות על ההנחה שאתם משתמשים ב-Cloud Shell או בסביבה אחרת שבה מותקן bash.gcloud
יוצרים תבנית של הגדרות מכונה עם שרת 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 בשם האזור באזור היעד Cloud de Confiance .
יוצרים קבוצת מופעי מכונה מנוהלים באזור
ZONE_A2.gcloud compute instance-groups managed create mig-c \ --zone=ZONE_A2 \ --size=2 \ --template=int-tcp-proxy-backend-template
מחליפים את ZONE_A2 בשם של אזור אחר באזור היעד Cloud de Confiance .
הגדרת מאזן העומסים
המסוף
התחלת ההגדרה
נכנסים לדף Load balancing במסוף Cloud de Confiance .
- לוחצים על 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, מזינים
10.129.0.0/23. - לוחצים על הוספה.
הגדרת הקצה העורפי
- לוחצים על Backend configuration.
- בקטע Backend type, בוחרים באפשרות Instance group.
- בשדה Protocol, בוחרים באפשרות TCP.
- בשדה Named port (יציאה עם שם), מזינים
tcp80. - ברשימה Health check, לוחצים על Create a health check ומזינים את הפרטים הבאים:
- Name (שם):
tcp-health-check - Protocol: TCP
- יציאה:
80
- Name (שם):
- לוחצים על יצירה.
- מגדירים את הקצה העורפי הראשון:
- בקטע New backend (שרת קצה עורפי חדש), בוחרים קבוצת מכונות
mig-a. - בשדה מספרי יציאה, מזינים
80. - משאירים את ערכי ברירת המחדל בשאר ההגדרות ולוחצים על סיום.
- בקטע New backend (שרת קצה עורפי חדש), בוחרים קבוצת מכונות
- מגדירים את הקצה העורפי השני:
- לוחצים על הוספת קצה עורפי.
- בקטע New backend (שרת קצה עורפי חדש), בוחרים קבוצת מכונות
mig-c. - בשדה מספרי יציאה, מזינים
80. - משאירים את ערכי ברירת המחדל בשאר ההגדרות ולוחצים על סיום.
- במסוף Cloud de Confiance , מוודאים שמופיע סימן וי ליד Backend configuration. אם לא, צריך לוודא שהשלמתם את כל השלבים.
הגדרות הקצה הקדמי
- לוחצים על Frontend configuration.
- בשדה Name (שם), מזינים
int-tcp-forwarding-rule. - בשדה רשת משנה, בוחרים באפשרות backend-subnet.
- בשביל IP address, בוחרים את כתובת ה-IP ששמרתם קודם: LB_IP_ADDRESS
- בשדה מספר יציאה, מזינים
110. כלל ההעברה מעביר רק מנות עם יציאת יעד תואמת. - בדוגמה הזו, לא מפעילים את פרוטוקול ה-Proxy כי הוא לא פועל עם תוכנת Apache HTTP Server. מידע נוסף זמין במאמר בנושא פרוטוקול proxy.
- לוחצים על סיום.
- במסוף Cloud de Confiance , מוודאים שיש סימן וי ליד 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
בדיקת מאזן העומסים
כדי לבדוק את מאזן העומסים, יוצרים מכונה וירטואלית של לקוח באותו אזור שבו נמצא מאזן העומסים. לאחר מכן שולחים תנועה מהלקוח למאזן העומסים.
יצירת מכונה וירטואלית של לקוח
יוצרים מכונה וירטואלית של לקוח (client-vm) באותו אזור שבו נמצא מאזן העומסים.
המסוף
נכנסים לדף VM instances במסוף Cloud de Confiance .
לוחצים על 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
אפשרויות הגדרה נוספות
בקטע הזה אנחנו מרחיבים את דוגמת ההגדרה ומציגים אפשרויות הגדרה חלופיות ונוספות. כל המשימות הן אופציונליות. אפשר לבצע אותן בכל סדר.
יצירת מאזן עומסים עם נתיבי TLS
בקטע הזה מוסבר איך ליצור מאזן עומסים שיכול להשתמש בניתוב מבוסס SNI. ניתוב מבוסס-SNI מאפשר למאזני עומסים מסוג proxy לנתב תנועה לשירותי קצה עורפיים ספציפיים על סמך שם המארח של Server Name Indication (SNI) שסופק במהלך לחיצת היד של TLS.
כדי ליצור את מאזן העומסים הזה, אנחנו משתמשים באותן רשתות, רשתות משנה וכללי חומת אש שנוצרו קודם בדף הזה. ההגדרה של הפריסה מוצגת בתרשים הבא:
יצירת קצה עורפי של קבוצת מופעי מכונה מנוהלים
בקטע הזה מוסבר איך ליצור קצה עורפי של קבוצת מופעי מכונה מנוהלים (MIG) עבור מאזן העומסים. ה-MIG מספק מכונות וירטואליות שמריצות את שרתי ה-backend בדוגמה הזו.
ההוראות ל-Google Cloud CLI במדריך הזה מבוססות על ההנחה שאתם משתמשים ב-Cloud Shell או בסביבה אחרת שבה מותקן bash.
יוצרים תבנית של הגדרות מכונה עם שירות 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: השם של רשת המשנה.
-
יוצרים קבוצה של מופעי מכונה מנוהלים על סמך תבנית המכונה:
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \ --zone=ZONE_A \ --size=2 \ --template=INSTANCE_TEMPLATE_NAME
מחליפים את
ZONE_Aבאזור של קבוצת המופעים.מגדירים את שם יציאת ההגשה לקבוצה של מופעי מכונה מנוהלים:
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 בשם של כלל חומת האש.
הגדרת מאזן העומסים
יוצרים בדיקת תקינות ב-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: האזור של בדיקת תקינות.
-
יוצרים שירות לקצה העורפי:
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=TCP \ --port-name=PORT_NAME \ --region=REGION_A \ --health-checks=tcp-health-check \ --health-checks-region=REGION_Aמחליפים את מה שכתוב בשדות הבאים:
-
BACKEND_SERVICE_NAME: שם לשירות העורפי. -
PORT_NAME: שם היציאה של שירות ה-Backend. משתמשים באותו פורט עם שם שהוגדר בקבוצת המכונות – לדוגמה,tcp443. -
HTTPS_HEALTH_CHECK_NAME: השם של בדיקת תקינות HTTPS.
-
מוסיפים את קבוצת המכונות לקצה העורפי לשירות הקצה העורפי:
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: האזור של קבוצת המכונות.
-
יוצרים שרת proxy של TCP ביעד.
gcloud beta compute target-tcp-proxies create TARGET_TCP_PROXY_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --proxy-header=NONE \ --region=REGION_Aמחליפים את
TARGET_TCP_PROXY_NAMEבשם של פרוקסי TCP היעד.יוצרים מפרט של נתיב 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: מספר הפרויקט.
-
משתמשים בקובץ המפרט של YAML כדי ליצור את משאב נתיב ה-TLS.
gcloud network-services tls-routes import TLS_ROUTE_NAME \ --source=YAML_FILE_NAME \ --location=REGION_A
יוצרים את כלל ההעברה.
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK \ --subnet=SUBNET_A \ --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 של מאזן העומסים.
מוודאים שיש לכם גישה לשירות ה-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כשמאזן העומסים ידחה חיבורים לא תקינים כאלה.
הפעלת גישה גלובלית
אתם יכולים להפעיל גישה גלובלית למאזן העומסים כדי שיהיה נגיש ללקוחות בכל האזורים. שרתי הבק-אנד של מאזן העומסים לדוגמה עדיין צריכים להיות ממוקמים באזור אחד (REGION_A).
אי אפשר לשנות כלל העברה אזורי קיים כדי להפעיל גישה גלובלית. לשם כך, צריך ליצור כלל חדש להעברה. בנוסף, אחרי שיוצרים כלל העברה עם גישה גלובלית, אי אפשר לשנות אותו. כדי להשבית גישה גלובלית, צריך ליצור כלל העברה אזורי חדש לגישה ולמחוק את כלל ההעברה הקודם לגישה גלובלית.
כדי להגדיר גישה גלובלית, מבצעים את שינויי ההגדרה הבאים.
המסוף
יוצרים כלל העברה חדש למאזן העומסים:
נכנסים לדף Load balancing במסוף Cloud de Confiance .
בעמודה 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 במסוף Cloud de Confiance .
לוחצים על 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
יוצרים מכונה וירטואלית (VM) של לקוח באזור 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 במסוף Cloud de Confiance .
- לוחצים על השם של מאזן העומסים שרוצים לערוך.
- לוחצים על 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).
בקטעים הבאים מוסבר איך לעדכן שירות לקצה העורפי במאזן עומסי רשת פנימי אזורי לדוגמה, כך ששירות לקצה העורפי ישתמש בזיקה לכתובת IP של לקוח או בזיקה לקובץ Cookie שנוצר.
כשזיקה לכתובת IP של לקוח מופעלת, מאזן העומסים (LB) מפנה בקשות של לקוח מסוים לאותה מכונה וירטואלית (VM) בעורף, על סמך hash שנוצר מכתובת ה-IP של הלקוח וכתובת ה-IP של מאזן העומסים (כתובת ה-IP הפנימית של כלל העברה פנימי).
המסוף
כדי להפעיל זיקה לסשן לפי כתובת IP של לקוח:
- נכנסים לדף Load balancing במסוף Cloud de Confiance .
כניסה לדף Load balancing - לוחצים על Backends.
- לוחצים על internal-tcp-proxy-bs (השם של שירות לקצה העורפי שיצרתם בדוגמה הזו) ואז על עריכה.
- בדף Backend service details (פרטי שירות לקצה העורפי), לוחצים על Advanced configuration (הגדרה מתקדמת).
- בקטע 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
הפעלת ניתוק הדרגתי של חיבורים
אתם יכולים להפעיל ניתוק הדרגתי של חיבורים בשירותי קצה עורפי כדי להבטיח הפרעה מינימלית למשתמשים כשמופסקת פעולה של מופע שמשרת תעבורה, כשמסירים אותו באופן ידני או כשמסירים אותו באמצעות קנה מידה אוטומטי. מידע נוסף על ניתוק חיבורים זמין במאמר בנושא הפעלת ניתוק חיבורים.