בדף הזה מוסבר איך ליצור מאזני עומסי רשת פנימיים להעברת סיגנל ללא שינוי כדי לאזן עומסים של תעבורת נתונים בכמה פרוטוקולים.
כדי להגדיר מאזן עומסים לכמה פרוטוקולים, כולל TCP ו-UDP, צריך ליצור כלל העברה עם הפרוטוקול שמוגדר ל-L3_DEFAULT. כלל ההעברה הזה מפנה אל שירות קצה עורפי שהפרוטוקול שלו מוגדר ל-UNSPECIFIED.
בדוגמה הזו, אנחנו משתמשים במאזן עומסי רשת פנימי להעברת סיגנל ללא שינוי כדי להפיץ את התעבורה במכונה וירטואלית (VM) בקצה העורפי באזור us-west1. למאזן העומסים יש כלל העברה עם פרוטוקול L3_DEFAULT לטיפול ב-TCP, ב-UDP, ב-ICMP, ב-ICMPv6, ב-SCTP, ב-ESP, ב-AH וב-GRE.
לפני שמתחילים
- מתקינים את Google Cloud CLI. סקירה כללית מלאה של הכלי זמינה במאמר סקירה כללית על ה-CLI של gcloud. אפשר למצוא פקודות שקשורות לאיזון עומסים בהפניות ל-API ול-CLI של gcloud.
אם לא הפעלתם את ה-CLI של gcloud בעבר, אתם צריכים קודם להריץ את הפקודה
gcloud initכדי לבצע אימות. - מידע נוסף על bash
הרשאות
כדי לקבל את ההרשאות שדרושות להשלמת המדריך הזה, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
-
כדי ליצור משאבי איזון עומסים:
Compute Load Balancer Admin (
roles/compute.loadBalancerAdmin) -
כדי ליצור מכונות וירטואליות וקבוצות של מכונות וירטואליות ב-Compute Engine:
אדמין מכונות של Compute (
roles/compute.instanceAdmin.v1) -
כדי ליצור רכיבי רשת:
Compute Network Admin (
roles/compute.networkAdmin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
הגדרת מאזן עומסים לתעבורה ברמה L3_DEFAULT
השלבים בקטע הזה מתארים את ההגדרות הבאות:
- דוגמה לשימוש ברשת VPC במצב מותאם אישית בשם
lb-network. אפשר להשתמש ברשת במצב אוטומטי אם רוצים לטפל רק בתנועת IPv4. עם זאת, תנועה מסוג IPv6 דורשת תת-רשת במצב מותאם אישית. - תת-רשת single-stack (הערך של
stack-typeמוגדר ל-IPv4), שנדרשת לתנועת נתונים ב-IPv4. כשיוצרים רשת משנה עם סוג אחד של כתובות ברשת VPC במצב מותאם אישית, בוחרים טווח כתובות IPv4 לרשת המשנה. לתעבורת IPv6 נדרשת רשת משנה עם מערך כפול (stack-typeמוגדר כ-IPV4_IPV6). כשיוצרים רשת משנה עם מערך כפול ברשת VPC במצב מותאם אישית, בוחרים סוג גישה ל-IPv6 לרשת המשנה. בדוגמה הזו, הגדרנו את הפרמטרipv6-access-typeשל רשת המשנה (subnet) לערךINTERNAL. המשמעות היא שאפשר להקצות למכונות וירטואליות חדשות ברשת המשנה הזו גם כתובות IPv4 פנימיות וגם כתובות IPv6 פנימיות. - כללי חומת אש שמאפשרים חיבורים נכנסים למכונות וירטואליות של שרתים עורפיים.
- קבוצת המכונות של שרת עורפי (backend instance) ורכיבי מאזן העומסים שמשמשים בדוגמה הזו נמצאים באזור וברשת המשנה האלה:
- אזור:
us-west1 - תת-רשת:
lb-subnet, עם טווח כתובות IPv4 ראשי10.1.2.0/24. אתם בוחרים את טווח כתובות ה-IPv4 שמוגדר בתת-הרשת, אבל טווח כתובות ה-IPv6 מוקצה באופן אוטומטי. Google מספקת בלוק IPv6 CIDR בגודל קבוע (/64).
- אזור:
- מכונה וירטואלית בבק-אנד בקבוצת מופעי מכונה מנוהלים באזור
us-west1-a. - מכונה וירטואלית של לקוח לבדיקת חיבורים לשרתי הקצה העורפי.
- מאזן עומסי רשת פנימי להעברת סיגנל ללא שינוי עם הרכיבים הבאים:
- בדיקת תקינות של שירות הקצה העורפי.
- שירות לקצה העורפי באזור
us-west1עם הפרוטוקול שמוגדר ל-UNSPECIFIEDכדי לנהל את חלוקת החיבורים לקבוצת המכונות האזורית. - כלל העברה עם הפרוטוקול
L3_DEFAULTוהיציאהALL.
הגדרת רשת, אזור ורשת משנה
כדי להגדיר תת-רשתות עם טווחי IPv6 פנימיים, צריך להפעיל טווח IPv6 פנימי של ULA ברשת של הענן הווירטואלי הפרטי (VPC). טווחים של רשתות משנה פנימיות של IPv6 מוקצים מתוך הטווח הזה. כדי ליצור את הרשת ואת רשת המשנה לדוגמה, פועלים לפי השלבים הבאים:
המסוף
כדי לתמוך בתנועה מסוג IPv4 ו-IPv6, פועלים לפי השלבים הבאים:
נכנסים לדף VPC networks במסוף Google Cloud .
לוחצים על יצירת רשת VPC.
בשדה Name (שם), מזינים
lb-network.כדי להגדיר טווחי כתובות IPv6 פנימיות ברשתות משנה ברשת הזו, צריך לבצע את השלבים הבאים:
- בשדה VPC network ULA internal IPv6 range (טווח IPv6 פנימי של ULA ברשת VPC), בוחרים באפשרות Enabled (מופעל).
- בקטע הקצאת טווח פנימי של IPv6, בוחרים באפשרות אוטומטית או ידנית.
בקטע Subnet creation mode (מצב יצירת רשת משנה), בוחרים באפשרות Custom (בהתאמה אישית).
בקטע New subnet (רשת משנה חדשה), מציינים את פרמטרי ההגדרה הבאים של רשת משנה:
- בשדה Name (שם), מזינים
lb-subnet. - בשדה אזור, בוחרים באפשרות
us-west1. - כדי ליצור רשת משנה עם שני פרוטוקולים, בוחרים באפשרות IPv4 and IPv6 (dual-stack) (IPv4 ו-IPv6 (שני פרוטוקולים)) בשדה IP stack type (סוג ערימת ה-IP).
- בשדה IPv4 range, מזינים
10.1.2.0/24. - בשדה IPv6 access type, בוחרים באפשרות Internal.
- בשדה Name (שם), מזינים
לוחצים על סיום.
לוחצים על יצירה.
כדי לתמוך בתנועה של IPv4, פועלים לפי השלבים הבאים:
נכנסים לדף VPC networks במסוף Google Cloud .
לוחצים על יצירת רשת VPC.
בשדה Name (שם), מזינים
lb-network.בקטע Subnets (רשתות משנה):
- מגדירים את מצב יצירת רשתות משנה לבהתאמה אישית.
- בקטע New subnet (רשת משנה חדשה), מזינים את הפרטים הבאים:
- Name (שם):
lb-subnet - אזור:
us-west1 - סוג מחסנית פרוטוקולי IP: IPv4 (מחסנית יחידה)
- טווח כתובות IP:
10.1.2.0/24
- Name (שם):
- לוחצים על סיום.
לוחצים על יצירה.
gcloud
גם עבור תנועה ב-IPv4 וגם עבור תנועה ב-IPv6, משתמשים בפקודות הבאות:
כדי ליצור רשת VPC חדשה במצב מותאם אישית, מריצים את הפקודה
gcloud compute networks create.כדי להגדיר טווחי IPv6 פנימיים בכל רשת משנה ברשת הזו, משתמשים בדגל
--enable-ula-internal-ipv6. האפשרות הזו מקצה קידומת/48ULA מתוך טווחfd20::/20שמשמש את Google Cloud לטווחים פנימיים של רשתות משנה ב-IPv6.gcloud compute networks create lb-network \ --subnet-mode=custom \ --enable-ula-internal-ipv6
בתוך
lb-network, יוצרים רשת משנה לשרתי קצה עורפיים באזורus-west1.כדי ליצור את רשתות המשנה, מריצים את הפקודה
gcloud compute networks subnets create:gcloud compute networks subnets create lb-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1 \ --stack-type=IPV4_IPV6 --ipv6-access-type=INTERNAL
כדי להגדיר תנועה של IPv4 בלבד, משתמשים בפקודות הבאות:
כדי ליצור רשת VPC בהתאמה אישית, משתמשים בפקודה
gcloud compute networks create:gcloud compute networks create lb-network --subnet-mode=custom
כדי ליצור את רשת המשנה לשרתי קצה עורפיים באזור
us-west1ברשתlb-network, משתמשים בפקודהgcloud compute networks subnets create.gcloud compute networks subnets create lb-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1
API
גם עבור תנועה ב-IPv4 וגם עבור תנועה ב-IPv6, משתמשים בפקודות הבאות:
יוצרים רשת VPC חדשה במצב מותאם אישית. שולחים בקשת
POSTאל ה-methodnetworks.insert.כדי להגדיר טווחי IPv6 פנימיים ברשתות משנה ברשת הזו, מגדירים את
enableUlaInternalIpv6ל-true. באפשרות הזו מוקצה טווח/48מתוך הטווחfd20::/20שבו Google משתמשת לטווחים פנימיים של רשתות משנה IPv6.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks { "autoCreateSubnetworks": false, "name": "lb-network", "mtu": MTU, "enableUlaInternalIpv6": true, }מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו נוצרה רשת ה-VPC. -
MTU: יחידת השידור המקסימלית של הרשת. הערך של MTU יכול להיות1460(ברירת מחדל) או1500. לפני שמגדירים את ה-MTU ל-1500, כדאי לעיין בסקירה הכללית על יחידת השידור המקסימלית.
-
שולחים בקשת
POSTאל ה-methodsubnetworks.insert.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks { "ipCidrRange": "10.1.2.0/24", "network": "lb-network", "name": "lb-subnet" "stackType": IPV4_IPV6, "ipv6AccessType": Internal }
כדי להגדיר תנועה לפי IPv4 בלבד, פועלים לפי השלבים הבאים:
שולחים בקשת
POSTאל ה-methodnetworks.insert. מחליפים אתPROJECT_IDבמזהה שלGoogle Cloud הפרויקט.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks { "name": "lb-network", "autoCreateSubnetworks": false }שולחים שתי בקשות
POSTאל ה-methodsubnetworks.insert:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks { "name": "lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "ipCidrRange": "10.1.2.0/24", "privateIpGoogleAccess": false }
הגדרת כללים לחומת אש
בדוגמה הזו נעשה שימוש בכללים הבאים של חומת האש:
fw-allow-lb-access: כלל כניסה (ingress) שחל על כל היעדים ברשת ה-VPC, שמאפשר תעבורה ממקורות בטווחים10.1.2.0/24. הכלל הזה מאפשר תנועה נכנסת מכל לקוח שנמצא ברשת המשנה.
fw-allow-lb-access-ipv6: כלל תעבורה נכנסת (ingress) שחל על כל יעדי התעבורה ברשת ה-VPC, ומאפשר תעבורה ממקורות בטווח IPv6 שהוגדר ברשת המשנה. הכלל הזה מאפשר תנועה נכנסת של IPv6 מכל לקוח שנמצא ברשת המשנה.
fw-allow-ssh: כלל תעבורת נתונים נכנסת (ingress) שחל על המכונות שמתבצע עליהן איזון עומסים, שמאפשר קישוריות SSH נכנסת ביציאה 22 ב-TCP מכל כתובת. אפשר לבחור טווח IP של מקור עם הגבלות רבות יותר עבור הכלל הזה – לדוגמה, אפשר לציין רק את טווחי ה-IP של המערכת שממנה מתחילים סשנים של SSH. בדוגמה הזו נעשה שימוש בתג היעדallow-sshכדי לזהות את מכונות ה-VM שאליהן התג צריך להתייחס.
fw-allow-health-check: כלל כניסה שחל על המופעים שעוברים איזון עומסים, שמאפשר תעבורה ממערכות בדיקת תקינות ( Google Cloud , 130.211.0.0/22ו-35.191.0.0/16). בדוגמה הזו נעשה שימוש בתג היעדallow-health-checkכדי לזהות את המופעים שבהם הכלל צריך לחול.
fw-allow-health-check-ipv6: כלל תעבורת נתונים נכנסת (ingress) שחל על המופעים שמתבצע איזון העומסים שלהם, שמאפשר תעבורת נתונים ממערכות בדיקת תקינות (2600:2d00:1:b029::/64) של Google Cloud . בדוגמה הזו נעשה שימוש בתג היעדallow-health-check-ipv6כדי לזהות את המופעים שצריך להחיל עליהם את הכלל.
בלי כללי חומת האש האלה, הכלל default deny ingress חוסם תנועה נכנסת למופעי ה-Backend.
המסוף
נכנסים לדף Firewall policies במסוף Google Cloud .
כדי לאפשר לתעבורת נתונים מסוג IPv4 TCP, UDP ו-ICMP להגיע לקבוצת מכונות העורף
ig-a:- לוחצים על יצירת כלל לחומת האש.
- Name (שם):
fw-allow-lb-access - רשת:
lb-network - עדיפות:
1000 - כיוון התנועה: כניסה
- פעולה בהתאמה: אישור
- יעדים: כל המופעים ברשת
- מסנן מקור: טווחי IPv4
- טווחים של כתובות IPv4 של המקור:
10.1.2.0/24 - פרוטוקולים ויציאות: בוחרים באפשרות פרוטוקולים ויציאות שצוינו.
- בוחרים באפשרות TCP ומזינים את הערך
ALL. - בוחרים באפשרות UDP.
- בוחרים באפשרות אחר ומזינים
ICMP.
- בוחרים באפשרות TCP ומזינים את הערך
לוחצים על יצירה.
כדי לאפשר חיבורי SSH נכנסים:
- לוחצים על יצירת כלל לחומת האש.
- Name (שם):
fw-allow-ssh - רשת:
lb-network - עדיפות:
1000 - כיוון התנועה: כניסה
- פעולה בהתאמה: אישור
- יעדים: תגי יעד שצוינו
- תגי טירגוט:
allow-ssh - מסנן מקור: טווחי IPv4
- טווחים של כתובות IPv4 של המקור:
0.0.0.0/0 - פרוטוקולים ויציאות: בוחרים באפשרות פרוטוקולים ויציאות שצוינו, ואז מקלידים
tcp:22.
לוחצים על יצירה.
כדי לאפשר לתעבורת נתונים מסוג IPv6 TCP, UDP ו-ICMP להגיע לקבוצת מכונות עורפיות
ig-a:- לוחצים על יצירת כלל לחומת האש.
- Name (שם):
fw-allow-lb-access-ipv6 - רשת:
lb-network - עדיפות:
1000 - כיוון התנועה: כניסה
- פעולה בהתאמה: אישור
- יעדים: כל המופעים ברשת
- מסנן מקור: טווחים של IPv6
- טווחי IPv6 של המקור: IPV6_ADDRESS שהוקצו ב-
lb-subnet - פרוטוקולים ויציאות: בוחרים באפשרות פרוטוקולים ויציאות שצוינו.
- בוחרים באפשרות TCP ומזינים את הערך
0-65535. - בוחרים באפשרות UDP.
- בוחרים באפשרות אחר ובפרוטוקול ICMPv6 מזינים
58.
- בוחרים באפשרות TCP ומזינים את הערך
לוחצים על יצירה.
כדי לאפשר בדיקות תקינות של Google Cloud IPv6:
- לוחצים על יצירת כלל לחומת האש.
- Name (שם):
fw-allow-health-check-ipv6 - רשת:
lb-network - עדיפות:
1000 - כיוון התנועה: כניסה
- פעולה בהתאמה: אישור
- יעדים: תגי יעד שצוינו
- תגי טירגוט:
allow-health-check-ipv6 - מסנן מקור: טווחים של IPv6
- טווחים של כתובות IPv6 של המקור:
2600:2d00:1:b029::/64 - Protocols and ports: Allow all
לוחצים על יצירה.
כדי לאפשר Google Cloud בדיקות תקינות של IPv4:
- לוחצים על יצירת כלל לחומת האש.
- Name (שם):
fw-allow-health-check - רשת:
lb-network - עדיפות:
1000 - כיוון התנועה: כניסה
- פעולה בהתאמה: אישור
- יעדים: תגי יעד שצוינו
- תגי טירגוט:
allow-health-check - מסנן מקור: טווחי IPv4
- טווחי IPv4 של המקור:
130.211.0.0/22ו-35.191.0.0/16 - Protocols and ports: Allow all
לוחצים על יצירה.
gcloud
כדי לאפשר לתעבורת TCP ב-IPv4 להגיע לקבוצת השרתים העורפיים
ig-a, יוצרים את הכלל הבא:gcloud compute firewall-rules create fw-allow-lb-access \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=10.1.2.0/24 \ --rules=tcp,udp,icmpיוצרים את כלל חומת האש
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כדי לאפשר לתעבורת IPv6 להגיע לקבוצת השרתים העורפיים
ig-a, יוצרים את הכלל הבא:gcloud compute firewall-rules create fw-allow-lb-access-ipv6 \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=IPV6_ADDRESS \ --rules=allמחליפים את
IPV6_ADDRESSבכתובת ה-IPv6 שהוקצתה ב-lb-subnet.יוצרים את כלל חומת האש
fw-allow-health-checkכדי לאפשר בדיקות תקינות. Google Cloudgcloud compute firewall-rules create fw-allow-health-check \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp,udp,icmpיוצרים את הכלל
fw-allow-health-check-ipv6כדי לאפשר Google Cloudבדיקות תקינות של IPv6.gcloud compute firewall-rules create fw-allow-health-check-ipv6 \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check-ipv6 \ --source-ranges=2600:2d00:1:b029::/64 \ --rules=tcp,udp,icmp
API
כדי ליצור את הכלל
fw-allow-lb-accessבחומת האש, שולחים בקשתPOSTאל ה-methodfirewalls.insert. מחליפים אתPROJECT_IDבמזהה שלGoogle Cloud הפרויקט.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-lb-access", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "10.1.2.0/24" ], "allPorts": true, "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" }, { "IPProtocol": "icmp" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }כדי ליצור את הכלל של חומת האש
fw-allow-lb-access-ipv6, שולחים בקשתPOSTאל ה-methodfirewalls.insert.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-lb-access-ipv6", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "IPV6_ADDRESS" ], "allPorts": true, "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" }, { "IPProtocol": "58" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }מחליפים את IPV6_ADDRESS בכתובת IPv6 שהוקצתה ב-
lb-subnet.כדי ליצור את כלל חומת האש
fw-allow-ssh, שולחים בקשתPOSTאל ה-methodfirewalls.insert:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-ssh", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "0.0.0.0/0" ], "targetTags": [ "allow-ssh" ], "allowed": [ { "IPProtocol": "tcp", "ports": [ "22" ] } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }כדי ליצור את כלל חומת האש
fw-allow-health-check, שולחים בקשתPOSTאל ה-methodfirewalls.insert:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-health-check", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "130.211.0.0/22", "35.191.0.0/16" ], "targetTags": [ "allow-health-check" ], "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" }, { "IPProtocol": "icmp" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }כדי ליצור את הכלל של חומת האש
fw-allow-health-check-ipv6, שולחים בקשתPOSTאל ה-methodfirewalls.insert.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-health-check-ipv6", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "2600:2d00:1:b029::/64" ], "targetTags": [ "allow-health-check-ipv6" ], "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
יצירת מכונות וירטואליות בעורף וקבוצות של מופעים
בתרחיש הזה של איזון עומסים, יוצרים קבוצת מופעי מכונה מנוהלים אזורית ב-Compute Engine ומתקינים שרת אינטרנט של Apache.
כדי לטפל בתנועה של IPv4 ו-IPv6, צריך להגדיר את מכונות ה-VM של הקצה העורפי כ-dual-stack. מגדירים את stack-type של המכונה הווירטואלית לערך IPV4_IPV6. המכונות הווירטואליות מקבלות בירושה גם את ההגדרה ipv6-access-type (בדוגמה הזו, INTERNAL) מרשת המשנה. פרטים נוספים על הדרישות של IPv6 זמינים במאמר סקירה כללית של מאזן עומסי רשת פנימי מסוג העברת תנועה (passthrough): כללי העברה.
אם רוצים להשתמש במכונות וירטואליות קיימות כשרתי קצה עורפי, צריך לעדכן את המכונות הווירטואליות כדי שיהיו בעלות תמיכה ב-dual-stack באמצעות הפקודה gcloud compute instances network-interfaces update.
במקרים שבהם מופעלות מכונות וירטואליות כשרתים עורפיים במאזני עומסי רשת פנימיים להעברת סיגנל ללא שינוי, צריך להפעיל בהן את סביבת האורח המתאימה של Linux, את סביבת האורח של Windows או תהליכים אחרים שמספקים פונקציונליות שוות ערך.
כדי לפשט את ההוראות, המכונות הווירטואליות של הבק-אנד מריצות Debian GNU/Linux 12.
יצירת קבוצת המופעים
המסוף
כדי לתמוך בתנועה מסוג IPv4 ו-IPv6, פועלים לפי השלבים הבאים:
יוצרים תבנית של הגדרות מכונה. נכנסים לדף Instance templates במסוף Google Cloud .
- לוחצים על Create instance template.
- בשדה Name (שם), מזינים
vm-a1. - מוודאים שדיסק האתחול מוגדר לקובץ אימג' של Debian, כמו Debian GNU/Linux 12 (bookworm). בהוראות האלה נעשה שימוש בפקודות שזמינות רק ב-Debian, כמו
apt-get. - מרחיבים את הקטע אפשרויות מתקדמות.
מרחיבים את הקטע ניהול ומעתיקים את הסקריפט הבא לשדה סקריפט לטעינה בזמן ההפעלה. סקריפט לטעינה בזמן ההפעלה גם מגדיר את שרת Apache להאזנה ביציאה
8080במקום ביציאה80.#! /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 sed -ire 's/^Listen 80$/Listen 8080/g' /etc/apache2/ports.conf systemctl restart apache2
מרחיבים את הקטע Networking (רשת) ומציינים את הפרטים הבאים:
- בשדה Network tags (תגי רשת), מוסיפים את הערכים
allow-sshו-allow-health-check-ipv6. - בקטע Network interfaces, לוחצים על ממשק default ומגדירים את השדות הבאים:
- רשת:
lb-network - Subnetwork:
lb-subnet - סוג מחסנית IP: IPv4 ו-IPv6 (מחסנית כפולה)
- רשת:
- בשדה Network tags (תגי רשת), מוסיפים את הערכים
לוחצים על יצירה.
כדי לתמוך בתנועה של IPv4, פועלים לפי השלבים הבאים:
יוצרים תבנית של הגדרות מכונה. נכנסים לדף Instance templates במסוף Google Cloud .
לוחצים על Create instance template.
- בשדה Name (שם), מזינים
vm-a1. - מוודאים שדיסק האתחול מוגדר לקובץ אימג' של Debian, כמו Debian GNU/Linux 12 (bookworm). בהוראות האלה נעשה שימוש בפקודות שזמינות רק ב-Debian, כמו
apt-get. - מרחיבים את הקטע אפשרויות מתקדמות.
מרחיבים את הקטע ניהול ומעתיקים את הסקריפט הבא לשדה סקריפט לטעינה בזמן ההפעלה. סקריפט לטעינה בזמן ההפעלה גם מגדיר את שרת Apache להאזנה ביציאה
8080במקום ביציאה80.#! /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 sed -ire 's/^Listen 80$/Listen 8080/g' /etc/apache2/ports.conf systemctl restart apache2
מרחיבים את הקטע Networking (רשת) ומציינים את הפרטים הבאים:
- בשדה Network tags (תגי רשת), מוסיפים את הערכים
allow-sshו-allow-health-check. - בקטע Network interfaces, לוחצים על ממשק default ומגדירים את השדות הבאים:
- רשת:
lb-network - Subnetwork:
lb-subnet - סוג מחסנית פרוטוקולי IP: IPv4 (מחסנית יחידה)
- רשת:
- בשדה Network tags (תגי רשת), מוסיפים את הערכים
לוחצים על יצירה.
- בשדה Name (שם), מזינים
יוצרים קבוצה של מופעי מכונה מנוהלים. נכנסים לדף Instance groups במסוף Google Cloud .
- לוחצים על יצירת קבוצת מופעים.
- בוחרים באפשרות New managed instance group (stateless) (קבוצת מופעי מכונה מנוהלים חדשה (בלי שמירת מצב)). מידע נוסף מופיע במאמר קבוצות של מכונות וירטואליות בלי שמירת מצב או עם שמירת מצב.
- בשדה Name (שם), מזינים
ig-a. - בקטע מיקום, בוחרים באפשרות אזור יחיד.
- בקטע אזור, בוחרים באפשרות
us-west1. - בשדה Zone, בוחרים באפשרות
us-west1-a. - בשדה תבנית של הגדרות מכונה, בוחרים באפשרות
vm-a1. מציינים את מספר המופעים שרוצים ליצור בקבוצה.
בדוגמה הזו, מציינים את האפשרויות הבאות בקטע התאמה אוטומטית לעומס:
- בקטע מצב שינוי גודל אוטומטי, בוחרים באפשרות
Off:do not autoscale. - בשדה מספר מופעים מקסימלי, מזינים
2.
- בקטע מצב שינוי גודל אוטומטי, בוחרים באפשרות
לוחצים על יצירה.
gcloud
ההוראות ל-gcloud במדריך הזה מבוססות על ההנחה שאתם משתמשים ב-Cloud Shell או בסביבה אחרת שבה מותקן bash.
יוצרים תבנית של הגדרות מכונה עם שרת HTTP באמצעות הפקודה
gcloud compute instance-templates create.סקריפט לטעינה בזמן ההפעלה גם מגדיר את שרת Apache להאזנה ביציאה
8080במקום ביציאה80.כדי לטפל בתנועה של IPv4 ו-IPv6, משתמשים בפקודה הבאה.
gcloud compute instance-templates create vm-a1 \ --region=us-west1 \ --network=lb-network \ --subnet=lb-subnet \ --ipv6-network-tier=PREMIUM \ --stack-type=IPV4_IPV6 \ --tags=allow-ssh \ --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 sed -ire "s/^Listen 80$/Listen 8080/g" /etc/apache2/ports.conf systemctl restart apache2'לחלופין, אם רוצים לטפל בתנועת IPv4 בלבד, משתמשים בפקודה הבאה.
gcloud compute instance-templates create vm-a1 \ --region=us-west1 \ --network=lb-network \ --subnet=lb-subnet \ --tags=allow-ssh \ --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 sed -ire "s/^Listen 80$/Listen 8080/g" /etc/apache2/ports.conf systemctl restart apache2'יוצרים קבוצת מופעי מכונה מנוהלים באזור באמצעות הפקודה
gcloud compute instance-groups managed create.gcloud compute instance-groups managed create ig-a \ --zone us-west1-a \ --size 2 \ --template vm-a1
api
כדי לטפל בתנועה של IPv4 ו-IPv6, פועלים לפי השלבים הבאים:.
כדי ליצור מכונה וירטואלית, שולחים בקשות
POSTל-methodinstances.insert:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "vm-a1", "tags": { "items": [ "allow-health-check-ipv6", "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "stackType": "IPV4_IPV6", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "vm-a1", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME", "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "metadata": { "items": [ { "key": "startup-script", "value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname="$(curl -H "Metadata-Flavor:Google" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)"\necho "Page served from: $vm_hostname" | \\\ntee /var/www/html/index.html\nsed -ire "s/^Listen 80$/Listen 8080/g" /etc/\\napache2/ports.conf\nsystemctl restart apache2" } ] }, "scheduling": { "preemptible": false }, "deletionProtection": false }
כדי לטפל בתנועה של IPv4, פועלים לפי השלבים הבאים.
כדי ליצור מכונה וירטואלית, שולחים בקשות
POSTל-methodinstances.insert:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "vm-a1", "tags": { "items": [ "allow-health-check", "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "stackType": "IPV4", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "vm-a1", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME", "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "metadata": { "items": [ { "key": "startup-script", "value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname="$(curl -H "Metadata-Flavor:Google" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)"\necho "Page served from: $vm_hostname" | \\\ntee /var/www/html/index.html\nsed -ire "s/^Listen 80$/Listen 8080/g" /etc/\\napache2/ports.conf\nsystemctl restart apache2" } ] }, "scheduling": { "preemptible": false }, "deletionProtection": false }כדי ליצור קבוצת מופעים, שולחים בקשת
POSTאל ה-methodinstanceGroups.insert.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups { "name": "ig-a", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet" }כדי להוסיף מכונות לכל קבוצת מכונות, שולחים בקשת
POSTאל ה-methodinstanceGroups.addInstances.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a/addInstances { "instances": [ { "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-a1" } ] }
יצירת מכונה וירטואלית של לקוח
בדוגמה הזו נוצרת מכונה וירטואלית של לקוח באותו אזור שבו נמצאות המכונות הווירטואליות של הבק-אנד (השרת). הלקוח משמש לאימות ההגדרה של מאזן העומסים ולהדגמת ההתנהגות הצפויה כפי שמתואר בקטע בדיקה.
בשביל תנועת IPv4 ו-IPv6:
המסוף
נכנסים לדף VM instances במסוף Google Cloud .
לוחצים על Create instance.
מגדירים את Name לערך
vm-client-ipv6.מגדירים את Zone לערך
us-west1-a.מרחיבים את הקטע אפשרויות מתקדמות ומבצעים את השינויים הבאים:
- מרחיבים את Networking ומוסיפים את
allow-sshאל Network tags. - בקטע Network interfaces, לוחצים על Edit, מבצעים את השינויים הבאים ולוחצים על Done:
- רשת:
lb-network - Subnet:
lb-subnet - סוג מחסנית IP: IPv4 ו-IPv6 (מחסנית כפולה)
- כתובת IP פנימית ראשית: זמנית (אוטומטית)
- כתובת IP חיצונית: זמנית
- רשת:
- מרחיבים את Networking ומוסיפים את
לוחצים על יצירה.
gcloud
המכונה הווירטואלית של הלקוח יכולה להיות בכל אזור באותו אזור שבו נמצא מאזן העומסים, והיא יכולה להשתמש בכל רשת משנה באותו אזור. בדוגמה הזו, הלקוח נמצא באזור us-west1-a והוא משתמש באותה רשת משנה כמו המכונות הווירטואליות של הבק-אנד.
gcloud compute instances create vm-client-ipv6 \
--zone=us-west1-a \
--image-family=debian-12 \
--image-project=debian-cloud \
--stack-type=IPV4_IPV6 \
--tags=allow-ssh \
--subnet=lb-subnet
api
שולחים בקשת POST אל ה-method instances.insert.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances
{
"name": "vm-client-ipv6",
"tags": {
"items": [
"allow-ssh"
]
},
"machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/machineTypes/e2-standard-2",
"canIpForward": false,
"networkInterfaces": [
{
"stackType": "IPV4_IPV6",
"network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
"subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
"accessConfigs": [
{
"type": "ONE_TO_ONE_NAT",
"name": "external-nat",
"networkTier": "PREMIUM"
}
]
}
],
"disks": [
{
"type": "PERSISTENT",
"boot": true,
"mode": "READ_WRITE",
"autoDelete": true,
"deviceName": "vm-client",
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/debian-image-name",
"diskType": "projects/PROJECT_ID/zones/us-west1-a/diskTypes/pd-standard",
"diskSizeGb": "10"
}
}
],
"scheduling": {
"preemptible": false
},
"deletionProtection": false
}
בשביל IPv4 traffic:
המסוף
נכנסים לדף VM instances במסוף Google Cloud .
לוחצים על Create instance.
בשדה Name (שם), מזינים
vm-client.בשדה Zone (אזור), מזינים
us-west1-a.מרחיבים את הקטע אפשרויות מתקדמות.
מרחיבים את Networking ומגדירים את השדות הבאים:
- בשדה Network tags (תגי רשת), מזינים
allow-ssh. - בקטע Network interfaces (ממשקי רשת), בוחרים באפשרויות הבאות:
- רשת:
lb-network - Subnet:
lb-subnet
- רשת:
- בשדה Network tags (תגי רשת), מזינים
לוחצים על יצירה.
gcloud
המכונה הווירטואלית של הלקוח יכולה להיות בכל אזור באותו אזור שבו נמצא מאזן העומסים, והיא יכולה להשתמש בכל רשת משנה באותו אזור. בדוגמה הזו, הלקוח נמצא באזור us-west1-a והוא משתמש באותה רשת משנה כמו המכונות הווירטואליות של הבק-אנד.
gcloud compute instances create vm-client \
--zone=us-west1-a \
--image-family=debian-12 \
--image-project=debian-cloud \
--tags=allow-ssh \
--subnet=lb-subnet
API
שולחים בקשת POST אל ה-method instances.insert.
מחליפים את PROJECT_ID במזהה של Google Cloud הפרויקט.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances
{
"name": "vm-client",
"tags": {
"items": [
"allow-ssh"
]
},
"machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/machineTypes/e2-standard-2",
"canIpForward": false,
"networkInterfaces": [
{
"network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
"subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
"accessConfigs": [
{
"type": "ONE_TO_ONE_NAT",
"name": "external-nat",
"networkTier": "PREMIUM"
}
]
}
],
"disks": [
{
"type": "PERSISTENT",
"boot": true,
"mode": "READ_WRITE",
"autoDelete": true,
"deviceName": "vm-client",
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/debian-image-name",
"diskType": "projects/PROJECT_ID/zones/us-west1-a/diskTypes/pd-standard",
"diskSizeGb": "10"
}
}
],
"scheduling": {
"preemptible": false
},
"deletionProtection": false
}
הגדרת רכיבים של מאזן עומסים
יצירת מאזן עומסים לכמה פרוטוקולים.
gcloud
יוצרים בדיקת תקינות HTTP ליציאה 80. בדיקת התקינות הזו משמשת לאימות התקינות של שרתי קצה בענן בקבוצת המופעים
ig-a.gcloud compute health-checks create http hc-http-80 \ --region=us-west1 \ --port=80יוצרים את שירות הקצה העורפי עם הפרוטוקול שמוגדר ל-
UNSPECIFIED:gcloud compute backend-services create be-ilb-l3-default \ --load-balancing-scheme=internal \ --protocol=UNSPECIFIED \ --region=us-west1 \ --health-checks=hc-http-80 \ --health-checks-region=us-west1מוסיפים את קבוצת המכונות לשירות הקצה העורפי:
gcloud compute backend-services add-backend be-ilb-l3-default \ --region=us-west1 \ --instance-group=ig-a \ --instance-group-zone=us-west1-aלתעבורת נתונים של IPv6: יוצרים כלל העברה עם הפרוטוקול שמוגדר ל-
L3_DEFAULTכדי לטפל בכל תעבורת הנתונים של פרוטוקול IPv6 הנתמך. צריך להגדיר את כל היציאות עם כללי העברה שלL3_DEFAULT.gcloud compute forwarding-rules create fr-ilb-ipv6 \ --region=us-west1 \ --load-balancing-scheme=internal \ --subnet=lb-subnet \ --ip-protocol=L3_DEFAULT \ --ports=ALL \ --backend-service=be-ilb-l3-default \ --backend-service-region=us-west1 \ --ip-version=IPV6
לתעבורת נתונים של IPv4: יוצרים כלל העברה עם הפרוטוקול שמוגדר ל-
L3_DEFAULTכדי לטפל בכל תעבורת הנתונים של פרוטוקול IPv4 הנתמך. צריך להגדיר את כל היציאות עם כללי העברה שלL3_DEFAULT. צריך להשתמש ב-10.1.2.99ככתובת ה-IP הפנימית.gcloud compute forwarding-rules create fr-ilb-l3-default \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=10.1.2.99 \ --ip-protocol=L3_DEFAULT \ --ports=ALL \ --backend-service=be-ilb-l3-default \ --backend-service-region=us-west1
API
כדי ליצור את בדיקת תקינות, שולחים בקשת
POSTאל ה-methodregionHealthChecks.insert. מחליפים אתPROJECT_IDבמזהה שלGoogle Cloud הפרויקט.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/regionHealthChecks { "name": "hc-http-80", "type": "HTTP", "httpHealthCheck": { "port": 80 } }כדי ליצור את השירות לקצה עורפי אזורי, שולחים בקשת
POSTאל ה-methodregionBackendServices.insert:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices { "name": "be-ilb-l3-default", "backends": [ { "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a", "balancingMode": "CONNECTION" } ], "healthChecks": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80" ], "loadBalancingScheme": "INTERNAL", "protocol": "UNSPECIFIED", "connectionDraining": { "drainingTimeoutSec": 0 } }לתנועת IPv6: יוצרים את כלל ההעברה על ידי שליחת בקשת
POSTאל ה-methodforwardingRules.insert.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb-ipv6", "IPProtocol": "L3_DEFAULT", "allPorts": true, "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb-l3-default", "ipVersion": "IPV6", "networkTier": "PREMIUM" }לתנועת IPv4: יוצרים את כלל ההעברה על ידי שליחת בקשת
POSTאל ה-methodforwardingRules.insert:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb-l3-default", "IPAddress": "10.1.2.99", "IPProtocol": "L3_DEFAULT", "allPorts": true, "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb-l3-default", "networkTier": "PREMIUM" }
בדיקת מאזן העומסים
הבדיקות הבאות מראות איך לאמת את ההגדרה של מאזן העומסים ואיך ללמוד על ההתנהגות הצפויה שלו.
בדיקת החיבור ממכונה וירטואלית של לקוח
בבדיקה הזו מתבצעת פנייה למאזן העומסים ממכונה וירטואלית נפרדת של לקוח, כלומר לא ממכונה וירטואלית של קצה עורפי ששייכת למאזן העומסים.
gcloud:IPv6
מתחברים למופע ה-VM של הלקוח.
gcloud compute ssh vm-client-ipv6 --zone=us-west1-a
תאר את כלל ההעברה של IPv6
fr-ilb-ipv6. שימו לב לIPV6_ADDRESSבתיאור.gcloud compute forwarding-rules describe fr-ilb-ipv6 --region=us-west1
מריצים את הפקודה הבאה מלקוחות עם קישוריות IPv6. מחליפים את
IPV6_ADDRESSבכתובת ה-IPv6 הארעית בכלל ההעברהfr-ilb-ipv6.curl -m 10 -s http://IPV6_ADDRESS:80
לדוגמה, אם כתובת ה-IPv6 שהוקצתה היא
[fd20:1db0:b882:802:0:46:0:0/96]:80, הפקודה צריכה להיראות כך:curl -m 10 -s http://[fd20:1db0:b882:802:0:46:0:0]:80
gcloud:IPv4
מתחברים למופע ה-VM של הלקוח.
gcloud compute ssh vm-client --zone=us-west1-a
תאר את כלל ההעברה של IPv4
fr-ilb.gcloud compute forwarding-rules describe fr-ilb --region=us-west1
שולחים בקשת אינטרנט למאזן העומסים באמצעות
curlכדי ליצור קשר עם כתובת ה-IP שלו. חוזרים על הבקשה כדי לראות שהתשובות מגיעות ממכונות וירטואליות שונות בעורף. השם של המכונה הווירטואלית שמייצרת את התגובה מוצג בטקסט בתגובת ה-HTML, בהתאם לתוכן של/var/www/html/index.htmlבכל מכונה וירטואלית בעורף. תשובות צפויות נראות כך:Page served from: vm-a1.curl http://10.1.2.99
כלל ההעברה מוגדר להצגת יציאות
80ו-53. כדי לשלוח תעבורה ליציאות האלה, מוסיפים נקודתיים (:) ואת מספר היציאה אחרי כתובת ה-IP, כך:curl http://10.1.2.99:80
ביצוע פינג לכתובת ה-IP של מאזן העומסים
הבדיקה הזו מדגימה התנהגות צפויה: אפשר לשלוח פינג לכתובת ה-IP של איזון העומסים.
gcloud:IPv6
מתחברים למופע ה-VM של הלקוח.
gcloud compute ssh vm-client-ipv6 --zone=us-west1-a
מנסים לבצע פינג לכתובת ה-IPv6 של מאזן העומסים. מחליפים את
IPV6_ADDRESSבכתובת ה-IPv6 הארעית בכלל ההעברהfr-ilb-ipv6.שימו לב שמתקבלת תשובה ושהפקודה
pingפועלת בדוגמה הזו.ping6 IPV6_ADDRESS
לדוגמה, אם כתובת ה-IPv6 שהוקצתה היא
[2001:db8:1:1:1:1:1:1/96], הפקודה תהיה:ping6 2001:db8:1:1:1:1:1:1
הפלט אמור להיראות כך:
@vm-client: ping
IPV6_ADDRESSPINGIPV6_ADDRESS(IPV6_ADDRESS) 56(84) bytes of data. 64 bytes fromIPV6_ADDRESS: icmp_seq=1 ttl=64 time=1.58 ms
gcloud:IPv4
מתחברים למופע ה-VM של הלקוח.
gcloud compute ssh vm-client --zone=us-west1-a
מנסים לבצע פינג לכתובת ה-IPv4 של מאזן העומסים. שימו לב שמתקבלת תשובה ושהפקודה
pingפועלת בדוגמה הזו.ping 10.1.2.99
הפלט שיתקבל:
@vm-client: ping 10.1.2.99 PING 10.1.2.99 (10.1.2.99) 56(84) bytes of data. 64 bytes from 10.1.2.99: icmp_seq=1 ttl=64 time=1.58 ms 64 bytes from 10.1.2.99: icmp_seq=2 ttl=64 time=0.242 ms 64 bytes from 10.1.2.99: icmp_seq=3 ttl=64 time=0.295 ms
אפשרויות הגדרה נוספות
בקטע הזה אנחנו מרחיבים את דוגמת ההגדרה ומציגים אפשרויות הגדרה חלופיות ונוספות. כל המשימות הן אופציונליות. אפשר לבצע אותן בכל סדר.
אתם יכולים לשמור כתובת IP פנימית סטטית לדוגמה. ההגדרה הזו מאפשרת לכמה כללי העברה פנימיים להשתמש באותה כתובת IP עם פרוטוקולים שונים ויציאות שונות.
שרתי הבק-אנד של מאזן העומסים לדוגמה עדיין צריכים להיות ממוקמים באזור us-west1.
התרשים הבא מציג את הארכיטקטורה של הדוגמה הזו.
אפשר גם להשתמש בהגדרות הבאות של כללי העברה:
כללי העברה עם כמה יציאות:
- פרוטוקול
TCPעם יציאות80,8080 - פרוטוקול
L3_DEFAULTעם יציאותALL
- פרוטוקול
כללי העברה עם כל היציאות:
- פרוטוקול
TCPעם יציאותALL - פרוטוקול
L3_DEFAULTעם יציאותALL
- פרוטוקול
שמירת כתובת IPv4 פנימית סטטית
שומרים כתובת IP פנימית סטטית בשביל 10.1.2.99 ומגדירים את הדגל --purpose שלה לערך SHARED_LOADBALANCER_VIP. חובה להשתמש בדגל --purpose כדי שכללי העברה רבים יוכלו להשתמש באותה כתובת IP פנימית.
gcloud
משתמשים בפקודה gcloud compute addresses create:
gcloud compute addresses create internal-lb-ipv4 \
--region us-west1 \
--subnet lb-subnet \
--purpose SHARED_LOADBALANCER_VIP \
--addresses 10.1.2.99
API
מבצעים קריאה ל-addresses.insert.
מחליפים את PROJECT_ID במזהה שלGoogle Cloud הפרויקט.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/addresses
גוף הבקשה חייב לכלול את addressType, שצריך להיות INTERNAL, את name של הכתובת ואת subnetwork שאליה שייכת כתובת ה-IP. חובה לציין את הערך address כ-10.1.2.99.
{
"addressType": "INTERNAL",
"name": "internal-lb-ipv4",
"subnetwork": "regions/us-west1/subnetworks/lb-subnet",
"purpose": "SHARED_LOADBALANCER_VIP",
"address": "10.1.2.99"
}
הגדרת רכיבים של מאזן עומסים
מגדירים שלושה מאזני עומסים עם הרכיבים הבאים:
- למאזן העומסים הראשון יש כלל העברה עם פרוטוקול
TCPויציאה80. תנועת TCP שמגיעה לכתובת ה-IP הפנימית ביציאה80מטופלת על ידי כלל ההעברהTCP. - למאזן העומסים השני יש כלל העברה עם פרוטוקול
UDPויציאה53. תעבורת UDP שמגיעה לכתובת ה-IP הפנימית ביציאה53מטופלת על ידי כלל ההעברהUDP. - למאזן העומסים השלישי יש כלל העברה עם פרוטוקול
L3_DEFAULTויציאהALL. כל התנועה האחרת שלא תואמת לכללי ההעברהTCPאוUDPמטופלת על ידי כלל ההעברהL3_DEFAULT. - כל שלושת מאזני העומסים חולקים את אותה כתובת IP פנימית סטטית (
internal-lb-ipv4) בכללי ההעברה שלהם.
יצירת מאזן העומסים הראשון
יוצרים את מאזן העומסים הראשון לתנועת TCP ביציאה 80.
gcloud
יוצרים את שירות הקצה העורפי לתנועת TCP:
gcloud compute backend-services create be-ilb \ --load-balancing-scheme=internal \ --protocol=tcp \ --region=us-west1 \ --health-checks=hc-http-80 \ --health-checks-region=us-west1מוסיפים את קבוצת המכונות לשירות הקצה העורפי:
gcloud compute backend-services add-backend be-ilb \ --region=us-west1 \ --instance-group=ig-a \ --instance-group-zone=us-west1-aיוצרים כלל העברה לשירות לקצה העורפי. משתמשים בכתובת IP פנימית סטטית שמורה (
internal-lb-ipv4) בשביל כתובת ה-IP הפנימית.gcloud compute forwarding-rules create fr-ilb \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=internal-lb-ipv4 \ --ip-protocol=TCP \ --ports=80 \ --backend-service=be-ilb \ --backend-service-region=us-west1
API
כדי ליצור את השירות לקצה עורפי אזורי, שולחים בקשת
POSTאל ה-methodregionBackendServices.insert. מחליפים אתPROJECT_IDבמזהה שלGoogle Cloud הפרויקט.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices { "name": "be-ilb", "backends": [ { "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a", "balancingMode": "CONNECTION" } ], "healthChecks": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80" ], "loadBalancingScheme": "INTERNAL", "protocol": "TCP", "connectionDraining": { "drainingTimeoutSec": 0 } }Create the forwarding rule by making a
POSTrequest to theforwardingRules.insertmethod:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb", "IPAddress": "internal-lb-ipv4", "IPProtocol": "TCP", "ports": [ "80" ], "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb", "networkTier": "PREMIUM" }
יצירת מאזן העומסים השני
יוצרים את מאזן העומסים השני לתנועת UDP ביציאה 53.
gcloud
יוצרים את שירות הקצה העורפי עם הפרוטוקול שמוגדר ל-
UDP:gcloud compute backend-services create be-ilb-udp \ --load-balancing-scheme=internal \ --protocol=UDP \ --region=us-west1 \ --health-checks=hc-http-80 \ --health-checks-region=us-west1מוסיפים את קבוצת המכונות לשירות הקצה העורפי:
gcloud compute backend-services add-backend be-ilb-udp \ --region=us-west1 \ --instance-group=ig-a \ --instance-group-zone=us-west1-aיוצרים כלל העברה לשירות לקצה העורפי. משתמשים בכתובת IP פנימית סטטית שמורה (
internal-lb-ipv4) בשביל כתובת ה-IP הפנימית.gcloud compute forwarding-rules create fr-ilb-udp \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=internal-lb-ipv4 \ --ip-protocol=UDP \ --ports=53 \ --backend-service=be-ilb-udp \ --backend-service-region=us-west1
API
כדי ליצור את השירות לקצה עורפי אזורי, שולחים בקשת
POSTאל ה-methodregionBackendServices.insert. מחליפים אתPROJECT_IDבמזהה שלGoogle Cloud הפרויקט.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices { "name": "be-ilb-udp", "backends": [ { "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a", "balancingMode": "CONNECTION" } ], "healthChecks": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80" ], "loadBalancingScheme": "INTERNAL", "protocol": "UDP", "connectionDraining": { "drainingTimeoutSec": 0 } }כדי ליצור את כלל ההעברה, שולחים בקשת
POSTאל ה-methodforwardingRules.insert:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb-udp", "IPAddress": "internal-lb-ipv4", "IPProtocol": "UDP", "ports": [ "53" ], "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb-udp", "networkTier": "PREMIUM" }
יצירת מאזן העומסים השלישי
יוצרים את כלל ההעברה של מאזן העומסים השלישי כדי להשתמש בכתובת ה-IP הפנימית הסטטית השמורה.
gcloud
יוצרים את כלל ההעברה עם הפרוטוקול שמוגדר ל-L3_DEFAULT כדי לטפל בכל תעבורת הפרוטוקול הנתמכת האחרת של IPv4. משתמשים בכתובת ה-IP הפנימית הסטטית השמורה (internal-lb-ipv4) ככתובת ה-IP הפנימית.
gcloud compute forwarding-rules create fr-ilb-l3-default \
--region=us-west1 \
--load-balancing-scheme=internal \
--network=lb-network \
--subnet=lb-subnet \
--address=internal-lb-ipv4 \
--ip-protocol=L3_DEFAULT \
--ports=ALL \
--backend-service=be-ilb-l3-default \
--backend-service-region=us-west1
API
כדי ליצור את כלל ההעברה, שולחים בקשת POST אל ה-method forwardingRules.insert.
מחליפים את PROJECT_ID במזהה שלGoogle Cloud הפרויקט.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules
{
"name": "fr-ilb-l3-default",
"IPAddress": "internal-lb-ipv4",
"IPProtocol": "L3_DEFAULT",
"ports": [
"ALL"
],
"loadBalancingScheme": "INTERNAL",
"subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
"network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
"backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb-l3-default",
"networkTier": "PREMIUM"
}
בדיקת מאזן העומסים
כדי לבדוק את מאזן העומסים, פועלים לפי השלבים שבקטע הקודם.
המאמרים הבאים
- כדי להבין מושגים חשובים, אפשר לעיין במאמר סקירה כללית של מאזן עומסי רשת פנימי להעברת סיגנל ללא שינוי.
- כדי ללמוד איך להגדיר יתירות כשל, אפשר לעיין במאמר בנושא הגדרת יתירות כשל למאזן עומסי רשת פנימי להעברת סיגנל ללא שינוי.
- מידע על הגדרת רישום ביומן ומעקב במאזנים פנימיים של עומסי רשת להעברת סיגנל ללא שינוי זמין במאמר רישום ביומן ומעקב במאזנים פנימיים של עומסי רשת להעברת סיגנל ללא שינוי.
- מידע על פתרון בעיות זמין במאמר פתרון בעיות של מאזני עומסים פנימיים מסוג passthrough.
- לפנות הגדרת איזון עומסים