במאמר הזה מוצגות שתי הגדרות לדוגמה להגדרת מאזן עומסים חיצוני של אפליקציות (ALB) אזורי בסביבת VPC משותף עם קטגוריות של Cloud Storage:
- בדוגמה הראשונה, כל הרכיבים של מאזן העומסים והעורפים נוצרים בפרויקט שירות אחד.
- בדוגמה השנייה, רכיבי הקצה הקדמי של מאזן העומסים ומפת URL נוצרים בפרויקט שירות אחד, בעוד שקטגוריית קצה עורפי של מאזן העומסים וקטגוריות של Cloud Storage נוצרות בפרויקט שירות אחר.
בשני המקרים צריך לבצע את אותה הגדרה ראשונית כדי להעניק את התפקידים הנדרשים ולהגדיר VPC משותף לפני שמתחילים ליצור מאזני עומסים.
בנוסף להגדרות לדוגמה שצוינו במסמך הזה, אפשר גם להגדיר פריסה של VPC משותף שבה הקצה הקדמי ומפת URL של מאזן העומסים נוצרים בפרויקט המארח, והקטגוריות של הקצה העורפי, יחד עם הקטגוריות של Cloud Storage, נוצרות בפרויקט שירות. מידע נוסף על ארכיטקטורות תקפות אחרות של VPC משותף זמין במאמר ארכיטקטורות של VPC משותף.
אם אתם לא רוצים להשתמש ברשת VPC משותפת, תוכלו לעיין במאמר בנושא הגדרה של מאזן עומסים של אפליקציות (ALB) חיצוני אזורי עם קטגוריות של Cloud Storage.
לפני שמתחילים
חשוב לוודא שההגדרה עומדת בדרישות המוקדמות הבאות.
יצירת Google Cloud פרויקטים
יוצרים Google Cloud פרויקטים: פרויקט מארח אחד ושני פרויקטים של שירותים.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להגדרה של מאזן עומסים חיצוני של אפליקציות אזוריות בסביבת Shared VPC עם קטגוריות של Cloud Storage, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
-
כדי להגדיר VPC משותף:
אדמין של VPC משותף ב-Compute (
roles/compute.xpnAdmin) בפרויקט המארח -
כדי לתת לאדמין של פרויקט שירות גישה לשימוש ברשת VPC משותפת:
משתמש ברשת Compute (
roles/compute.networkUser) בפרויקט המארח -
כדי ליצור קטגוריות ב-Cloud Storage:
Storage Object Admin (
roles/storage.objectAdmin) בפרויקט השירות -
כדי ליצור את משאבי איזון העומסים: אדמין רשת ב-Compute (
roles/compute.networkAdmin) בפרויקט השירות -
כדי ליצור מכונות של Compute Engine:
Compute Instance Admin (
roles/compute.instanceAdmin.v1) בפרויקט השירות -
כדי ליצור ולשנות אישורי SSL ב-Compute Engine:
אדמין אבטחה ב-Compute (
roles/compute.securityAdmin) בפרויקט השירות -
כדי ליצור ולשנות אישורי SSL ב-Certificate Manager:
בעלים של Certificate Manager (
roles/certificatemanager.owner) בפרויקט השירות -
כדי להפנות אל בקטנד באקטים בפרויקטים אחרים של שירותים:
Compute Load Balancer Services User (
roles/compute.loadBalancerServiceUser) בפרויקט השירות
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
הגדרת סביבת VPC משותף
כדי להגדיר סביבת VPC משותף, מבצעים את השלבים הבאים בפרויקט המארח:
לא צריך לבצע את השלבים שבקטע הזה בכל פעם שרוצים ליצור מאזן עומסים חדש. עם זאת, לפני שיוצרים את איזון העומסים, צריך לוודא שיש גישה למשאבים שמתוארים כאן.
בדוגמה הזו נעשה שימוש ברשת VPC, באזור ובתת-רשת של פרוקסי בלבד:
רשת. הרשת היא רשת VPC במצב מותאם אישית בשם
lb-network.תת-רשת לשרתי proxy של Envoy. רשת משנה בשם
proxy-only-subnet-usבאזורus-east1משתמשת ב-10.129.0.0/23לטווח ה-IP הראשי שלה.
הגדרת רשת VPC במצב מותאם אישית
המסוף
נכנסים לדף VPC networks במסוף Google Cloud .
לוחצים על יצירת רשת VPC.
בשדה Name (שם), מזינים
lb-network.לוחצים על יצירה.
gcloud
יוצרים רשת VPC מותאמת אישית בשם
lb-networkבאמצעות הפקודהgcloud compute networks create.gcloud compute networks create lb-network \ --subnet-mode=custom \ --project=HOST_PROJECT_IDמחליפים את
HOST_PROJECT_IDבGoogle Cloud מזהה הפרויקט שהוקצה לפרויקט שהופעל כפרויקט מארח בסביבת VPC משותף.
הגדרת רשת משנה לשרת proxy בלבד
תת-רשת של פרוקסי בלבד מספקת קבוצה של כתובות IP ש- Google Cloud משתמש בהן כדי להפעיל פרוקסי של Envoy בשמכם. הפרוקסיים מסיימים חיבורים מהלקוח ויוצרים חיבורים חדשים לשרתי הקצה.
כל מאזני העומסים האזוריים שמבוססים על Envoy באותו אזור כמו רשת ה-VPC משתמשים ברשת המשנה הזו שמשמשת רק כשרת proxy. יכולה להיות רק תת-רשת פעילה אחת של שרת proxy בלבד לכל מטרה נתונה, לכל אזור ולכל רשת.
המסוף
נכנסים לדף VPC networks במסוף Google Cloud .
לוחצים על השם של רשת ה-VPC שיצרתם.
בכרטיסייה Subnet, לוחצים על Add subnet.
הזן את פריטי המידע הבאים:
- Name (שם):
proxy-only-subnet-us - אזור:
us-east1 - מטרה: Regional Managed Proxy
- טווח כתובות IP:
10.129.0.0/23
- Name (שם):
לוחצים על הוספה.
gcloud
יוצרים תת-רשת לשרת proxy בלבד באזור
us-east1באמצעות הפקודהgcloud compute networks subnets create.gcloud compute networks subnets create proxy-only-subnet-us \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=us-east1 \ --network=lb-network \ --range=10.129.0.0/23 \ --project=HOST_PROJECT_IDמחליפים את
HOST_PROJECT_IDבמזהה הפרויקטGoogle Cloud שהוקצה לפרויקט המארח.
הגדרת VPC משותף בפרויקט המארח
אתם יכולים להפעיל פרויקט מארח של VPC משותף ולצרף אליו פרויקטים של שירותים, כדי שהפרויקטים של השירותים יוכלו להשתמש ברשת ה-VPC המשותפת. כדי להגדיר VPC משותף בפרויקט המארח, אפשר לעיין בדפים הבאים:
אחרי שמבצעים את השלבים הקודמים, אפשר להמשיך לאחת מההגדרות הבאות:
הגדרת מאזן עומסים בפרויקט השירות
בדוגמה הזו נוצר מאזן עומסים חיצוני אזורי של אפליקציות (ALB), שבו כל רכיבי איזון העומסים (כלל העברה, שרת proxy ביעד, מפת URL וקטגוריית קצה עורפי) וקטגוריות של Cloud Storage נוצרים בפרויקט השירות.
משאבי הרשת של מאזן העומסים החיצוני האזורי של אפליקציות, כמו תת-הרשת של שרת ה-proxy בלבד, נוצרים בפרויקט המארח.
בקטע הזה מוסבר איך להגדיר את מאזן העומסים ואת הקצוות העורפיים.
בדוגמאות להגדרות שמופיעות בדף הזה, מוגדרת באופן מפורש כתובת IP שמורה לכלל ההעברה של מאזן העומסים החיצוני האזורי של האפליקציות, במקום לאפשר הקצאה של כתובת IP ארעית. כשיטה מומלצת, כדאי להקצות כתובות IP לכללי העברה.
הגדרת קטגוריות של Cloud Storage
תהליך ההגדרה של קטגוריות Cloud Storage הוא כדלקמן:
- יצירת קטגוריות של Cloud Storage.
- העתקת התוכן לקטגוריות של Cloud Storage.
- הגדרת קטגוריות של Cloud Storage כנגישות באופן ציבורי.
יצירת קטגוריות של Cloud Storage
בדוגמה הזו, יוצרים שתי קטגוריות של Cloud Storage באזור us-east1.
המסוף
- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
לוחצים על יצירה.
בקטע Get started (תחילת העבודה), מזינים שם ייחודי גלובלית שעומד בהנחיות למתן שמות.
לוחצים על Choose where to store your data (בחירת המיקום לאחסון הנתונים).
מגדירים את סוג המיקום לאזור.
ברשימת האזורים, בוחרים באפשרות us-east1.
לוחצים על יצירה.
לוחצים על Buckets כדי לחזור לדף Cloud Storage Buckets. כך יוצרים קטגוריה שנייה באזור us-east1.
gcloud
יוצרים את הקטגוריה הראשונה באזור
us-east1באמצעות הפקודהgcloud storage buckets create.gcloud storage buckets create gs://BUCKET1_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-access \ --project=SERVICE_PROJECT_IDיוצרים את הקטגוריה השנייה גם באזור
us-east1באמצעות הפקודהgcloud storage buckets create.gcloud storage buckets create gs://BUCKET2_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-access \ --project=SERVICE_PROJECT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
BUCKET1_NAMEו-BUCKET2_NAME: השם של הקטגוריות של Cloud Storage -
SERVICE_PROJECT_ID: Google Cloud מזהה הפרויקט שהוקצה לפרויקט השירות
העתקת התוכן לקטגוריות של Cloud Storage
כדי לאכלס את הקטגוריות של Cloud Storage, מעתיקים קובץ גרפי מקטגוריה ציבורית של Cloud Storage לקטגוריות שלכם ב-Cloud Storage.
gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET1_NAME/love-to-purr/
gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET2_NAME/love-to-fetch/
מחליפים את BUCKET1_NAME ואת BUCKET2_NAME בשמות של הקטגוריות שלכם ב-Cloud Storage.
הגדרת קטגוריות של Cloud Storage כנגישות באופן ציבורי
כדי שכל האובייקטים בקטגוריה יהיו נגישים לכולם באינטרנט הציבורי, צריך להעניק לישות allUsers את התפקיד 'צפייה באובייקט אחסון' (roles/storage.objectViewer).
המסוף
כדי להעניק לכל המשתמשים גישה לצפייה באובייקטים בקטגוריות, חוזרים על התהליך הבא לכל קטגוריה:
- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
ברשימת הקטגוריות, לוחצים על השם של הקטגוריה שרוצים להגדיר כציבורית.
לוחצים על הכרטיסייה Permissions (הרשאות).
בקטע Permissions, לוחצים על הלחצן Grant access. מופיעה תיבת הדו-שיח Grant access.
בשדה New principals, מזינים
allUsers.בשדה Select a role, מזינים
Storage Object Viewerבתיבת הסינון ובוחרים Storage Object Viewer מהתוצאות המסוננות.לוחצים על Save.
לוחצים על Allow public access.
gcloud
כדי להעניק לכל המשתמשים גישה לצפייה באובייקטים בקטגוריות, מריצים את הפקודה buckets add-iam-policy-binding.
gcloud storage buckets add-iam-policy-binding gs://BUCKET1_NAME --member=allUsers --role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME --member=allUsers --role=roles/storage.objectViewer
מחליפים את BUCKET1_NAME ואת BUCKET2_NAME בשמות של הקטגוריות שלכם ב-Cloud Storage.
שמירת כתובת ה-IP של מאזן העומסים
שומרים כתובת IP חיצונית סטטית לכלל ההעברה של מאזן העומסים.
המסוף
נכנסים לדף Reserve a static address במסוף Google Cloud .
בשדה שם, מזינים שם לכתובת החדשה.
בשביל IP version, בוחרים IPv4.
בקטע Type, בוחרים באפשרות Regional.
בשדה Region, בוחרים us-east1.
משאירים את האפשרות מצורף ל במצב ללא. אחרי שיוצרים את מאזן העומסים, כתובת ה-IP הזו מצורפת לכלל ההעברה של מאזן העומסים.
לוחצים על שמירה כדי לשמור את כתובת ה-IP.
gcloud
כדי לשמור כתובת IP חיצונית סטטית באמצעות
gcloud compute, משתמשים בפקודהcompute addresses create.gcloud compute addresses create ADDRESS_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_IDמחליפים את מה שכתוב בשדות הבאים:
ADDRESS_NAME: השם שרוצים להקצות לכתובת ה-IP הזו.-
REGION: האזור שבו רוצים לשריין את הכתובת הזו. האזור הזה צריך להיות זהה לאזור של מאזן העומסים. -
SERVICE_PROJECT_ID: מזהה הפרויקט שהוקצה לפרויקט השירות. Google Cloud
משתמשים בפקודה
compute addresses describeכדי לראות את התוצאה:gcloud compute addresses describe ADDRESS_NAME
מחליפים את
ADDRESS_NAMEבשם שהקציתם לכתובת ה-IP.כתובת ה-IP שמוחזרת נקראת
RESERVED_IP_ADDRESSבקטעים הבאים.
הגדרת משאב של אישור SSL
במאזן עומסים חיצוני אזורי של אפליקציות (ALB) שמשתמש ב-HTTPS כפרוטוקול של הבקשות והתגובות, אפשר ליצור משאב של אישור SSL באמצעות אישור SSL של Compute Engine או אישור של Certificate Manager.
בדוגמה הזו, יוצרים משאב של אישור SSL באמצעות Certificate Manager, כמו שמתואר באחד מהמסמכים הבאים:
- פריסת אישור אזורי שמנוהל על ידי Google עם הרשאת DNS
- פריסת אישור אזורי בניהול Google באמצעות CA Service
- פריסת אישור אזורי בניהול עצמי
אחרי שיוצרים את האישור, אפשר לצרף אותו לשרת proxy של יעד HTTPS.
מומלץ להשתמש באישור שמנוהל על ידי Google.
הגדרת מאזן העומסים עם קטגוריות קצה עורפי
בקטע הזה מוסבר איך ליצור את המשאבים הבאים עבור מאזן עומסים אזורי חיצוני של אפליקציות (ALB):
- שתי קטגוריות קצה עורפי. קטגוריות הקצה העורפי משמשות כעטיפה לקטגוריות של Cloud Storage שיצרתם קודם.
- מפת URL
- שרת proxy יעד
- כלל העברה עם כתובות IP אזוריות. לכלל ההעברה יש כתובת IP חיצונית.
בדוגמה הזו, אפשר להשתמש ב-HTTP או ב-HTTPS כפרוטוקול של הבקשה והתשובה בין הלקוח לבין מאזן העומסים. כדי ליצור מאזן עומסים ב-HTTPS, צריך להוסיף משאב של אישור SSL לקצה הקדמי של מאזן העומסים.
כדי ליצור את רכיבי איזון העומסים שצוינו למעלה באמצעות ה-CLI של gcloud, פועלים לפי השלבים הבאים:
יוצרים שתי קטגוריות של שרת קצה עורפי באמצעות הפקודה
gcloud compute backend-buckets create. לקטגוריות הקצה העורפי יש סכמת איזון עומסים שלEXTERNAL_MANAGED.gcloud compute backend-buckets create backend-bucket-cats \ --gcs-bucket-name=BUCKET1_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --region=us-east1 \ --project=SERVICE_PROJECT_IDgcloud compute backend-buckets create backend-bucket-dogs \ --gcs-bucket-name=BUCKET2_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --region=us-east1 \ --project=SERVICE_PROJECT_IDמחליפים את מה שכתוב בשדות הבאים:
-
BUCKET1_NAMEו-BUCKET2_NAME: השם של קטגוריות Cloud Storage -
SERVICE_PROJECT_ID: Google Cloud מזהה הפרויקט שהוקצה לפרויקט השירות
-
יוצרים מפת URL כדי לנתב בקשות נכנסות לקטגוריית קצה עורפי באמצעות הפקודה
gcloud compute url-maps create.gcloud compute url-maps create URL_MAP_NAME \ --default-backend-bucket=backend-bucket-cats \ --region=us-east1 \ --project=SERVICE_PROJECT_IDמחליפים את מה שכתוב בשדות הבאים:
-
URL_MAP_NAME: השם של מפת URL -
SERVICE_PROJECT_ID: Google Cloud מזהה הפרויקט שהוקצה לפרויקט השירות
-
מגדירים את כללי המארח והנתיב של מפת URL באמצעות הפקודה
gcloud compute url-maps add-path-matcher.בדוגמה הזו, קטגוריית הקצה העורפי שמוגדרת כברירת מחדל היא
backend-bucket-cats, שמטפלת בכל הנתיבים שקיימים בה. עם זאת, כל בקשה שמכוונת אלhttp://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpgמשתמשת בבק-אנדbackend-bucket-dogs. לדוגמה, אם התיקייה/love-to-fetch/קיימת גם בקצה העורפי שמוגדר כברירת מחדל (backend-bucket-cats), מאזן העומסים נותן עדיפות לקצה העורפיbackend-bucket-dogsכי יש כלל נתיב ספציפי ל-/love-to-fetch/*.gcloud compute url-maps add-path-matcher URL_MAP_NAME \ --path-matcher-name=path-matcher-pets \ --new-hosts=* \ --backend-bucket-path-rules="/love-to-fetch/*=backend-bucket-dogs" \ --default-backend-bucket=backend-bucket-cats \ --region=us-east1 \ --project=SERVICE_PROJECT_IDמחליפים את מה שכתוב בשדות הבאים:
-
URL_MAP_NAME: השם של מפת URL -
SERVICE_PROJECT_ID: Google Cloud מזהה הפרויקט שהוקצה לפרויקט השירות
-
יוצרים שרת proxy ליעד באמצעות הפקודה
gcloud compute target-http-proxies create.לתעבורת נתונים של HTTP, יוצרים Proxy יעד ל-HTTP כדי להפנות בקשות למפת URL:
gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \ --url-map=URL_MAP_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_IDמחליפים את מה שכתוב בשדות הבאים:
-
TARGET_HTTP_PROXY_NAME: השם של ה-proxy ל-HTTP עם היעד -
URL_MAP_NAME: השם של מפת URL -
SERVICE_PROJECT_ID: Google Cloud מזהה הפרויקט שהוקצה לפרויקט השירות
לתנועה מסוג HTTPS, יוצרים שרת proxy יעד מסוג HTTPS כדי להפנות בקשות למפת URL. ה-proxy הוא החלק במאזן העומסים שמכיל את אישור ה-SSL של מאזן עומסים ב-HTTPS. אחרי שיוצרים את האישור, אפשר לצרף אותו לשרת ה-proxy של יעד ה-HTTPS.
כדי לצרף אישור של Certificate Manager, מריצים את הפקודה הבאה:
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --url-map=URL_MAP_NAME \ --certificate-manager-certificates=CERTIFICATE_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_IDמחליפים את מה שכתוב בשדות הבאים:
-
TARGET_HTTPS_PROXY_NAME: השם של שרת ה-proxy ל-HTTPS של היעד -
URL_MAP_NAME: השם של מפת URL -
CERTIFICATE_NAME: השם של אישור ה-SSL של Certificate Manager -
SERVICE_PROJECT_ID: Google Cloud מזהה הפרויקט שהוקצה לפרויקט השירות
-
יוצרים כלל העברה עם כתובת IP באזור
us-east1באמצעות הפקודהgcloud compute forwarding-rules create.לתנועת HTTP, יוצרים כלל העברה אזורי כדי לנתב בקשות נכנסות אל שרת ה-proxy של יעד HTTP:
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --address=RESERVED_IP_ADDRESS \ --ports=80 \ --region=us-east1 \ --target-http-proxy=TARGET_HTTP_PROXY_NAME \ --target-http-proxy-region=us-east1 \ --project=SERVICE_PROJECT_IDמחליפים את מה שכתוב בשדות הבאים:
-
FORWARDING_RULE_NAME: השם של כלל ההעברה -
HOST_PROJECT_ID: Google Cloudמזהה הפרויקט שהוקצה לפרויקט המארח RESERVED_IP_ADDRESS: כתובת ה-IP השמורה-
TARGET_HTTP_PROXY_NAME: השם של ה-proxy ל-HTTP עם היעד -
SERVICE_PROJECT_ID: Google Cloud מזהה הפרויקט שהוקצה לפרויקט השירות
לתנועת HTTPS, יוצרים כלל העברה אזורי כדי לנתב בקשות נכנסות ל-proxy היעד של HTTPS:
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --address=RESERVED_IP_ADDRESS \ --ports=443 \ --region=us-east1 \ --target-https-proxy=TARGET_HTTPS_PROXY_NAME \ --target-https-proxy-region=us-east1 \ --project=SERVICE_PROJECT_IDמחליפים את מה שכתוב בשדות הבאים:
-
FORWARDING_RULE_NAME: השם של כלל ההעברה -
HOST_PROJECT_ID: Google Cloudמזהה הפרויקט שהוקצה לפרויקט המארח RESERVED_IP_ADDRESS: כתובת ה-IP השמורה-
TARGET_HTTPS_PROXY_NAME: השם של שרת ה-proxy ל-HTTPS של היעד -
SERVICE_PROJECT_ID: Google Cloud מזהה הפרויקט שהוקצה לפרויקט השירות
-
שליחת בקשת HTTP למאזן העומסים
עכשיו, כששירות איזון העומסים פועל, אפשר לשלוח תעבורה לכלל ההעברה של מאזן העומסים.
מקבלים את כתובת ה-IP של כלל ההעברה של מאזן העומסים, שנמצא באזור
us-east1.gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_IDמחליפים את מה שכתוב בשדות הבאים:
-
FORWARDING_RULE_NAME: השם של כלל ההעברה -
SERVICE_PROJECT_ID: Google Cloud מזהה הפרויקט שהוקצה לפרויקט השירות
מעתיקים את כתובת ה-IP שמוחזרת כדי להשתמש בה כ-
FORWARDING_RULE_IP_ADDRESSבשלב הבא.-
שליחת בקשת HTTP לכתובת ה-IP הווירטואלית (VIP) של כלל ההעברה באמצעות curl.
curl http://FORWARDING_RULE_IP_ADDRESS/love-to-purr/three-cats.jpg --output three-cats.jpg
curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
מחליפים את
FORWARDING_RULE_IP_ADDRESSבכתובת ה-IP של כלל ההעברה של מאזן העומסים.
הגדרת מאזן עומסים עם הגדרה חוצת-פרויקטים
בדוגמה הקודמת בדף הזה מוסבר איך להגדיר פריסה של VPC משותף שבה כל הרכיבים של מאזן העומסים והקצה העורפי שלו נוצרים בפרויקט השירות.
מאזני עומסים חיצוניים אזוריים של אפליקציות מאפשרים גם להגדיר פריסות של VPC משותף שבהן מפת URL בפרויקט מארח או בפרויקט שירות אחד יכולה להפנות לדליים של קצה עורפי שנמצאים בכמה פרויקטים של שירות בסביבות של VPC משותף.
אפשר להשתמש בשלבים שבסעיף הזה כהפניה להגדרת כל אחת מהקומבינציות הנתמכות שמפורטות כאן:
- כלל העברה, שרת proxy ליעד ומפת URL בפרויקט המארח, וקטגוריית קצה עורפי בפרויקט שירות
- כלל העברה, שרת proxy ביעד ומפת URL בפרויקט שירות אחד, וקטגוריית קצה עורפי בפרויקט שירות אחר
בקטע הזה נציג דוגמה להגדרה השנייה.
סקירה כללית של ההגדרה
בדוגמה הזו מוגדר מאזן עומסים עם קצה קדמי וקצה עורפי בשני פרויקטים שונים של שירותים.
אם עדיין לא עשיתם זאת, אתם צריכים להגדיר את התפקידים הנדרשים וליצור סביבת VPC משותפת. הוראות מפורטות מופיעות בתחילת הדף הזה בקטעים:
הגדרת הקטגוריות של Cloud Storage וקטגוריות הקצה העורפי בפרויקט שירות B
צריך לבצע את כל השלבים בקטע הזה בפרויקט השירות B.
התהליך להגדרת קטגוריות של Cloud Storage וקטגוריות של קצה עורפי הוא כדלקמן:
- יצירת קטגוריות של Cloud Storage.
- העתקת התוכן לקטגוריות של Cloud Storage.
- הגדרת קטגוריות של Cloud Storage כנגישות באופן ציבורי.
- יוצרים קטגוריות של קצה עורפי ומפנים אותן לקטגוריות של Cloud Storage.
יצירת קטגוריות של Cloud Storage
המסוף
- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
לוחצים על יצירה.
בקטע Get started (תחילת העבודה), מזינים שם ייחודי גלובלית שעומד בהנחיות למתן שמות.
לוחצים על Choose where to store your data (בחירת המיקום לאחסון הנתונים).
מגדירים את סוג המיקום לאזור.
ברשימת האזורים, בוחרים באפשרות us-east1.
לוחצים על יצירה.
לוחצים על Buckets כדי לחזור לדף Cloud Storage Buckets. כך יוצרים קטגוריה שנייה באזור us-east1.
gcloud
יוצרים את הקטגוריה הראשונה באזור
us-east1באמצעות הפקודהgcloud storage buckets create.gcloud storage buckets create gs://BUCKET1_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-access \ --project=SERVICE_PROJECT_B_IDיוצרים את הקטגוריה השנייה גם באזור
us-east1באמצעות הפקודהgcloud storage buckets create.gcloud storage buckets create gs://BUCKET2_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-access \ --project=SERVICE_PROJECT_B_ID
מחליפים את מה שכתוב בשדות הבאים:
-
BUCKET1_NAMEו-BUCKET2_NAME: השם של הקטגוריה של Cloud Storage -
SERVICE_PROJECT_B_ID: Google Cloud מזהה הפרויקט שהוקצה לפרויקט השירות B
העתקת התוכן לקטגוריות של Cloud Storage
כדי לאכלס את הקטגוריות של Cloud Storage, מעתיקים קובץ גרפי מקטגוריה ציבורית של Cloud Storage לקטגוריות שלכם ב-Cloud Storage.
gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET1_NAME/love-to-purr/
gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET2_NAME/love-to-fetch/
מחליפים את BUCKET1_NAME ואת BUCKET2_NAME בשמות של הקטגוריות שלכם ב-Cloud Storage.
הגדרת קטגוריות של Cloud Storage כנגישות באופן ציבורי
כדי שכל האובייקטים בקטגוריה יהיו נגישים לכולם באינטרנט הציבורי, צריך להעניק לישות allUsers את התפקיד 'צפייה באובייקט אחסון' (roles/storage.objectViewer).
המסוף
כדי להעניק לכל המשתמשים גישה לצפייה באובייקטים בקטגוריות, חוזרים על התהליך הבא לכל קטגוריה:
- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
ברשימת הקטגוריות, לוחצים על השם של הקטגוריה שרוצים להגדיר כציבורית.
לוחצים על הכרטיסייה Permissions (הרשאות).
בקטע Permissions, לוחצים על הלחצן Grant access. מופיעה תיבת הדו-שיח Grant access.
בשדה New principals, מזינים
allUsers.בשדה Select a role, מזינים
Storage Object Viewerבתיבת הסינון ובוחרים Storage Object Viewer מהתוצאות המסוננות.לוחצים על Save.
לוחצים על Allow public access.
gcloud
כדי להעניק לכל המשתמשים גישה לצפייה באובייקטים בקטגוריות, מריצים את הפקודה buckets add-iam-policy-binding.
gcloud storage buckets add-iam-policy-binding gs://BUCKET1_NAME --member=allUsers --role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME --member=allUsers --role=roles/storage.objectViewer
מחליפים את BUCKET1_NAME ואת BUCKET2_NAME בשמות של הקטגוריות שלכם ב-Cloud Storage.
יצירת קטגוריות של backend והפניה שלהן לקטגוריות של Cloud Storage
כדי ליצור את דלי ה-Backend, פועלים לפי השלבים הבאים:
יוצרים שתי קטגוריות של שרת קצה עורפי באמצעות הפקודה
gcloud compute backend-buckets create. לקטגוריות הקצה העורפי יש סכמת איזון עומסים שלEXTERNAL_MANAGED.gcloud compute backend-buckets create backend-bucket-cats \ --gcs-bucket-name=BUCKET1_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --region=us-east1 \ --project=SERVICE_PROJECT_B_IDgcloud compute backend-buckets create backend-bucket-dogs \ --gcs-bucket-name=BUCKET2_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --region=us-east1 \ --project=SERVICE_PROJECT_B_IDמחליפים את מה שכתוב בשדות הבאים:
-
BUCKET1_NAMEו-BUCKET2_NAME: השם של קטגוריות Cloud Storage -
SERVICE_PROJECT_ID: Google Cloud מזהה הפרויקט שהוקצה לפרויקט השירות
-
הגדרת רכיבי הקצה הקדמי של מאזן העומסים בפרויקט השירות A
צריך לבצע את כל השלבים בקטע הזה בפרויקט השירות A.
בפרויקט השירות A, צריך ליצור את רכיבי איזון העומסים הבאים בקצה הקדמי:
- משאב של אישור SSL שמצורף לשרת ה-proxy של היעד. אפשר לפעול לפי השלבים שמפורטים בקטע הקודם כדי ליצור את אישור ה-SSL.
- כתובת IP לכלל ההעברה של מאזן העומסים. אפשר לפעול לפי השלבים שמפורטים בקטע הקודם כדי ליצור כתובת IP.
- מפת URL שמפנה לקטגוריות קצה עורפי בפרויקט השירות ב'
- שרת proxy יעד
- כלל העברה עם כתובות IP אזוריות. לכלל ההעברה יש כתובת IP חיצונית.
כדי ליצור את מפת ה-URL, את שרת ה-proxy של היעד ואת כלל ההעברה, מבצעים את הפעולות הבאות:
יוצרים מפת URL כדי לנתב בקשות נכנסות לקטגוריית קצה עורפי באמצעות הפקודה
gcloud compute url-maps create.gcloud compute url-maps create URL_MAP_NAME \ --default-backend-bucket=backend-bucket-cats \ --region=us-east1 \ --project=SERVICE_PROJECT_A_IDמחליפים את מה שכתוב בשדות הבאים:
-
URL_MAP_NAME: השם של מפת URL -
SERVICE_PROJECT_A_ID: Google Cloudמזהה הפרויקט שהוקצה לפרויקט השירות א'
-
מגדירים את כללי המארח והנתיב של מפת URL באמצעות הפקודה
gcloud compute url-maps add-path-matcher.בדוגמה הזו, קטגוריית הקצה העורפי שמוגדרת כברירת מחדל היא
backend-bucket-cats, שמטפלת בכל הנתיבים שקיימים בה. עם זאת, כל בקשה שמכוונת אלhttp://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpgמשתמשת בבק-אנדbackend-bucket-dogs. לדוגמה, אם התיקייה/love-to-fetch/קיימת גם בקצה העורפי שמוגדר כברירת מחדל (backend-bucket-cats), מאזן העומסים נותן עדיפות לקצה העורפיbackend-bucket-dogsכי יש כלל נתיב ספציפי ל-/love-to-fetch/*.gcloud compute url-maps add-path-matcher URL_MAP_NAME \ --path-matcher-name=path-matcher-pets \ --new-hosts=* \ --backend-bucket-path-rules="/love-to-fetch/*=projects/SERVICE_PROJECT_B_ID/regional/backendBuckets/backend-bucket-dogs" \ --default-backend-bucket=projects/SERVICE_PROJECT_B_ID/regional/backendBuckets/backend-bucket-cats \ --region=us-east1 \ --project=SERVICE_PROJECT_A_IDמחליפים את מה שכתוב בשדות הבאים:
-
URL_MAP_NAME: השם של מפת URL -
SERVICE_PROJECT_A_ID: Google Cloudמזהה הפרויקט שהוקצה לפרויקט השירות א'
-
יוצרים שרת proxy ליעד באמצעות הפקודה
gcloud compute target-http-proxies create.לתעבורת נתונים של HTTP, יוצרים Proxy יעד ל-HTTP כדי להפנות בקשות למפת URL:
gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \ --url-map=URL_MAP_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_A_IDמחליפים את מה שכתוב בשדות הבאים:
-
TARGET_HTTP_PROXY_NAME: השם של ה-proxy ל-HTTP עם היעד -
URL_MAP_NAME: השם של מפת URL -
SERVICE_PROJECT_A_ID: Google Cloudמזהה הפרויקט שהוקצה לפרויקט השירות א'
לתנועה מסוג HTTPS, יוצרים שרת proxy יעד מסוג HTTPS כדי להפנות בקשות למפת URL. ה-proxy הוא החלק במאזן העומסים שמכיל את אישור ה-SSL של מאזן עומסים ב-HTTPS. אחרי שיוצרים את האישור, אפשר לצרף אותו לשרת ה-proxy של יעד ה-HTTPS.
כדי לצרף אישור של Certificate Manager, מריצים את הפקודה הבאה:
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --url-map=lb-map \ --certificate-manager-certificates=CERTIFICATE_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_A_IDמחליפים את מה שכתוב בשדות הבאים:
-
TARGET_HTTPS_PROXY_NAME: השם של שרת ה-proxy ל-HTTPS של היעד -
URL_MAP_NAME: השם של מפת URL -
CERTIFICATE_NAME: השם של אישור ה-SSL של Certificate Manager -
SERVICE_PROJECT_A_ID: Google Cloudמזהה הפרויקט שהוקצה לפרויקט השירות א'
-
יוצרים כלל העברה עם כתובת IP באזור
asia-east1באמצעות הפקודהgcloud compute forwarding-rules create.לתנועת HTTP, יוצרים כלל העברה אזורי כדי לנתב בקשות נכנסות אל שרת ה-proxy של יעד HTTP:
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --address=RESERVED_IP_ADDRESS \ --ports=80 \ --region=us-east1 \ --target-http-proxy=TARGET_HTTP_PROXY_NAME \ --target-http-proxy-region=us-east1 \ --project=SERVICE_PROJECT_A_IDמחליפים את מה שכתוב בשדות הבאים:
-
FORWARDING_RULE_NAME: השם של כלל ההעברה -
HOST_PROJECT_ID: Google Cloudמזהה הפרויקט שהוקצה לפרויקט המארח RESERVED_IP_ADDRESS: כתובת ה-IP השמורה-
TARGET_HTTP_PROXY_NAME: השם של ה-proxy ל-HTTP עם היעד -
SERVICE_PROJECT_A_ID: Google Cloudמזהה הפרויקט שהוקצה לפרויקט השירות א'
לתנועת HTTPS, יוצרים כלל העברה אזורי כדי לנתב בקשות נכנסות ל-proxy היעד של HTTPS:
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --address=RESERVED_IP_ADDRESS \ --ports=443 \ --region=us-east1 \ --target-https-proxy=TARGET_HTTPS_PROXY_NAME \ --target-https-proxy-region=us-east1 \ --project=SERVICE_PROJECT_A_IDמחליפים את מה שכתוב בשדות הבאים:
-
FORWARDING_RULE_NAME: השם של כלל ההעברה -
HOST_PROJECT_ID: Google Cloudמזהה הפרויקט שהוקצה לפרויקט המארח RESERVED_IP_ADDRESS: כתובת ה-IP השמורה-
TARGET_HTTPS_PROXY_NAME: השם של שרת ה-proxy ל-HTTPS של היעד -
SERVICE_PROJECT_A_ID: Google Cloudמזהה הפרויקט שהוקצה לפרויקט השירות א'
-
הענקת הרשאה לאדמין של מאזן עומסים של Compute להשתמש בקטגוריית קצה עורפי בפרויקט השירות
אם רוצים שמאזני עומסים יפנו לקטגוריות של קצה עורפי בפרויקטים אחרים של שירותים, לאדמין של מאזן העומסים צריכה להיות הרשאת compute.backendBuckets.use. כדי להעניק את ההרשאה הזו, אפשר להשתמש בתפקיד ה-IAM המוגדר מראש שנקרא 'משתמש בשירותי איזון עומסים של Compute' (roles/compute.loadBalancerServiceUser). התפקיד הזה צריך להיות מוענק על ידי אדמין של פרויקט השירות, ואפשר להחיל אותו ברמת פרויקט השירות או ברמת קטגוריית קצה עורפי ספציפית.
בדוגמה הזו, אדמין של פרויקט שירות מפרויקט שירות ב' צריך להריץ אחת מהפקודות הבאות כדי להעניק את ההרשאה compute.backendBuckets.use לאדמין של מאזן עומסים מפרויקט שירות א'. אפשר לעשות את זה ברמת הפרויקט (לכל קטגוריות הקצה העורפי בפרויקט) או לכל קטגוריית קצה עורפי בנפרד.
המסוף
הרשאות ברמת הפרויקט
כדי להעניק הרשאות לכל קטגוריות ה-backend בפרויקט, פועלים לפי השלבים הבאים.
כדי להשלים את השלב הזה, צריך את ההרשאות compute.regionBackendBuckets.setIamPolicy ו-resourcemanager.projects.setIamPolicy.
נכנסים לדף IAM במסוף Google Cloud .
בוחרים את הפרויקט הרצוי.
לוחצים על Grant access.
בשדה New principals, מזינים את כתובת האימייל או מזהה אחר של החשבון הראשי.
בקטע הקצאת תפקידים, לוחצים על הוספת תפקידים.
בתיבת הדו-שיח Select roles (בחירת תפקידים), בשדה Search for roles (חיפוש תפקידים), מזינים את התפקיד
Compute Load Balancer Services User.מסמנים את התיבה Compute Load Balancer Services User.
לוחצים על אישור.
אם רוצים, מוסיפים תנאי לתפקיד.
לוחצים על Save.
הרשאות ברמת המשאב לקטגוריות ספציפיות של backend
כדי להעניק הרשאות לקטגוריות ספציפיות של backend בפרויקט:
כדי להשלים את השלב הזה, נדרשת ההרשאה compute.regionBackendBuckets.setIamPolicy.
נכנסים לדף Backends במסוף Google Cloud .
ברשימת ה-backends, בוחרים את backend bucket שרוצים לתת לו גישה ולוחצים על Permissions.
לוחצים על Add principal.
בשדה New principals, מזינים את כתובת האימייל או מזהה אחר של החשבון הראשי.
ברשימה Select a role בוחרים באפשרות Compute Load Balancer Services User.
לוחצים על Save.
gcloud
הרשאות ברמת הפרויקט
כדי להעניק הרשאות לכל קטגוריות ה-backend בפרויקט, פועלים לפי השלבים הבאים.
כדי להשלים את השלב הזה, צריך את ההרשאות compute.regionBackendBuckets.setIamPolicy ו-resourcemanager.projects.setIamPolicy.
gcloud projects add-iam-policy-binding SERVICE_PROJECT_B_ID \
--member="user:LOAD_BALANCER_ADMIN" \
--role="roles/compute.loadBalancerServiceUser"
מחליפים את מה שכתוב בשדות הבאים:
-
SERVICE_PROJECT_B_ID: מזהה הפרויקט שהוקצה לפרויקט השירות B Google Cloud -
LOAD_BALANCER_ADMIN: החשבון הראשי שרוצים להוסיף לו את הקישור
הרשאות ברמת המשאב לקטגוריות ספציפיות של backend
ברמת קטגוריית קצה עורפי, אדמינים של פרויקט שירות יכולים להשתמש באחת מהפקודות הבאות כדי להקצות את התפקיד 'משתמש בשירותי איזון עומסים ב-Compute' (roles/compute.loadBalancerServiceUser):
gcloud projects add-iam-policy-bindingcommandgcloud compute backend-buckets add-iam-policy-bindingcommand
משתמשים בפקודה gcloud projects add-iam-policy-binding כדי להעניק את התפקיד 'משתמש בשירותים של מאזן עומסים של Compute'.
כדי להשלים את השלב הזה, צריך את ההרשאה compute.regionBackendBuckets.setIamPolicy.
gcloud projects add-iam-policy-binding SERVICE_PROJECT_B_ID \
--member="user:LOAD_BALANCER_ADMIN" \
--role="roles/compute.loadBalancerServiceUser" \
--condition='expression=resource.name=="projects/SERVICE_PROJECT_B_ID/regions/REGION/backendBuckets/BACKEND_BUCKET_NAME",title=Shared VPC condition'
-
SERVICE_PROJECT_B_ID: מזהה הפרויקט שהוקצה לפרויקט השירות ב' Google Cloud -
LOAD_BALANCER_ADMIN: החשבון הראשי שרוצים להוסיף לו את הקישור -
REGION: Google Cloud האזור שבו נמצאת קטגוריית קצה עורפי -
BACKEND_BUCKET_NAME: השם של קטגוריית ה-Backend
gcloud compute backend-buckets add-iam-policy-binding כדי להקצות את התפקיד 'משתמש בשירותי איזון עומסים ב-Compute'.
gcloud compute backend-buckets add-iam-policy-binding BACKEND_BUCKET_NAME \
--member="user:LOAD_BALANCER_ADMIN" \
--role="roles/compute.loadBalancerServiceUser" \
--project=SERVICE_PROJECT_B_ID \
--region=REGION
שליחת בקשת HTTP למאזן העומסים
עכשיו, כששירות איזון העומסים פועל, אפשר לשלוח תעבורה לכלל ההעברה של מאזן העומסים.
מקבלים את כתובת ה-IP של כלל ההעברה של מאזן העומסים, שנמצא באזור
us-east1.gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_A_IDמחליפים את מה שכתוב בשדות הבאים:
-
FORWARDING_RULE_NAME: השם של כלל ההעברה -
SERVICE_PROJECT_ID: Google Cloud מזהה הפרויקט שהוקצה לפרויקט השירות
מעתיקים את כתובת ה-IP שמוחזרת כדי להשתמש בה כ-
FORWARDING_RULE_IP_ADDRESSבשלב הבא.-
שליחת בקשת HTTP לכתובת ה-VIP של כלל ההעברה באמצעות curl.
curl http://FORWARDING_RULE_IP_ADDRESS/love-to-purr/three-cats.jpg --output three-cats.jpg
curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
מחליפים את
FORWARDING_RULE_IP_ADDRESSבכתובת ה-IP של כלל ההעברה של מאזן העומסים.
המאמרים הבאים
- סקירה כללית של מאזן עומסים חיצוני של אפליקציות (ALB)
- תת-רשתות של שרת proxy בלבד למאזני עומסים מבוססי Envoy
- ניהול אישורים
- ניקוי הגדרות של איזון עומסים