בדף הזה מוסבר איך לפרוס מאזן עומסי רשת פנימי חוצה-אזורים כדי לאזן את העומס של התנועה לנקודות קצה ברשת שנמצאות בפריסה מקומית או בעננים ציבוריים אחרים, ושאפשר להגיע אליהן באמצעות קישוריות היברידית.
אם עדיין לא עשיתם זאת, כדאי לעיין בסקירה הכללית של קבוצות NEGs עם קישוריות היברידית כדי להבין את דרישות הרשת להגדרת איזון עומסים היברידי.
סקירה כללית של ההגדרה
בדוגמה מוגדר מאזן עומסי רשת פנימי לשרת proxy בין אזורים, עבור קצה עורפי של NEG עם קישוריות היברידית וקישוריות לאזורים שונים, כמו שמוצג באיור הבא:
צריך להגדיר קישוריות היברידית לפני שמגדירים פריסה של איזון עומסים היברידי. בהתאם למוצר הקישוריות ההיברידית שבחרתם, משתמשים ב-Cloud VPN או ב-Cloud Interconnect (מוקדש או שותף).
הרשאות
כדי להגדיר איזון עומסים היברידי, צריכות להיות לכם ההרשאות הבאות:
מופעל Google Cloud
- הרשאות ליצירת קישוריות היברידית בין Google Cloud לבין הסביבה המקומית או סביבות ענן אחרות. רשימת ההרשאות הנדרשות מופיעה במסמכי המוצר הרלוונטי של Network Connectivity.
- הרשאות ליצירת NEG לקישוריות היברידית ומאזן עומסים.
התפקיד 'אדמין של מאזן עומסים של Compute' (
roles/compute.loadBalancerAdmin) כולל את ההרשאות שנדרשות לביצוע המשימות שמתוארות במדריך הזה.
בסביבה המקומית או בסביבה אחרת שאינה בענן שלGoogle Cloud
- הרשאות להגדרת נקודות קצה ברשת שמאפשרות לשירותים בסביבה המקומית או בסביבות ענן אחרות להיות נגישים מ-Google Cloud באמצעות שילוב של
IP:Port. למידע נוסף, אפשר לפנות לאדמין של הרשת בסביבה שלכם. - הרשאות ליצור כללי חומת אש בסביבה המקומית או בסביבות ענן אחרות כדי לאפשר לניסויי בדיקת תקינות של Google להגיע לנקודות הקצה.
- הרשאות להגדרת נקודות קצה ברשת שמאפשרות לשירותים בסביבה המקומית או בסביבות ענן אחרות להיות נגישים מ-Google Cloud באמצעות שילוב של
בנוסף, כדי לבצע את ההוראות בדף הזה, צריך ליצור NEG עם קישוריות היברידית, מאזן עומסים (LB) ו-NEGs אזוריים (ונקודות הקצה שלהם) שישמשו כבק-אנדים מבוססי Google Cloudלמאזן העומסים.
צריך להיות לכם תפקיד בעלים או עורך בפרויקט, או תפקידי IAM של Compute Engine הבאים.
| משימה | התפקיד הנדרש |
|---|---|
| יצירת רשתות, רשתות משנה ורכיבים של מאזן עומסים | אדמין ברשת Compute
(roles/compute.networkAdmin) |
| הוספה והסרה של כללים לחומת האש | אדמין לענייני אבטחה ב-Compute
(roles/compute.securityAdmin) |
| יצירת מופעים | אדמין מכונות של Compute
(roles/compute.instanceAdmin) |
אופציונלי: שימוש בכתובות BYOIP
באמצעות העברת כתובות IP משלכם (BYOIP), אתם יכולים לייבא כתובות ציבוריות משלכם אלGoogle Cloud כדי להשתמש בכתובות עם משאבי Google Cloud . לדוגמה, אם מייבאים כתובות IPv4 משלכם, אפשר להקצות אחת מהן לכלל ההעברה כשמגדירים את מאזן העומסים. כשפועלים לפי ההוראות במסמך הזה כדי , צריך לספק את כתובת ה-BYOIP ככתובת ה-IP.
מידע נוסף על השימוש ב-BYOIP זמין במאמר בנושא העברת כתובות IP משלכם.
הגדרת קישוריות היברידית
הסביבה שלכם Google Cloud והסביבה המקומית או סביבות ענן אחרות צריכות להיות מחוברות באמצעות קישוריות היברידית, על ידי שימוש בצירופים ל-VLAN של Cloud Interconnect או במנהרות Cloud VPN עם Cloud Router או נתבים וירטואליים. מומלץ להשתמש בחיבור עם זמינות גבוהה.
Cloud Router שמופעל בו ניתוב דינמי גלובלי לומד על נקודת הקצה הספציפית באמצעות פרוטוקול Border Gateway Protocol (BGP) ומתכנת אותה ברשת ה-VPC שלכם Google Cloud . אין תמיכה בניתוב דינמי אזורי. אין תמיכה גם בנתיבים סטטיים.
אתם יכולים להשתמש באותה רשת או ברשת VPC אחרת באותו פרויקט כדי להגדיר גם רשת היברידית (Cloud Interconnect או Cloud VPN או מכונה וירטואלית של נתב) וגם מאזן עומסים. חשוב לזכור:
אם משתמשים ברשתות VPC שונות, צריך לקשר בין שתי הרשתות באמצעות VPC Network Peering או להגדיר אותן כרשתות מסוג spoke ב-VPC באותו מרכז NCC.
אם אתם משתמשים באותה רשת VPC, ודאו שטווח ה-CIDR של רשת המשנה של רשת ה-VPC לא מתנגש עם טווחי ה-CIDR המרוחקים. כשכתובות IP חופפות, נתיבי רשת משנה מקבלים עדיפות על פני קישוריות מרחוק.
הוראות מפורטות זמינות במאמרים הבאים:
הגדרת הסביבה מחוץ ל- Google Cloud
בצע את השלבים הבאים כדי להגדיר את הסביבה המקומית או סביבת ענן אחרת לאיזון עומסים היברידי:
- מגדירים נקודות קצה ברשת כדי לחשוף שירותים מקומיים ל-Google Cloud (
IP:Port). - מגדירים כללים לחומת האש בסביבה המקומית או בסביבת ענן אחרת.
- מגדירים את Cloud Router כך שיפרסם מסלולים מסוימים שנדרשים בסביבה הפרטית.
הגדרת נקודות קצה ברשת
אחרי שמגדירים קישוריות היברידית, מגדירים נקודות קצה אחת או יותר ברשת בסביבה המקומית או בסביבות ענן אחרות שאפשר להגיע אליהן דרך Cloud Interconnect או Cloud VPN או נתב וירטואלי באמצעות שילוב של IP:port. השילוב IP:port מוגדר כנקודת קצה אחת או יותר עבור ה-NEG של הקישוריות ההיברידית שנוצר בהמשך התהליך ב- Google Cloud .
אם יש כמה נתיבים לנקודת הקצה של ה-IP, הניתוב מתבצע לפי ההתנהגות שמתוארת בסקירה הכללית של Cloud Router.
הגדרת כללים לחומת האש
צריך ליצור את כללי חומת האש הבאים בסביבה המקומית או בסביבת ענן אחרת:
- יוצרים כלל חומת אש שמאפשר תעבורת נתונים נכנסת (ingress) בסביבות מקומיות או בסביבות ענן אחרות, כדי לאפשר לתעבורת נתונים מתת-הרשת של שרת proxy בלבד באזור להגיע לנקודות הקצה.
אין צורך לאפשר תעבורה מטווחים של בדיקות תקינות של Google עבור קבוצות משולבות של נקודות קצה ברשת (NEGs). עם זאת, אם אתם משתמשים בשילוב של NEGs היברידיים ואזוריים בשירות לקצה העורפי יחיד, אתם צריכים לאפשר תנועה מטווחים של בדיקות תקינות של Google עבור ה-NEGs האזוריים.
פרסום מסלולים
מגדירים את Cloud Router כך שיפרסם את טווחי כתובות ה-IP המותאמים אישית הבאים בסביבה המקומית או בסביבת ענן אחרת:
- הטווח של רשת המשנה של האזור שמוגדרת רק לשרתי proxy.
הגדרת הסביבה Google Cloud
בשלבים הבאים, חשוב להשתמש באותה רשת VPC (שנקראת NETWORK בהליך הזה) ששימשה להגדרת קישוריות היברידית בין הסביבות.
בנוסף, מוודאים שהאזורים שבהם נעשה שימוש (שנקראים REGION_A ו-REGION_B בהליך הזה) זהים לאלה שבהם נעשה שימוש ליצירת מנהרת Cloud VPN או קובצי ה-VLAN המצורפים של Cloud Interconnect.
הגדרת רשתות המשנה של הקצה העורפי
משתמשים ברשת המשנה הזו כדי ליצור את קצה העורף של מאזן העומסים של אזור ה-NEG:
המסוף
נכנסים לדף VPC networks במסוף Google Cloud .
עוברים לרשת ששימשה להגדרת קישוריות היברידית בין הסביבות.
בקטע Subnets (רשתות משנה):
- מגדירים את מצב יצירת רשתות משנה לבהתאמה אישית.
- בקטע New subnet (רשת משנה חדשה), מזינים את הפרטים הבאים:
- מזינים שם לרשת המשנה.
- בוחרים אזור: REGION_A
- מזינים טווח כתובות IP.
- לוחצים על סיום.
לוחצים על יצירה.
כדי להוסיף עוד רשתות משנה באזורים שונים, לוחצים על הוספת רשת משנה וחוזרים על השלבים הקודמים עבור REGION_B
gcloud
יצירת רשתות משנה ברשת ששימשה להגדרת קישוריות היברידית בין הסביבות.
gcloud compute networks subnets create SUBNET_A \ --network=NETWORK \ --range=LB_SUBNET_RANGE1 \ --region=REGION_Agcloud compute networks subnets create SUBNET_B \ --network=NETWORK \ --range=LB_SUBNET_RANGE2 \ --region=REGION_B
API
שולחים בקשת POST אל ה-method subnetworks.insert.
מחליפים את PROJECT_ID במזהה הפרויקט.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/subnetworks
{
"name": "SUBNET_A",
"network": "projects/PROJECT_ID/global/networks/NETWORK",
"ipCidrRange": "LB_SUBNET_RANGE1",
"region": "projects/PROJECT_ID/regions/REGION_A",
}
שולחים בקשת POST אל ה-method subnetworks.insert.
מחליפים את PROJECT_ID במזהה הפרויקט.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_B/subnetworks
{
"name": "SUBNET_B",
"network": "projects/PROJECT_ID/global/networks/NETWORK",
"ipCidrRange": "LB_SUBNET_RANGE2",
"region": "projects/PROJECT_ID/regions/REGION_B",
}
מחליפים את מה שכתוב בשדות הבאים:
-
SUBNET_Aו-SUBNET_B: השם של תת-הרשתות -
LB_SUBNET_RANGE1ו-LB_SUBNET_RANGE2: טווח כתובות ה-IP של רשתות המשנה -
REGION_Aו-REGION_B: האזורים שבהם הגדרתם את מאזן העומסים
הגדרת רשת המשנה ל-proxy בלבד
תת-רשת של proxy בלבד מספקת קבוצה של כתובות IP ש-Google משתמשת בהן כדי להפעיל שרתי proxy של Envoy בשמכם. הפרוקסיים מסיימים חיבורים מהלקוח ויוצרים חיבורים חדשים לשרתי הקצה.
כל מאזני העומסים האזוריים שמבוססים על Envoy באותו אזור של רשת ה-VPC משתמשים בתת-הרשת הזו שמשמשת רק כפרוקסי. יכולה להיות רק תת-רשת אחת פעילה מסוג proxy-only לכל מטרה נתונה, לכל אזור ולכל רשת.
המסוף
אם אתם משתמשים במסוף Google Cloud , אתם יכולים לחכות וליצור את רשת המשנה של ה-proxy בלבד בהמשך בדף איזון עומסים.
כדי ליצור עכשיו את רשת המשנה של ה-proxy בלבד, פועלים לפי השלבים הבאים:
נכנסים לדף VPC networks במסוף Google Cloud .
- לוחצים על השם של רשת ה-VPC.
- בכרטיסייה Subnets (רשתות משנה), לוחצים על Add subnet (הוספת רשת משנה).
- מזינים שם לרשת המשנה של ה-proxy בלבד.
- ברשימה Region בוחרים באזור REGION_A.
- ברשימה Purpose בוחרים באפשרות Cross-region Managed Proxy.
- בשדה טווח כתובות IP, מזינים
10.129.0.0/23. - לוחצים על הוספה.
יצירת תת-רשת לשרת proxy בלבד ב-REGION_B
- לוחצים על הוספת רשת משנה.
- מזינים שם לרשת המשנה של ה-proxy בלבד.
- ברשימה Region בוחרים באזור REGION_B.
- ברשימה Purpose בוחרים באפשרות Cross-region Managed Proxy.
- בשדה טווח כתובות IP, מזינים
10.130.0.0/23. - לוחצים על הוספה.
gcloud
יוצרים את רשתות המשנה של ה-proxy בלבד באמצעות הפקודה
gcloud compute networks subnets create.
gcloud compute networks subnets create PROXY_SN_A \
--purpose=GLOBAL_MANAGED_PROXY \
--role=ACTIVE \
--region=REGION_A \
--network=NETWORK \
--range=PROXY_ONLY_SUBNET_RANGE1
gcloud compute networks subnets create PROXY_SN_B \
--purpose=GLOBAL_MANAGED_PROXY \
--role=ACTIVE \
--region=REGION_B \
--network=NETWORK \
--range=PROXY_ONLY_SUBNET_RANGE2
מחליפים את מה שכתוב בשדות הבאים:
-
PROXY_SN_Aו-PROXY_SN_B: השם של תת-הרשתות מסוג proxy בלבד -
PROXY_ONLY_SUBNET_RANGE1ו-PROXY_ONLY_SUBNET_RANGE2: טווח כתובות ה-IP של רשתות המשנה של ה-proxy בלבד -
REGION_Aו-REGION_B: האזורים שבהם הגדרתם את מאזן העומסים
API
יוצרים את רשתות המשנה של ה-proxy בלבד באמצעות
השיטה subnetworks.insert, ומחליפים את PROJECT_ID במזהה הפרויקט.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/subnetworks
{
"name": "PROXY_SN_A",
"ipCidrRange": "PROXY_ONLY_SUBNET_RANGE1",
"network": "projects/PROJECT_ID/global/networks/NETWORK",
"region": "projects/PROJECT_ID/regions/REGION_A",
"purpose": "GLOBAL_MANAGED_PROXY",
"role": "ACTIVE"
}
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_B/subnetworks
{
"name": " PROXY_SN_B",
"ipCidrRange": "PROXY_ONLY_SUBNET_RANGE2",
"network": "projects/PROJECT_ID/global/networks/NETWORK",
"region": "projects/PROJECT_ID/regions/REGION_B",
"purpose": "GLOBAL_MANAGED_PROXY",
"role": "ACTIVE"
}
יצירת כללים לחומת האש
בדוגמה הזו, יוצרים את הכללים הבאים של חומת האש עבור קצוות העורף של ה-NEG האזורי ב- Google Cloud:
-
fw-allow-health-check: כלל תעבורת נתונים נכנסת (ingress) שחל על המופעים שמתבצע איזון עומסים ביניהם, ומאפשר תנועה ממערכות לבדיקת תקינות (130.211.0.0/22ו-35.191.0.0/16). בדוגמה הזו נעשה שימוש בתג היעדallow-health-checkכדי לזהות את קבוצות ה-NEG האזוריות שאליהן הכלל צריך לחול.Google Cloud -
fw-allow-ssh: כלל תעבורת נתונים נכנסת (ingress) שמאפשר קישוריות SSH נכנסת ביציאה 22 ב-TCP מכל כתובת. אפשר לבחור טווח כתובות IP של מקור שהוא יותר מוגבל עבור הכלל הזה. לדוגמה, אפשר לציין רק את טווחי כתובות ה-IP של המערכות שמהן תפעילו סשנים של SSH. בדוגמה הזו נעשה שימוש בתג היעדallow-sshכדי לזהות את המכונות הווירטואליות שצריך להחיל עליהן את המדיניות.
fw-allow-proxy-only-subnet: כלל תעבורת נתונים נכנסת (ingress) שמאפשר חיבורים מתת-רשת של שרת proxy בלבד לשרתים העורפיים (backend) של קבוצת נקודות קצה ברשת (NEG) אזורית.
המסוף
נכנסים לדף Firewall policies במסוף Google Cloud .
לוחצים על יצירת כלל חומת אש כדי ליצור את הכלל שיאפשר תעבורת נתונים מבקשות לבדיקת תקינות:
- מזינים שם של
fw-allow-health-check. - בקטע רשת, בוחרים באפשרות NETWORK.
- בקטע יעדים, בוחרים באפשרות תגי יעד שצוינו.
- בשדה Target tags [תגי יעד] כותבים
allow-health-check. - מגדירים את Source filter בתור IPv4 ranges.
- מגדירים את Source IPv4 ranges (טווחים של כתובות IPv4 של המקור) ל-
130.211.0.0/22ול-35.191.0.0/16. - בקטע פרוטוקולים ויציאות, בוחרים באפשרות פרוטוקולים ויציאות ספציפיים.
- בוחרים באפשרות TCP ומזינים את מספר היציאה
80. - לוחצים על יצירה.
- מזינים שם של
לוחצים שוב על Create firewall rule (יצירת כלל לחומת האש) כדי ליצור את הכלל שיאפשר חיבורי SSH נכנסים:
- Name (שם):
fw-allow-ssh - רשת: NETWORK
- עדיפות:
1000 - כיוון התנועה: כניסה
- פעולה בהתאמה: לאפשר
- יעדים: תגי יעד שצוינו
- תגי טירגוט:
allow-ssh - מסנן מקור: טווחים של IPv4
- טווחים של כתובות IPv4 של המקור:
0.0.0.0/0 - פרוטוקולים ויציאות: בוחרים באפשרות פרוטוקולים ויציאות שצוינו.
- בוחרים באפשרות TCP ומזינים את מספר היציאה
22. - לוחצים על יצירה.
- Name (שם):
לוחצים שוב על Create firewall rule (יצירת כלל חומת אש) כדי ליצור את הכלל שיאפשר חיבורים נכנסים מתת-רשת של שרת proxy בלבד:
- Name (שם):
fw-allow-proxy-only-subnet - רשת: NETWORK
- עדיפות:
1000 - כיוון התנועה: כניסה
- פעולה בהתאמה: לאפשר
- יעדים: תגי יעד שצוינו
- תגי טירגוט:
allow-proxy-only-subnet - מסנן מקור: טווחים של IPv4
- טווחי IPv4 של המקור: PROXY_ONLY_SUBNET_RANGE1 ו-PROXY_ONLY_SUBNET_RANGE2
- פרוטוקולים ויציאות: בוחרים באפשרות פרוטוקולים ויציאות שצוינו.
- בוחרים באפשרות TCP ומזינים את מספר היציאה
80. - לוחצים על יצירה.
- Name (שם):
gcloud
יוצרים את הכלל
fw-allow-health-check-and-proxyכדי לאפשר לבדיקות התקינות להגיע לשרתים העורפיים ביציאת TCP80: Google Cloudgcloud compute firewall-rules create fw-allow-health-check \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp:80יוצרים את כלל חומת האש
fw-allow-sshכדי לאפשר קישוריות SSH למכונות וירטואליות עם תג הרשתallow-ssh. אם לא מציינים אתsource-ranges,Google Cloud מפרש את הכלל כאילו הוא מתייחס לכל מקור.gcloud compute firewall-rules create fw-allow-ssh \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22יוצרים כלל חומת אש שמאפשר תעבורת נתונים נכנסת (ingress) לתת-רשת של שרת proxy בלבד, כדי לאפשר למאזן העומסים לתקשר עם שרתים עורפיים (backend instance) ביציאת TCP
80:gcloud compute firewall-rules create fw-allow-proxy-only-subnet \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-proxy-only-subnet \ --source-ranges=PROXY_ONLY_SUBNET_RANGE1,PROXY_ONLY_SUBNET_RANGE2 \ --rules=tcp:80
הגדרת קבוצת ה-NEG האזורית
לשרתי קצה עורפיים שמבוססים על Google Cloud, מומלץ להגדיר כמה קבוצות אזוריות של נקודות קצה ברשת (NEG) באותו אזור שבו הגדרתם קישוריות היברידית.
בדוגמה הזו, הגדרנו NEG אזורי (עם נקודות קצה מסוג GCE_VM_IP_PORT) באזור REGION1. קודם יוצרים את המכונות הווירטואליות באזור NEG_ZONE1. לאחר מכן, יוצרים NEG אזורי ב-NEG_ZONE2 ומוסיפים ל-NEG את נקודות הקצה ברשת של מכונות ה-VM.
כדי לתמוך בזמינות גבוהה, הגדרנו NEG אזורי דומה בREGION2
אזור. אם שרתי קצה עורפיים באזור מסוים מושבתים, התעבורה מועברת לאזור אחר.
יצירת מכונות וירטואליות
המסוף
נכנסים לדף VM instances במסוף Google Cloud .
חוזרים על שלבים 3 עד 8 לכל מכונה וירטואלית, ומשתמשים בשילובים הבאים של שם ואזור.
- שם: של
vm-a1- אזור: NEG_ZONE1 באזור REGION_A
- תת-רשת: SUBNET_A
- שם: של
vm-b1- אזור: NEG_ZONE2 באזור REGION_B
- תת-רשת: SUBNET_B
- שם: של
לוחצים על Create instance.
מגדירים את השם כמו שצוין בשלב הקודם.
בקטע Region, בוחרים את האזור שצוין בשלב הקודם.
בקטע Zone, בוחרים את האזור שצוין בשלב הקודם.
בקטע Boot disk מוודאים שהאפשרות Debian GNU/Linux 12 (bookworm) מסומנת באפשרויות של דיסק האתחול. לוחצים על בחירה כדי לשנות את התמונה, אם צריך.
בקטע אפשרויות מתקדמות, מרחיבים את Networking (רשת) ופועלים לפי השלבים הבאים:
- מוסיפים את תגי הרשת הבאים:
allow-ssh,allow-health-checkו-allow-proxy-only-subnet. - בקטע Network interfaces (ממשקי רשת), לוחצים על Add a network interface (הוספת ממשק רשת), מבצעים את השינויים הבאים ואז לוחצים על Done (סיום):
- רשת: NETWORK
- רשת משנה: כמו שצוין בשלב הקודם.
- כתובת IP פנימית ראשית: זמנית (אוטומטית)
- כתובת IP חיצונית: זמנית
מרחיבים את האפשרות Management. בשדה Automation, מעתיקים ומדביקים את תוכן הסקריפט הבא. תוכן הסקריפט זהה בכל המכונות הווירטואליות:
#! /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
- מוסיפים את תגי הרשת הבאים:
לוחצים על יצירה.
gcloud
כדי ליצור את המכונות הווירטואליות, מריצים את הפקודה הבאה ומשתמשים בשילובים האלה לשם של המכונה הווירטואלית והאזור שלה. תוכן הסקריפט זהה בשתי המכונות הווירטואליות.
VM_NAMEמתוךvm-a1- האזור
GCP_NEG_ZONEבתור NEG_ZONE1 באזורREGION_A - תת-הרשת
LB_SUBNET_NAMEבתור SUBNET_A
- האזור
VM_NAMEמתוךvm-b1- אזור
GCP_NEG_ZONEבתור NEG_ZONE2 באזורREGION_B - תת-רשת
LB_SUBNET_NAMEבתור SUBNET_B
gcloud compute instances create VM_NAME \ --zone=GCP_NEG_ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \ --subnet=LB_SUBNET_NAME \ --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'- אזור
יצירת ה-NEG האזורי
המסוף
כדי ליצור קבוצת נקודות קצה ברשת אזורית:
נכנסים לדף Network Endpoint Groups במסוף Google Cloud .
חוזרים על שלבים 3 עד 8 לכל קבוצת NEG אזורית, באמצעות השילובים הבאים של שם ואזור:
- שם:
neg-1- אזור: NEG_ZONE1 באזור
REGION_A - תת-רשת: SUBNET_A
- אזור: NEG_ZONE1 באזור
- שם:
neg-2- אזור: NEG_ZONE2 באזור
REGION_B - תת-רשת: SUBNET_B
- אזור: NEG_ZONE2 באזור
- שם:
לוחצים על יצירת קבוצת נקודות קצה ברשת.
מגדירים את השם כמו שצוין בשלב הקודם.
בוחרים את סוג קבוצת נקודות הקצה ברשת: קבוצת נקודות קצה ברשת (אזורית).
בוחרים את הרשת: NETWORK
בוחרים באפשרות Subnetwork (רשת משנה) כמו שצוין בשלב הקודם.
בוחרים באפשרות אזור כמו שמוצג בשלב הקודם.
מזינים את יציאת ברירת המחדל:
80.לוחצים על יצירה.
מוסיפים נקודות קצה ל-NEG האזורי:
נכנסים לדף Network Endpoint Groups במסוף Google Cloud .
לוחצים על Name (שם) של קבוצת נקודות הקצה ברשת שנוצרה בשלב הקודם. יוצג הדף Network endpoint group details.
בקטע Network endpoints in this group (נקודות קצה ברשת בקבוצה הזו), לוחצים על Add network endpoint (הוספת נקודת קצה ברשת). מוצג הדף Add network endpoint.
בוחרים מכונה וירטואלית כדי להוסיף את כתובות ה-IP הפנימיות שלה כנקודות קצה ברשת. בקטע Network interface (ממשק רשת), מוצגים השם, האזור ורשת המשנה של מכונת ה-VM.
מזינים את כתובת ה-IP של נקודת הקצה החדשה ברשת.
בוחרים את סוג הניוד.
- אם בוחרים באפשרות ברירת מחדל, נקודת הקצה משתמשת ביציאת ברירת המחדל
80לכל נקודות הקצה בקבוצת נקודות הקצה ברשת. זה מספיק לדוגמה שלנו כי שרת Apache משרת בקשות ביציאה80. - אם בוחרים באפשרות בהתאמה אישית, מזינים את מספר היציאה של נקודת הקצה שבה רוצים להשתמש.
- אם בוחרים באפשרות ברירת מחדל, נקודת הקצה משתמשת ביציאת ברירת המחדל
כדי להוסיף עוד נקודות קצה, לוחצים על הוספת נקודת קצה ברשת וחוזרים על השלבים הקודמים.
אחרי שמוסיפים את כל נקודות הקצה, לוחצים על יצירה.
gcloud
יוצרים קבוצות אזוריות של נקודות קצה ברשת (עם נקודות קצה של
GCE_VM_IP_PORT) באמצעות שילובים של שם, אזור ורשת משנה. משתמשים בפקודהgcloud compute network-endpoint-groups create.- שם:
neg-1- אזור
GCP_NEG_ZONE: NEG_ZONE1 באזורREGION_A - רשת משנה
LB_SUBNET_NAME: SUBNET_A
- אזור
- שם:
neg-2- אזור
GCP_NEG_ZONE: NEG_ZONE2 באזורREGION_B - רשת משנה
LB_SUBNET_NAME: SUBNET_B
- אזור
gcloud compute network-endpoint-groups create GCP_NEG_NAME \ --network-endpoint-type=GCE_VM_IP_PORT \ --zone=GCP_NEG_ZONE \ --network=NETWORK \ --subnet=LB_SUBNET_NAMEאפשר לציין יציאה באמצעות האפשרות
--default-portכשיוצרים את קבוצת נקודות הקצה, או לציין מספר יציאה לכל נקודת קצה כמו שמוצג בשלב הבא.- שם:
מוסיפים נקודות קצה ל-
neg1ול-neg2.gcloud compute network-endpoint-groups update neg1 \ --zone=NEG_ZONE1 \ --add-endpoint='instance=vm-a1,port=80'gcloud compute network-endpoint-groups update neg2 \ --zone=NEG_ZONE2 \ --add-endpoint='instance=vm-b1,port=80'
הגדרת NEG קישוריות היברידית
כשיוצרים את ה-NEG, צריך להשתמש באזור שממזער את המרחק הגיאוגרפי בין Google Cloud לבין הסביבה המקומית או סביבת ענן אחרת.
אם אתם משתמשים ב-Cloud Interconnect, האזור שבו משתמשים כדי ליצור את ה-NEG נמצא באותו אזור שבו הוגדר צירוף ל-Interconnect.
קבוצות משנה היברידיות של נקודות קצה ברשת תומכות רק בבדיקות תקינות מבוזרות של Envoy.
המסוף
כדי ליצור קבוצה של נקודות קצה ברשת עם קישוריות היברידית:
נכנסים לדף Network Endpoint Groups במסוף Google Cloud .
לוחצים על יצירת קבוצת נקודות קצה ברשת.
חוזרים על שלבים 4 עד 9 לכל NEG היברידי, באמצעות השילובים הבאים של שם ואזור.
- שם ON_PREM_NEG_NAME:
hybrid-1- אזור: ON_PREM_NEG_ZONE1
- תת-רשת: SUBNET_A
- שם ON_PREM_NEG_NAME:
hybrid-2- אזור: ON_PREM_NEG_ZONE2
- תת-רשת: SUBNET_B
- שם ON_PREM_NEG_NAME:
מגדירים את השם כמו שצוין בשלב הקודם.
בוחרים את סוג קבוצת נקודות הקצה ברשת: קבוצה של נקודות קצה ברשת לקישוריות היברידית (אזורית).
בוחרים את הרשת: NETWORK
בקטע Subnet, בוחרים באפשרות שצוינה בשלב הקודם.
בשדה Zone, בוחרים את האזור כמו שצוין בשלב הקודם.
מזינים את יציאת ברירת המחדל.
לוחצים על יצירה.
מוסיפים נקודות קצה ל-NEG של הקישוריות ההיברידית:
נכנסים לדף Network Endpoint Groups במסוף Google Cloud .
לוחצים על Name (שם) של קבוצת נקודות הקצה ברשת שנוצרה בשלב הקודם. יוצג הדף Network endpoint group detail.
בקטע Network endpoints in this group (נקודות קצה ברשת בקבוצה הזו), לוחצים על Add network endpoint (הוספת נקודת קצה ברשת). מוצג הדף Add network endpoint.
מזינים את כתובת ה-IP של נקודת הקצה החדשה ברשת.
בוחרים את סוג הניוד.
- אם בוחרים באפשרות ברירת מחדל, נקודת הקצה משתמשת ביציאת ברירת המחדל לכל נקודות הקצה בקבוצת נקודות הקצה ברשת.
- אם בוחרים באפשרות בהתאמה אישית, אפשר להזין מספר יציאה אחר לשימוש בנקודת הקצה.
כדי להוסיף עוד נקודות קצה, לוחצים על הוספת נקודת קצה ברשת וחוזרים על השלבים הקודמים.
אחרי שמוסיפים את כל נקודות הקצה שאינןGoogle Cloud , לוחצים על יצירה.
gcloud
יוצרים NEG קישוריות היברידית עם שילובי השמות הבאים. משתמשים בפקודה
gcloud compute network-endpoint-groups create.- שם
ON_PREM_NEG_NAME:hybrid-1- אזור
ON_PREM_NEG_ZONE: ON_PREM_NEG_ZONE1
- אזור
- שם
ON_PREM_NEG_NAME:hybrid-2- אזור
GCP_NEG_ZONE: ON_PREM_NEG_ZONE2
- אזור
gcloud compute network-endpoint-groups create ON_PREM_NEG_NAME \ --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \ --zone=ON_PREM_NEG_ZONE \ --network=NETWORK- שם
מוסיפים את נקודת הקצה של המכונה הווירטואלית של ה-Backend המקומי אל ON_PREM_NEG_NAME:
gcloud compute network-endpoint-groups update ON_PREM_NEG_NAME \ --zone=ON_PREM_NEG_ZONE \ --add-endpoint="ip=ON_PREM_IP_ADDRESS_1,port=PORT_1" \ --add-endpoint="ip=ON_PREM_IP_ADDRESS_2,port=PORT_2"
אפשר להשתמש בפקודה הזו כדי להוסיף את נקודות הקצה ברשת שהגדרתם קודם לכן בשרתים מקומיים או בסביבת הענן.
חוזרים על שלב --add-endpoint כמה פעמים שצריך.
הגדרת מאזן העומסים
המסוף
gcloud
מגדירים את בדיקת התקינות של TCP באמצעות הפקודה
gcloud compute health-checks create tcp.gcloud compute health-checks create tcp gil4-basic-check \ --use-serving-port \ --global
יוצרים את שירות לקצה העורפי ומפעילים את הרישום ביומן באמצעות הפקודה
gcloud compute backend-services create.gcloud compute backend-services create BACKEND_SERVICE \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=TCP \ --enable-logging \ --logging-sample-rate=1.0 \ --health-checks=gil4-basic-check \ --global-health-checks \ --global
מוסיפים קצה עורפי לשירות הקצה העורפי באמצעות הפקודה
gcloud compute backend-services add-backend.gcloud compute backend-services add-backend BACKEND_SERVICE \ --global \ --balancing-mode=CONNECTION \ --max-connections-per-endpoint=MAX_CONNECTIONS \ --network-endpoint-group=neg1 \ --network-endpoint-group-zone=NEG_ZONE1 \ --network-endpoint-group=neg2 \ --network-endpoint-group-zone=NEG_ZONE2
פרטים על הגדרת מצב האיזון מופיעים במסמכי התיעוד של ה-CLI של gcloud בנושא הדגל
--max-connections-per-endpoint. בשדה MAX_CONNECTIONS, מזינים את מספר החיבורים המקסימלי בו-זמנית שהקצה העורפי יכול לטפל בהם.מוסיפים את קבוצות ה-NEG ההיברידיות כקצה עורפי לשירות הקצה העורפי.
gcloud compute backend-services add-backend BACKEND_SERVICE \ --global \ --balancing-mode=CONNECTION \ --max-connections-per-endpoint=MAX_CONNECTIONS \ --network-endpoint-group=hybrid1 \ --network-endpoint-group-zone=ON_PREM_NEG_ZONE1 \ --network-endpoint-group=hybrid2 \ --network-endpoint-group-zone=ON_PREM_NEG_ZONE2 \
פרטים על הגדרת מצב האיזון מופיעים במסמכי התיעוד של ה-CLI של gcloud בנושא הפרמטר
--max-connections-per-endpoint. בשדהMAX_CONNECTIONS, מזינים את מספר החיבורים המקסימלי בו-זמנית שהקצה העורפי יכול לטפל בהם.יוצרים את שרת ה-proxy של היעד.
יוצרים את שרת ה-proxy של היעד באמצעות הפקודה
gcloud compute target-tcp-proxies create.gcloud compute target-tcp-proxies create gil4-tcp-proxy \ --backend-service=BACKEND_SERVICE \ --global
יוצרים שני כללי העברה, אחד עם כתובת VIP IP_ADDRESS1 ב-REGION_A ואחד עם כתובת VIP IP_ADDRESS2 ב-
REGION_B. לכתובת ה-IP של כלל ההעברה, משתמשים בטווח כתובות ה-IP LB_SUBNET_RANGE1 או LB_SUBNET_RANGE2. אם מנסים להשתמש ברשת המשנה proxy-only, יצירת כלל ההעברה נכשלת.ברשתות מותאמות אישית, צריך להפנות לרשת המשנה בכלל ההעברה. שימו לב: מדובר ברשת המשנה של המכונה הווירטואלית, ולא ברשת המשנה של ה-proxy.
משתמשים בפקודה
gcloud compute forwarding-rules createעם הדגלים המתאימים.gcloud compute forwarding-rules create gil4-forwarding-rule-a \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK \ --subnet=SUBNET_A \ --subnet-region=REGION_A \ --address=IP_ADDRESS1 \ --ports=80 \ --target-tcp-proxy=gil4-tcp-proxy \ --global
gcloud compute forwarding-rules create gil4-forwarding-rule-b \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK \ --subnet=SUBNET_B \ --subnet-region=REGION_B \ --address=IP_ADDRESS2 \ --ports=80 \ --target-tcp-proxy=gil4-tcp-proxy \ --global
בדיקת מאזן העומסים
יצירת מכונת VM לבדיקת הקישוריות
יצירת מכונות וירטואליות (VM) של לקוחות ב-
REGION_Aוב-REGION_Bובאזורים:gcloud compute instances create l4-ilb-client-a \ --image-family=debian-12 \ --image-project=debian-cloud \ --network=NETWORK \ --subnet=SUBNET_A \ --zone=NEG_ZONE1 \ --tags=allow-sshgcloud compute instances create l4-ilb-client-b \ --image-family=debian-12 \ --image-project=debian-cloud \ --network=NETWORK \ --subnet=SUBNET_B \ --zone=NEG_ZONE2 \ --tags=allow-sshמשתמשים ב-SSH כדי להתחבר לכל מופע לקוח.
gcloud compute ssh l4-ilb-client-a \ --zone=NEG_ZONE1
gcloud compute ssh l4-ilb-client-b \ --zone=NEG_ZONE2
מוודאים שכתובת ה-IP משרתת את שם המארח שלה.
מוודאים שהמכונה הווירטואלית של הלקוח יכולה להגיע לשתי כתובות ה-IP. הפקודה אמורה להצליח ולהחזיר את השם של מכונת ה-VM בעורף המערכת שטיפלה בבקשה:
curl IP_ADDRESS1
curl IP_ADDRESS2
הרצת 100 בקשות
מריצים 100 בקשות curl ומוודאים מהתגובות שהן מאוזנות מבחינת העומס.
מוודאים שהמכונה הווירטואלית של הלקוח יכולה להגיע לשתי כתובות ה-IP. הפקודה אמורה להצליח ולהחזיר את השם של מכונת ה-VM של ה-Backend שטיפלה בבקשה:
{ RESULTS= for i in {1..100} do RESULTS="$RESULTS:$(curl --silent IP_ADDRESS1)" done echo "***" echo "*** Results of load-balancing to IP_ADDRESS1: " echo "***" echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c echo }{ RESULTS= for i in {1..100} do RESULTS="$RESULTS:$(curl --silent IP_ADDRESS2)" done echo "***" echo "*** Results of load-balancing to IP_ADDRESS2: " echo "***" echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c echo }
בדיקת מעבר לגיבוי (failover)
לוודא שמתבצע מעבר לגיבוי (failover) לשרתי קצה עורפיים באזור
REGION_Aכשהשרתים באזורREGION_Bלא תקינים או לא נגישים. אנחנו מדמים את זה על ידי הסרת כל שרתי הקצה העורפיים מ-REGION_B:gcloud compute backend-services remove-backend BACKEND_SERVICE \ --balancing-mode=CONNECTION \ --network-endpoint-group=neg2 \ --network-endpoint-group-zone=NEG_ZONE2
משתמשים ב-SSH כדי להתחבר למכונה הווירטואלית של הלקוח ב-
REGION_B.gcloud compute ssh l4-ilb-client-b \ --zone=NEG_ZONE2
שליחת בקשות לכתובת ה-IP של מאזן העומסים באזור
REGION_B. פלט הפקודה צריך להציג תגובות ממכונות וירטואליות בבק-אנד ב-REGION_A.{ RESULTS= for i in {1..100} do RESULTS="$RESULTS:$(curl --silent IP_ADDRESS2)" done echo "***" echo "*** Results of load-balancing to IP_ADDRESS2: " echo "***" echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c echo }
המאמרים הבאים
- המרת מאזן עומסי רשת לשרת proxy ל-IPv6
- סקירה כללית על מאזן עומסי רשת פנימי לשרת proxy
- תת-רשתות של שרת proxy בלבד למאזני עומסים מבוססי Envoy
- ניקוי הגדרות של איזון עומסים