מאזן עומסי רשת אזורי חיצוני בשרת proxy הוא מאזן עומסים אזורי בשכבה 4 שמבוסס על proxy. הוא מאפשר להפעיל את תעבורת הנתונים של שירות TCP ולהרחיב אותה באזור יחיד מאחורי כתובת IP חיצונית אזורית. מאזני העומסים האלה מפזרים תעבורת TCP חיצונית מהאינטרנט לקצה העורפי באותו אזור.
לפני שמתחילים, מומלץ לקרוא את המאמר סקירה כללית על מאזן עומסי רשת חיצוני לשרת proxy.
במדריך הזה מוסבר איך להגדיר מאזן עומסי רשת אזורי חיצוני בשרת proxy עם בק-אנד של קבוצת מופעי מכונה מנוהלים (MIG). בדוגמה הזו, אתם מגדירים את הפריסה שמוצגת בתרשים הבא.
בדוגמה הזו, נשתמש במאזן העומסים כדי לחלק את תעבורת ה-TCP בין מכונות וירטואליות (VM) בעורף המערכת בשתי קבוצות של מופעי מכונה בניהול אזורי באזור א'. לצורך הדוגמה, השירות הוא קבוצה של שרתי Apache שהוגדרו להגיב ביציאה 110. הרבה דפדפנים לא מאפשרים שימוש ביציאה 110, ולכן בקטע הבדיקה נעשה שימוש ביציאה curl.
מאזן עומסי רשת אזורי חיצוני בשרת proxy הוא מאזן עומסים אזורי. כל הרכיבים של מאזן העומסים צריכים להיות באותו אזור שבו נמצא מאזן העומסים.
הרשאות
כדי לפעול לפי המדריך הזה, אתם צריכים להיות מסוגלים ליצור מופעים ולשנות רשת בפרויקט. צריכות להיות לכם הרשאות בעלים או עריכה בפרויקט, או תפקידי ה-IAM הבאים ב-Compute Engine.
| משימה | התפקיד הנדרש |
|---|---|
| יצירת רשתות, רשתות משנה ורכיבים של מאזן עומסים | אדמין ברשת Compute
(roles/compute.networkAdmin) |
| הוספה והסרה של כללים לחומת האש | אדמין לענייני אבטחה ב-Compute
(roles/compute.securityAdmin) |
| יצירת מופעים | אדמין מכונות של Compute
(roles/compute.instanceAdmin) |
מידע נוסף זמין במדריכים הבאים:
אופציונלי: שימוש בכתובות BYOIP
באמצעות העברת כתובות IP משלכם (BYOIP), אתם יכולים לייבא כתובות ציבוריות משלכם אלCloud de Confiance by S3NS כדי להשתמש בכתובות עם משאבי Cloud de Confiance . לדוגמה, אם מייבאים כתובות IPv4 משלכם, אפשר להקצות אחת מהן לכלל ההעברה כשמגדירים את מאזן העומסים. כשפועלים לפי ההוראות במאמר הזה כדי להגדיר את מאזן העומסים, צריך לציין את כתובת ה-IP של BYOIP ככתובת ה-IP.
מידע נוסף על השימוש ב-BYOIP זמין במאמר בנושא העברת כתובות IP משלכם.
הגדרת הרשת ורשתות המשנה
צריך רשת VPC עם שתי תת-רשתות, אחת לקצה העורפי של מאזן העומסים והשנייה לשרתי ה-proxy של מאזן העומסים. מאזן העומסים הזה הוא אזורי. התעבורה ברשת ה-VPC מנותבת למאזן העומסים אם המקור של התעבורה נמצא ברשת משנה באותו אזור כמו מאזן העומסים.
בדוגמה הזו נעשה שימוש ברשת ה-VPC, באזור ובתת-רשתות הבאים:
רשת: רשת VPC במצב מותאם אישית בשם
lb-networkתת-רשת לשרתי קצה עורפיים: תת-רשת בשם
backend-subnetבאזור א' שמשתמשת ב-10.1.2.0/24כטווח כתובות ה-IP הראשי שלהתת-רשת לשרתי proxy: תת-רשת בשם
proxy-only-subnetבאזור ב' שמשתמשת ב-10.129.0.0/23כטווח כתובות ה-IP הראשי שלה
יצירת הרשתות והתת-רשתות
המסוף
נכנסים לדף VPC networks במסוף Cloud de Confiance .
לוחצים על יצירת רשת VPC.
בשדה Name (שם), מזינים
lb-network.בקטע רשתות משנה, מגדירים את מצב יצירת רשתות משנה למותאם אישית.
יוצרים רשת משנה לשרתי הבק-אנד של מאזן העומסים. בקטע New subnet (רשת משנה חדשה), מזינים את הפרטים הבאים:
- Name (שם):
backend-subnet - אזור:
REGION_A - טווח כתובות IP:
10.1.2.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
יצירת תת-רשת לשרת proxy בלבד
רשת משנה רק לשרתי proxy מספקת קבוצה של כתובות IP ש-Google משתמשת בהן כדי להפעיל שרתי proxy של Envoy בשמכם. הפרוקסיים מסיימים חיבורים מהלקוח ויוצרים חיבורים חדשים לשרתי הקצה.
כל מאזני העומסים שמבוססים על Envoy באזור א' של רשת ה-VPC lb-network משתמשים ברשת המשנה הזו שמוגדרת ל-proxy בלבד.
המסוף
אם אתם משתמשים במסוף Cloud de Confiance , אתם יכולים לחכות וליצור את רשת המשנה של ה-proxy בלבד מאוחר יותר בדף איזון עומסים.
כדי ליצור עכשיו את רשת המשנה של ה-proxy בלבד, פועלים לפי השלבים הבאים:
נכנסים לדף VPC networks במסוף Cloud de Confiance .
לוחצים על השם של רשת ה-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 בלבד לשרתים העורפיים (backend).
בלי כללי חומת האש האלה, הכלל default deny ingress חוסם תנועה נכנסת למופעי ה-backend.
תגי היעד מגדירים את מופעי ה-Backend. בלי תגי היעד, כללי חומת האש חלים על כל מופעי ה-Backend ברשת ה-VPC. כשיוצרים את מכונות ה-VM של ה-Backend, חשוב לכלול את תגי היעד שצוינו, כמו שמוצג במאמר יצירת קבוצה של מופעים מנוהלים.
המסוף
נכנסים לדף Firewall policies במסוף Cloud de Confiance .
לוחצים על יצירת כלל לחומת האש כדי ליצור את הכלל שיאפשר חיבורי SSH נכנסים. ממלאים את השדות הבאים:
- Name (שם):
fw-allow-ssh - רשת:
lb-network - כיוון התנועה: כניסה
- פעולה במקרה של התאמה: אישור
- יעדים: תגי יעד שצוינו
- תגי טירגוט:
allow-ssh - מסנן מקור: טווחים של כתובות IPv4
- טווחי IPv4 של המקור:
0.0.0.0/0 - פרוטוקולים ויציאות:
- בוחרים באפשרות Specified protocols and ports (פרוטוקולים ויציאות ספציפיים).
- מסמנים את תיבת הסימון TCP ומזינים
22כמספר היציאה.
- Name (שם):
לוחצים על יצירה.
לוחצים שוב על יצירת כלל לחומת האש כדי ליצור את הכלל שיאפשר בדיקות תקינות שלCloud de Confiance :
- Name (שם):
fw-allow-health-check - רשת:
lb-network - כיוון התנועה: כניסה
- פעולה במקרה של התאמה: אישור
- יעדים: תגי יעד שצוינו
- תגי טירגוט:
allow-health-check - מסנן מקור: טווחים של כתובות IPv4
- טווחים של כתובות IPv4 של המקור:
177.222.80.0/23 פרוטוקולים ויציאות:
- בוחרים באפשרות Specified protocols and ports (פרוטוקולים ויציאות ספציפיים).
- מסמנים את תיבת הסימון TCP ומזינים
80כמספר היציאה.
מומלץ להגביל את הכלל הזה רק לפרוטוקולים ולפורטים שתואמים לאלה שמשמשים את בדיקת התקינות. אם משתמשים ב-
tcp:80לפרוטוקול וליציאה, Cloud de Confiance יכול להשתמש ב-HTTP ביציאה80כדי ליצור קשר עם המכונות הווירטואליות, אבל הוא לא יכול להשתמש ב-HTTPS ביציאה443כדי ליצור איתן קשר.
- Name (שם):
לוחצים על יצירה.
לוחצים על Create firewall rule (יצירת כלל חומת אש) בפעם השלישית כדי ליצור את הכלל שיאפשר לשרתי ה-Proxy של מאזן העומסים להתחבר לשרתי הקצה:
- Name (שם):
fw-allow-proxy-only-subnet - רשת:
lb-network - כיוון התנועה: כניסה
- פעולה במקרה של התאמה: אישור
- יעדים: תגי יעד שצוינו
- תגי טירגוט:
allow-proxy-only-subnet - מסנן מקור: טווחים של כתובות IPv4
- טווחי IPv4 של המקור:
10.129.0.0/23 - פרוטוקולים ויציאות:
- בוחרים באפשרות Specified protocols and ports (פרוטוקולים ויציאות ספציפיים).
- מסמנים את התיבה TCP ומזינים
80כמספר היציאה.
- 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 סטטית למאזן העומסים.
המסוף
נכנסים לדף Reserve a static address במסוף Cloud de Confiance .
בוחרים שם לכתובת החדשה.
בקטע Network Service Tier, בוחרים באפשרות Standard.
בשביל IP version, בוחרים IPv4. אין תמיכה בכתובות IPv6.
בקטע Type, בוחרים באפשרות Regional.
בשדה אזור, בוחרים באפשרות
REGION_A.משאירים את האפשרות מצורף אל במצב ללא. אחרי שיוצרים את מאזן העומסים, כתובת ה-IP הזו מצורפת לכלל ההעברה של מאזן העומסים.
לוחצים על שמירה כדי לשמור את כתובת ה-IP.
gcloud
כדי לשמור כתובת IP חיצונית סטטית, משתמשים בפקודה
gcloud compute addresses create:gcloud compute addresses create ADDRESS_NAME \ --region=REGION_A \ --network-tier=STANDARDמחליפים את
ADDRESS_NAMEבשם שרוצים לתת לכתובת הזו.כדי לראות את התוצאה, משתמשים בפקודה
gcloud compute addresses describe:gcloud compute addresses describe ADDRESS_NAME
יצירת קבוצות של מופעי מכונה מנוהלים
בקטע הזה מוסבר איך ליצור שני קצוות עורפיים של קבוצת מופעי מכונה מנוהלים (MIG) באזור א' עבור מאזן העומסים. קבוצת המכונות המנוהלת מספקת מכונות וירטואליות שמריצות את שרתי הקצה העורפי של Apache בדוגמה הזו. בדרך כלל לא משתמשים במאזן עומסי רשת אזורי חיצוני בשרת proxy לתעבורת HTTP, אבל תוכנת Apache נמצאת בשימוש נפוץ לבדיקות.
המסוף
יצירת תבנית של הגדרות מכונה
נכנסים לדף Instance templates במסוף Cloud de Confiance .
לוחצים על Create instance template.
בשדה Name (שם), מזינים
ext-reg-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_A.בשדה תבנית של הגדרות מכונה, בוחרים באפשרות
ext-reg-tcp-proxy-backend-template.מציינים את מספר המופעים שרוצים ליצור בקבוצה.
בדוגמה הזו, מציינים את האפשרויות הבאות עבור שינוי גודל אוטומטי:
- בקטע מצב שינוי גודל אוטומטי, בוחרים באפשרות
Off:do not autoscale. - בשדה מספר מופעים מקסימלי, מזינים
2.
- בקטע מצב שינוי גודל אוטומטי, בוחרים באפשרות
בקטע מיפוי יציאות, לוחצים על הוספת יציאה.
- בשדה שם הניוד, מזינים
tcp80. - בשדה מספר יציאה, מזינים
80.
- בשדה שם הניוד, מזינים
לוחצים על יצירה.
כדי ליצור קבוצה שנייה של מופעי מכונה מנוהלים, חוזרים על השלבים של יצירת קבוצת מופעי מכונה מנוהלים ומשתמשים בהגדרות הבאות:
- Name (שם):
mig-b - Zone (תחום):
ZONE_B
משאירים את כל שאר ההגדרות ללא שינוי.
- Name (שם):
gcloud
ההוראות ל-Google Cloud CLI במדריך הזה מבוססות על ההנחה שאתם משתמשים ב-Cloud Shell או בסביבה אחרת שבה מותקן bash.
כדי ליצור תבנית של הגדרות מכונה עם שרת HTTP, משתמשים בפקודה
gcloud compute instance-templates create:gcloud compute instance-templates create ext-reg-tcp-proxy-backend-template \ --region=REGION_A \ --network=lb-network \ --subnet=backend-subnet \ --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \ --image-family=debian-12 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'יוצרים קבוצת מופעי מכונה מנוהלים באזור
ZONE_A:gcloud compute instance-groups managed create mig-a \ --zone=ZONE_A \ --size=2 \ --template=ext-reg-tcp-proxy-backend-templateיוצרים קבוצת מופעי מכונה מנוהלים באזור
ZONE_B:gcloud compute instance-groups managed create mig-b \ --zone=ZONE_B \ --size=2 \ --template=ext-reg-tcp-proxy-backend-template
הגדרת מאזן העומסים
המסוף
התחלת ההגדרה
נכנסים לדף 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 (פנימי או גלוי לכולם), בוחרים באפשרות Public facing (external) (גלוי לכולם – חיצוני) ולוחצים על Next (הבא).
- אם בוחרים באפשרות פריסה גלובלית או פריסה באזור יחיד, בוחרים באפשרות הכי טוב לעומסי עבודה אזוריים ולוחצים על הבא.
- לוחצים על Configure (הגדרה).
הגדרה בסיסית
- בשדה Name (שם), מזינים
my-ext-tcp-lb. - בשדה אזור, בוחרים באפשרות
REGION_A. - בשדה רשת, בוחרים באפשרות
lb-network.
הזמנת רשת משנה לשרת proxy בלבד
- לוחצים על Reserve.
- בשדה שם מזינים
proxy-only-subnet. - בשדה טווח כתובות IP, מזינים
10.129.0.0/23. - לוחצים על הוספה.
הגדרת הקצוות העורפיים
- לוחצים על Backend configuration.
- ברשימה Backend type (סוג ה-Backend), בוחרים באפשרות Instance group (קבוצת מופעים).
- ברשימה Protocol בוחרים באפשרות TCP.
- בשדה Named port, מזינים
tcp80. - מגדירים את בדיקת התקינות:
- ברשימה Health check, בוחרים באפשרות Create a health check.
- בשדה שם מזינים
tcp-health-check. - ברשימה Protocol בוחרים באפשרות TCP.
- בשדה יציאה מזינים
80. - לוחצים על יצירה.
- מגדירים את הקצה העורפי הראשון:
- בקטע New backend (קצה עורפי חדש), בוחרים באפשרות instance group (קבוצת מכונות)
mig-a. - בשדה מספרי יציאה, מזינים
80. - משאירים את ערכי ברירת המחדל בשאר השדות ולוחצים על סיום.
- בקטע New backend (קצה עורפי חדש), בוחרים באפשרות instance group (קבוצת מכונות)
- מגדירים את הקצה העורפי השני:
- לוחצים על הוספת קצה עורפי.
- בקטע New backend (קצה עורפי חדש), בוחרים באפשרות instance group (קבוצת מכונות)
mig-b. - בשדה מספרי יציאה, מזינים
80. - משאירים את ערכי ברירת המחדל בשאר השדות ולוחצים על סיום.
- משאירים את ערכי ברירת המחדל הנותרים ולוחצים על שמירה.
- במסוף Cloud de Confiance , מוודאים שמופיע סימן וי ליד Backend configuration. אם לא, צריך לוודא שהשלמתם את כל השלבים.
הגדרת הקצה הקדמי
- לוחצים על Frontend configuration.
- בשדה Name (שם), מזינים
ext-reg-tcp-forwarding-rule. - בקטע Network Service Tier, בוחרים באפשרות Standard.
- בשביל IP address, בוחרים את כתובת ה-IP ששמרתם קודם: LB_IP_ADDRESS
- בשדה מספר יציאה, מזינים
110. כלל ההעברה מעביר רק מנות עם יציאת יעד תואמת. - בשדה Proxy protocol, בוחרים באפשרות Off כי פרוטוקול ה-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 ext-reg-tcp-proxy-bs \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=TCP \ --port-name=tcp80 \ --region=REGION_A \ --health-checks=tcp-health-check \ --health-checks-region=REGION_Aהוספת קבוצות של מכונות וירטואליות לשירות הקצה העורפי:
gcloud compute backend-services add-backend ext-reg-tcp-proxy-bs \ --region=REGION_A \ --instance-group=mig-a \ --instance-group-zone=ZONE_A \ --balancing-mode=UTILIZATION \ --max-utilization=0.8gcloud compute backend-services add-backend ext-reg-tcp-proxy-bs \ --region=REGION_A \ --instance-group=mig-b \ --instance-group-zone=ZONE_B \ --balancing-mode=UTILIZATION \ --max-utilization=0.8יוצרים שרת proxy של TCP ביעד:
gcloud compute target-tcp-proxies create ext-reg-tcp-target-proxy \ --backend-service=ext-reg-tcp-proxy-bs \ --proxy-header=NONE \ --region=REGION_Aאם רוצים להפעיל את כותרת ה-proxy, צריך להגדיר אותה ל-
PROXY_V1במקום ל-NONE. בדוגמה הזו, לא מפעילים את פרוטוקול ה-PROXY כי הוא לא פועל עם תוכנת Apache HTTP Server. מידע נוסף מופיע במאמר בנושא פרוטוקול PROXY.יוצרים את כלל ההעברה. בשדה
--ports, מציינים מספר יציאה יחיד בין 1 ל-65535. בדוגמה הזו נעשה שימוש ביציאה110. כלל ההעברה מעביר רק מנות עם יציאת יעד תואמת.gcloud compute forwarding-rules create ext-reg-tcp-forwarding-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=STANDARD \ --network=lb-network \ --region=REGION_A \ --target-tcp-proxy=ext-reg-tcp-target-proxy \ --target-tcp-proxy-region=REGION_A \ --address=LB_IP_ADDRESS \ --ports=110
בדיקת מאזן העומסים
אחרי שהגדרתם את מאזן העומסים, אתם יכולים לבדוק את שליחת התנועה לכתובת ה-IP של מאזן העומסים.
מוצאים את כתובת ה-IP של מאזן העומסים.
כדי לקבל את כתובת ה-IPv4, מריצים את הפקודה הבאה:
gcloud compute addresses describe ADDRESS_NAME
כדי לשלוח תנועה למאזן העומסים, מריצים את הפקודה הבאה. מחליפים את
LB_IP_ADDRESSבכתובת ה-IPv4 של איזון העומסים.curl -m1 LB_IP_ADDRESS:9090
אפשרויות הגדרה נוספות
בקטע הזה אנחנו מרחיבים את דוגמת ההגדרה ומציגים אפשרויות הגדרה חלופיות ונוספות. כל המשימות הן אופציונליות. אפשר לבצע אותן בכל סדר.
יצירת מאזן עומסים עם נתיבי 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=EXTERNAL_MANAGED \ --protocol=TCP \ --port-name=PORT_NAME \ --health-checks=HTTPS_HEALTH_CHECK_NAME \ --health-checks-region=REGION_A \ --region=REGION_Aמחליפים את מה שכתוב בשדות הבאים:
-
BACKEND_SERVICE_NAME: שם לשירות העורפי. -
PORT_NAME: שם היציאה של שירות ה-Backend. משתמשים באותו פורט עם שם שהוגדר בקבוצת המכונות – לדוגמה,tcp443. -
HTTPS_HEALTH_CHECK_NAME: השם של בדיקת תקינות HTTPS.
-
מוסיפים את קבוצת המכונות לקצה העורפי לשירות הקצה העורפי:
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=EXTERNAL_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=EXTERNAL_MANAGED \ --network-tier=STANDARD \ --network=NETWORK \ --region=REGION_A \ --target-tcp-proxy=TARGET_TCP_PROXY_NAME \ --target-tcp-proxy-region=REGION_A \ --address=IP_ADDRESS \ --ports=PORT_NUMBER
מחליפים את מה שכתוב בשדות הבאים:
-
FORWARDING_RULE_NAME: שם לכלל ההעברה. -
NETWORK: שם הרשת. -
SUBNET_A: השם של רשת המשנה באותו אזור כמו מאזן העומסים. -
IP_ADDRESS: כתובת ה-IP של מאזן העומסים. -
PORT_NUMBER: היציאה שמשמשת את כלל ההעברה, לדוגמה443.
-
בדיקת מאזן העומסים
אחרי שהגדרתם את מאזן העומסים, אתם יכולים לבדוק את שליחת התנועה לכתובת ה-IP של מאזן העומסים.
מוודאים שיש לכם גישה לשירות ה-HTTPS דרך מאזן העומסים.
curl https://example.com --resolve example.com:443:IP_ADDRESS -k
הפקודה תחזיר תגובה מאחת המכונות הווירטואליות בקבוצת המופעים המנוהלת, והתגובה הבאה תודפס במסוף.
"path": "/", "headers": { "host": "example.com", "user-agent": "curl/7.81.0", "accept": "*/*" }, "method": "GET", "body": "", "fresh": false, "hostname": "example.com", "ip": "::ffff:10.142.0.2", "ips": [], "protocol": "https", "query": {}, "subdomains": [], "xhr": false, "os": { "hostname": "0cd3aec9b351" }, "connection": { "servername": "example.com" }כדי לוודא זאת, אפשר לספק שם מארח שונה של SNI שלא תואם לנתיב TLS, או לא לספק שם מארח של SNI בכלל. במקרה כזה, הבקשה תידחה.
- מריצים בדיקה עם שם מארח של SNI שלא תואם ל-example.com, כדי לוודא שהחיבור נדחה.
curl https://unknown.com --resolve unknown.com:443:IP_ADDRESS -k
- מריצים בדיקה עם חיבור טקסט פשוט ללא TLS, כדי לוודא שהחיבור נדחה.
curl example.com:443 --resolve example.com:443:IP_ADDRESS -k
הפקודות האלה מחזירות את השגיאה הבאה.
curl: (35) OpenSSL SSL_connect: Connection reset by peer in connection
קוד השגיאה
connection_refusedיופיע ביומניproxyStatusכשמאזן העומסים ידחה חיבורים לא תקינים כאלה.
הפעלת זיקה לסשן
ההגדרה לדוגמה יוצרת שירות לקצה העורפי ללא זיקה לסשן (session affinity).
בפרוצדורות האלה מוסבר איך לעדכן שירות לקצה העורפי עבור מאזן העומסים לדוגמה שנוצר קודם, כך שהשירות לקצה העורפי ישתמש בזיקה לכתובת IP של לקוח או בזיקה לקובץ Cookie שנוצר.
כשזיקה לכתובת IP של לקוח מופעלת, מאזן העומסים (LB) מפנה בקשות של לקוח מסוים לאותה מכונה וירטואלית (VM) בעורף, על סמך גיבוב שנוצר מכתובת ה-IP של הלקוח וכתובת ה-IP של מאזן העומסים (כתובת ה-IP הפנימית של כלל העברה פנימי).
כדי להפעיל זיקה לסשן (session affinity) לפי כתובת IP של לקוח, מבצעים את השלבים הבאים.
המסוף
נכנסים לדף Load balancing במסוף Cloud de Confiance .
לוחצים על Backends.
לוחצים על
ext-reg-tcp-proxy-bs(השם של שירות לקצה העורפי שיצרתם בדוגמה הזו) ואז על עריכה.בדף Backend service details (פרטי שירות לקצה העורפי), לוחצים על Advanced configuration (הגדרה מתקדמת).
בקטע Session affinity (זיקה לסשן), בוחרים באפשרות Client IP (כתובת IP של לקוח).
לוחצים על עדכון.
gcloud
כדי לעדכן את שירות לקצה העורפי ext-reg-tcp-proxy-bs ולציין את זיקה לסשן (session affinity) לכתובת IP של לקוח, משתמשים בפקודה gcloud compute backend-services update ext-reg-tcp-proxy-bs:
gcloud compute backend-services update ext-reg-tcp-proxy-bs \
--region=REGION_A \
--session-affinity=CLIENT_IP