יצירת שירותי מיפוי של ניוד
בדף הזה מוסבר איך ספקי שירות יכולים לפרסם שירותים שמשתמשים במיפוי יציאות של Private Service Connect.
מיפוי יציאות ב-Private Service Connect מאפשר ללקוחות צרכנים לתקשר באופן פרטי עם יציאות שירות ספציפיות במכונות וירטואליות ספציפיות של בעלי שירות מנוהל, דרך נקודת קצה אחת של Private Service Connect.
לפני שמתחילים
- צריך להפעיל את Compute Engine API בפרויקט.
- חובה ליצור מכונות וירטואליות לכל אחת מנקודות הקצה ברשת שרוצים לצרף ל-NEG של מיפוי הפורטים. כל המכונות הווירטואליות צריכות להיות באותו אזור.
- מידע על שירותים שפורסמו
- מידע נוסף זמין במאמר מיפוי יציאות ב-Private Service Connect.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לכם כדי להתכונן לפרסום שירות עם מיפוי יציאות של Private Service Connect, אתם צריכים לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט של הבעלים:
-
אדמין של איזון עומסים ב-Compute (
roles/compute.loadBalancerAdmin) -
אדמין ברשת Compute (
roles/compute.networkAdmin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
יצירה ופרסום של שירות מיפוי יציאות
לשירותי מיפוי יציאות יש הגדרות דומות לאלה של מאזני עומסי רשת פנימיים להעברת סיגנל ללא שינוי, אבל התנועה לא מאוזנת. כדי ליצור ולפרסם שירות למיפוי יציאות, מבצעים את הפעולות הבאות:
- יצירת NEG למיפוי יציאות
- הוספת נקודות קצה ברשת ל-NEG של מיפוי יציאות
- יצירת שירות למיפוי יציאות
- פרסום שירות מיפוי הפורטים
יצירת NEG למיפוי יציאות
קבוצה של נקודות קצה ברשת עם מיפוי יציאות היא קבוצה אזורית של נקודות קצה ברשת עם סוג נקודת הקצה ברשת GCE_VM_IP_PORTMAP. אי אפשר לשנות את הסוג של NEG למיפוי יציאות אחרי שיוצרים אותו.
כשיוצרים NEG למיפוי יציאות, בוחרים תת-רשת. לנקודות הקצה ברשת שמשויכות ל-NEG של מיפוי הפורטים חייב להיות ממשק רשת ראשי ברשת המשנה הזו.
המסוף
נכנסים לדף Network Endpoint Groups במסוף Google Cloud .
לוחצים על יצירת קבוצת נקודות קצה ברשת.
מזינים שם.
לוחצים על סוג קבוצת נקודות קצה ברשת ובוחרים באפשרות מיפוי יציאות NEG (אזורי).
בוחרים Region.
בוחרים רשת.
בוחרים רשת משנה.
לוחצים על יצירה.
gcloud
משתמשים בפקודה network-endpoints-groups create.
gcloud compute network-endpoint-groups create NEG \
--region=REGION \
--network=NETWORK \
--subnet=SUBNET \
--network-endpoint-type=GCE_VM_IP_PORTMAP
מחליפים את מה שכתוב בשדות הבאים:
-
NEG: השם של ה-NEG למיפוי יציאות -
REGION: האזור של ה-NEG למיפוי יציאות -
NETWORK: רשת ה-VPC של ה-NEG למיפוי יציאות SUBNET: רשת המשנה של ה-NEG למיפוי יציאות
API
שולחים בקשת POST ל-method regionNetworkEndpointGroups.insert.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/networkEndpointGroups
{
"name": "NEG",
"networkEndpointType": "GCE_VM_IP_PORTMAP",
"network": "projects/PROJECT_ID/global/networks/NETWORK",
"subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET"
}
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט של מיפוי היציאות של ה-NEG -
REGION: האזור של ה-NEG למיפוי יציאות -
NEG: השם של ה-NEG למיפוי יציאות -
NETWORK: רשת ה-VPC של ה-NEG למיפוי יציאות SUBNET: רשת המשנה של ה-NEG למיפוי יציאות
הוספת נקודות קצה ברשת ל-NEG של מיפוי יציאות
יוצרים נקודת קצה אחת או יותר ברשת עם מיפוי יציאות ומצרפים אותן ל-NEG של מיפוי היציאות.
נקודות קצה (endpoints) ברשת ל-NEGs של מיפוי יציאות הן אזוריות, והן צריכות לעמוד בדרישות הבאות:
- כל נקודת קצה ברשת מתייחסת למכונה וירטואלית ב-Compute Engine שיש לה ממשק רשת ראשי באותה רשת משנה כמו NEG של מיפוי היציאות.
- כל נקודת קצה ברשת מתייחסת ליעד ייחודי של יציאת לקוח.
כל נקודת קצה ברשת צריכה להתייחס לשילוב ייחודי של יציאת שירות ומכונה וירטואלית.
המסוף
נכנסים לדף Network Endpoint Groups במסוף Google Cloud .
לוחצים על השם של קבוצת ה-NEG למיפוי יציאות שרוצים לעדכן.
לוחצים על הוספת נקודות קצה של רשת.
לוחצים על VM instance (מכונה וירטואלית) ואז בוחרים מכונה וירטואלית.
לוחצים על VM port 1 (יציאה של מכונה וירטואלית 1) ומזינים יציאה של שירות.
לוחצים על Client port 1 (יציאת לקוח 1) ומזינים יציאת יעד של לקוח.
לכל נקודת קצה נוספת ברשת שרוצים להוסיף, לוחצים על הוספת נקודת קצה ברשת ומזינים את הפרטים של נקודת הקצה ברשת.
לוחצים על יצירה.
gcloud
משתמשים בפקודה network-endpoint-groups update. כוללים דגל --add-endpoint לכל נקודת קצה ברשת שרוצים לצרף.
gcloud compute network-endpoint-groups update NEG \
--region=REGION \
--add-endpoint=client-destination-port=CLIENT_DESTINATION_PORT_1,instance=projects/PROJECT_ID/zones/ZONE_1/instances/VM_1_NAME,port=VM_1_PORT \
--add-endpoint=client-destination-port=CLIENT_DESTINATION_PORT_2,instance=projects/PROJECT_ID/zones/ZONE_2/instances/VM_2_NAME,port=VM_2_PORT
מחליפים את מה שכתוב בשדות הבאים:
-
NEG: השם של ה-NEG למיפוי יציאות -
REGION: האזור של ה-NEG למיפוי יציאות -
CLIENT_DESTINATION_PORT_1: יציאת היעד של הלקוח של נקודת הקצה הראשונה ברשת -
PROJECT_ID: מזהה הפרויקט של פרויקט היצרן -
ZONE_1: האזור של נקודת הקצה הראשונה ברשת -
VM_1_NAME: השם של מכונת היעד הראשונה בנקודת הקצה של הרשת -
VM_1_PORT: יציאת השירות של נקודת הקצה הראשונה ברשת -
CLIENT_DESTINATION_PORT_2: יציאת היעד של הלקוח בנקודת הקצה השנייה ברשת -
ZONE_2: האזור של נקודת הקצה השנייה ברשת -
VM_2_NAME: השם של מכונת היעד הוירטואלית של נקודת הקצה השנייה ברשת -
VM_2_PORT: יציאת השירות של נקודת הקצה השנייה ברשת
API
שולחים בקשת POST ל-method regionNetworkEndpointGroups.attachNetworkEndpoints.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/networkEndpointGroups/NEG/attachNetworkEndpoints
{
"networkEndpoints": [
{
"clientDestinationPort":CLIENT_DESTINATION_PORT_1,
"instance": "projects/PROJECT_ID/zones/ZONE_1/instances/VM_1_NAME",
"port": SERVICE_PORT_1
},
{
"clientDestinationPort": CLIENT_DESTINATION_PORT_2,
"instance": "projects/PROJECT_ID/zones/ZONE_2/instances/VM_2_NAME",
"port": SERVICE_PORT_2
}
]
}
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט של פרויקט היצרן -
REGION: האזור של ה-NEG למיפוי יציאות -
NEG: השם של ה-NEG למיפוי יציאות -
CLIENT_DESTINATION_PORT_1: יציאת היעד של הלקוח של נקודת הקצה הראשונה ברשת -
ZONE_1: האזור של נקודת הקצה הראשונה ברשת -
VM_1_NAME: השם של מכונת היעד הראשונה בנקודת הקצה של הרשת -
SERVICE_PORT_1: יציאת השירות של נקודת הקצה הראשונה ברשת -
CLIENT_DESTINATION_PORT_2: יציאת היעד של הלקוח בנקודת הקצה השנייה ברשת -
ZONE_2: האזור של נקודת הקצה השנייה ברשת -
VM_2_NAME: השם של מכונת היעד הוירטואלית של נקודת הקצה השנייה ברשת -
SERVICE_PORT_2: יציאת השירות של נקודת הקצה השנייה ברשת
יצירת שירות למיפוי יציאות
כדי ליצור שירות מיפוי יציאות, מבצעים את השלבים הבאים.
אחרי שמוסיפים את ה-NEG, אי אפשר לשנות את מיפוי הפורטים של ה-NEG שמשויך לשירות קצה עורפי. עם זאת, אפשר לעדכן את נקודות הקצה ברשת של ה-NEG למיפוי יציאות.
אי אפשר לעדכן את החיבור של כלל העברה אחרי שהוא נוצר. אם אתם צריכים להתחבר לשירות לקצה העורפי אחר, מחקו את כלל ההעברה ואז צרו כלל חדש.
המסוף
התחלת ההגדרה
נכנסים לדף Load balancing במסוף Google Cloud .
- לוחצים על Create load balancer (יצירת מאזן עומסים).
- בקטע Type of load balancer (סוג מאזן העומסים), בוחרים באפשרות Network Load Balancer (TCP/UDP/SSL) (מאזן עומסים ברשת (TCP/UDP/SSL)) ולוחצים על Next (הבא).
- בקטע Proxy or passthrough (פרוקסי או העברה), בוחרים באפשרות Passthrough load balancer (מאזן עומסים להעברה) ולוחצים על Next (הבא).
- בקטע גלוי לכולם או פנימי, בוחרים באפשרות פנימי ולוחצים על הבא.
- לוחצים על Configure (הגדרה).
הגדרה בסיסית
- מזינים שם של מאזן עומסים.
- בוחרים Region.
- בוחרים רשת.
Backend configuration
- בקטע Backend type (סוג קצה עורפי), בוחרים באפשרות Port mapping network endpoint group (קבוצה של נקודות קצה ברשת למיפוי יציאות).
- בוחרים קבוצה של נקודות קצה ברשת למיפוי יציאות.
Frontend configuration
- לוחצים על Frontend configuration.
- אופציונלי: מזינים שם.
- אופציונלי: מזינים תיאור.
- בוחרים פרוטוקול.
- בוחרים רשת משנה.
- לוחצים על סיום.
- לוחצים על יצירה.
gcloud
כדי ליצור שירות לקצה העורפי, משתמשים בפקודה
backend-services create.gcloud compute backend-services create SERVICE \ --load-balancing-scheme=internal \ --region=REGION \ --network=NETWORKמחליפים את מה שכתוב בשדות הבאים:
-
SERVICE: השם של שירות הקצה העורפי -
REGION: האזור של שירות הקצה העורפי -
NETWORK: רשת ה-VPC של השירות לקצה העורפי
-
כדי להוסיף את ה-NEG של מיפוי היציאות לשירות הקצה העורפי, משתמשים בפקודה
backend-services add-backend.אי אפשר להוסיף כמה קבוצות NEG למיפוי יציאות לשירות לקצה העורפי יחיד.
gcloud compute backend-services add-backend SERVICE \ --network-endpoint-group=NEG \ --network-endpoint-group-region=REGIONמחליפים את
NEGבשם של קבוצת ה-NEG למיפוי יציאות.כדי ליצור כלל העברה לשירות מיפוי היציאות, משתמשים בפקודה
forwarding-rules create.צריך להגדיר את כלל ההעברה כך שיעביר תנועה לכל יציאות היעד של הלקוח.
gcloud compute forwarding-rules create RULE \ --load-balancing-scheme=INTERNAL \ --ip-protocol=PROTOCOL \ --network=NETWORK \ --subnet=SUBNET \ --address=IP_ADDRESS \ --ports=ALL \ --region=REGION \ --backend-service=SERVICEמחליפים את מה שכתוב בשדות הבאים:
-
RULE: השם של כלל ההעברה -
PROTOCOL: הפרוטוקול של כלל ההעברה, שיכול להיותTCPאוUDP -
SUBNET: תת-הרשת של היצרן, שחייבת להיות אותה תת-רשת שמשויכת ל-NEG של מיפוי הפורטים -
IP_ADDRESS: כתובת ה-IP של כלל ההעברה, שחייבת להיות מטווח כתובות ה-IP של רשת המשנה של היצרן
-
API
כדי ליצור שירות קצה עורפי, שולחים בקשת
POSTאל ה-methodregionBackendServices.insert.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices { "name": "SERVICE", "loadBalancingScheme": "INTERNAL", "network": "projects/PROJECT_ID/global/networks/NETWORK" }מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: המזהה של הפרויקט של שירות ה-Backend -
REGION: האזור של שירות הקצה העורפי -
SERVICE: השם של שירות הקצה העורפי -
NETWORK: רשת ה-VPC של ספק השירות
-
כדי להוסיף את ה-NEG של מיפוי הפורטים לשירות הקצה העורפי, שולחים
PATCHבקשה ל-methodregionBackendServices.patch.אי אפשר להוסיף כמה קבוצות NEG למיפוי יציאות לשירות לקצה העורפי יחיד.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/SERVICE { "backends": [ { "group": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/networkEndpointGroups/NEG" } ] }מחליפים את
NEGבשם של קבוצת ה-NEG למיפוי יציאות.כדי ליצור כלל העברה לשירות מיפוי הפורטים, שולחים בקשת
POSTאל ה-methodforwardingRules.insert.צריך להגדיר את כלל ההעברה כך שיעביר תנועה לכל יציאות היעד של הלקוח.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules { "name": "RULE", "loadBalancingScheme": "INTERNAL", "IPProtocol": "PROTOCOL", "network": "projects/PROJECT_ID/global/networks/NETWORK", "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET", "IPAddress": "IP_ADDRESS", "allPorts": true, "backendService": "projects/PROJECT_ID/regions/REGION/backendServices/SERVICE" }מחליפים את מה שכתוב בשדות הבאים:
-
RULE: השם של כלל ההעברה -
PROTOCOL: הפרוטוקול של כלל ההעברה, שיכול להיותTCPאוUDP -
SUBNET: תת-הרשת של היצרן, שחייבת להיות אותה תת-רשת שמשויכת ל-NEG של מיפוי הפורטים -
IP_ADDRESS: כתובת ה-IP של כלל ההעברה, שחייבת להיות מטווח כתובות ה-IP של רשת המשנה של הספק
-
פרסום שירות מיפוי הפורטים
כדי להפוך את שירות מיפוי הפורטים לזמין לצרכנים, צריך לפרסם את השירות על ידי יצירת קובץ מצורף לשירות. כשיוצרים את קובץ השירות המצורף, צריך לציין את כלל ההעברה שמשויך לשירות מיפוי הפורטים.