במאמר הזה מוסבר איך ליצור מאזן עומסים אזורי חיצוני של אפליקציות כדי לנתב בקשות לתוכן סטטי אל קטגוריות של Cloud Storage.
לפני שמתחילים
חשוב לוודא שההגדרה עומדת בדרישות המוקדמות הבאות.
התקנת Google Cloud CLI
חלק מההוראות במדריך הזה אפשר לבצע רק באמצעות Google Cloud CLI. הוראות להתקנה מופיעות במאמר התקנת ה-CLI של gcloud.
אפשר למצוא פקודות שקשורות לאיזון עומסים במסמך הפניות ל-API ול-CLI של gcloud.
התפקידים הנדרשים
אם אתם יוצרי הפרויקט, מוקצה לכם התפקיד 'בעלים' (roles/owner). כברירת מחדל, התפקיד 'בעלים' (roles/owner) או התפקיד 'עריכה' (roles/editor) כוללים את ההרשאות שנדרשות כדי לבצע את הפעולות שמתוארות במאמר הזה.
אם אתם לא יוצרי הפרויקט, צריך להעניק את ההרשאות הנדרשות בחשבון המשתמש המתאים בפרויקט. לדוגמה, חשבון ראשי יכול להיות חשבון Google (למשתמשי קצה) או חשבון שירות.
כדי לקבל את ההרשאות שדרושות ליצירת קטגוריות של Cloud Storage ומשאבי רשת, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
-
יצירת רשת VPC ורכיבי איזון עומסים:
התפקיד 'אדמין רשתות ב-Compute' (
roles/compute.networkAdmin) -
יצירת קטגוריות של Cloud Storage:
התפקיד 'אדמין של אובייקטים באחסון' (
roles/storage.objectAdmin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
מידע נוסף על תפקידים והרשאות ב-Cloud Load Balancing זמין במאמר תפקידים והרשאות. למידע נוסף על הגדרת מדיניות IAM עם מענקים מותנים לכללי העברה, ראו תנאי IAM לכללי העברה.
הגדרת משאב של אישור SSL
אם משתמשים במאזן עומסים אזורי חיצוני של אפליקציות (ALB) שמשתמש ב-HTTPS כפרוטוקול של הבקשה והתגובה, אפשר ליצור משאב של אישור SSL באמצעות אישור SSL של Compute Engine או אישור של Certificate Manager.
בדוגמה הזו, יוצרים משאב של אישור SSL באמצעות Certificate Manager, כמו שמתואר באחד מהמסמכים הבאים:
- פריסת אישור אזורי בניהול Google עם הרשאת DNS
- פריסת אישור אזורי בניהול Google באמצעות Certificate Authority Service
- פריסת אישור אזורי בניהול עצמי
אחרי שיוצרים את האישור, אפשר לצרף אותו לשרת proxy של יעד HTTPS.
מומלץ להשתמש באישור שמנוהל על ידי Google.
מגבלות
המגבלות הבאות חלות על קטגוריות של Cloud Storage כשמשתמשים בהן כבק-אנד למאזן עומסים אזורי חיצוני של אפליקציות (ALB):
אין תמיכה בגישה לקטגוריה פרטית, ולכן קטגוריית קצה עורפי חייבת להיות נגישה לציבור דרך האינטרנט.
אי אפשר להשתמש בכתובות URL חתומות.
אי אפשר לשלב את Cloud CDN כשיוצרים קטגוריות קצה עורפי למאזן עומסים חיצוני אזורי של אפליקציות.
כשמשתמשים במאזן עומסים חיצוני אזורי של אפליקציות (ALB) כדי לגשת לקטגוריות של בק-אנד, רק שיטת HTTP
GETנתמכת. אפשר להוריד תוכן מהמאגר, אבל אי אפשר להעלות תוכן למאגר דרך מאזן העומסים האזורי החיצוני של האפליקציה.במאזן עומסים חיצוני אזורי של אפליקציות (ALB), יש תמיכה בקטגוריות של Cloud Storage רק באזור שבו מאזן העומסים מוגדר. אין תמיכה בקטגוריות בשני אזורים או במספר אזורים.
סקירה כללית של ההגדרה
בתרשים הבא מוצג מאזן עומסים אזורי חיצוני של אפליקציות עם קטגוריות קצה עורפי שנמצאות באותו אזור כמו מאזן העומסים.
לכלל ההעברה של מאזן העומסים החיצוני האזורי של אפליקציות יש כתובת IP חיצונית.
בקטעים הבאים מוגדרים המשאבים השונים כמו שמוצג בדיאגרמה הקודמת.
הגדרת הרשת והתת-רשת של שרת ה-proxy בלבד
בדוגמה הזו נעשה שימוש ברשת 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
הגדרת רשת המשנה ל-proxy בלבד
תת-רשת של פרוקסי בלבד מספקת קבוצה של כתובות IP ש- Google Cloud משתמש בהן כדי להפעיל פרוקסי של Envoy בשמכם. הפרוקסיים מסיימים חיבורים מהלקוח ויוצרים חיבורים חדשים לשרתי הקצה.
כל מאזני העומסים האזוריים שמבוססים על Envoy באותו אזור כמו רשת ה-VPC משתמשים בתת-הרשת הזו שמוגדרת ל-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
הגדרת קטגוריות של Cloud Storage
תהליך ההגדרה של קטגוריות Cloud Storage הוא כדלקמן:
- יוצרים את הקטגוריות.
- מעתיקים את התוכן לקטגוריות.
יצירת קטגוריות ב-Cloud Storage
בדוגמה הזו, יוצרים שתי קטגוריות של Cloud Storage באזור us-east1.
המסוף
- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
לוחצים על יצירה.
בקטע תחילת העבודה, מזינים שם ייחודי גלובלית בהתאם להנחיות למתן שמות.
לוחצים על בחירת המיקום לאחסון הנתונים.
מגדירים את סוג המיקום לאזור.
ברשימת האזורים, בוחרים באפשרות 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יוצרים את הקטגוריה השנייה גם באזור
us-east1באמצעות הפקודהgcloud storage buckets create.gcloud storage buckets create gs://BUCKET2_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-access
מחליפים את המשתנים BUCKET1_NAME ו-BUCKET2_NAME בשמות של הקטגוריות שלכם ב-Cloud Storage.
העתקת קובצי גרפיקה לקטגוריות של Cloud Storage
כדי שתוכלו לבדוק את ההגדרה, אתם יכולים להעתיק קובץ גרפי מקטגוריה ציבורית של Cloud Storage לקטגוריות שלכם ב-Cloud Storage.
מריצים את הפקודות הבאות ב-Cloud Shell, ומחליפים את משתני שם הקטגוריה בשמות הייחודיים של הקטגוריות של 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/
הגדרת קטגוריות של Cloud Storage כקריאות באופן ציבורי
כדי שכל האובייקטים בקטגוריה יהיו קריאים לכולם באינטרנט הציבורי, צריך להעניק לחשבון הראשי allUsers את התפקיד 'צפייה באובייקט אחסון' (roles/storage.objectViewer).
המסוף
כדי להעניק לכל המשתמשים גישה לצפייה באובייקטים בקטגוריות, חוזרים על התהליך הבא לכל קטגוריה:
- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
ברשימת הקטגוריות, לוחצים על השם של הקטגוריה שרוצים להגדיר כציבורית.
לוחצים על הכרטיסייה הרשאות.
בקטע 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
שמירת כתובת ה-IP של מאזן העומסים
שומרים כתובת IP חיצונית סטטית לכלל ההעברה של מאזן העומסים.
המסוף
נכנסים לדף Reserve a static address במסוף Google Cloud .
בוחרים שם לכתובת החדשה.
בשביל IP version, בוחרים IPv4.
בשדה Type, בוחרים באפשרות Regional.
בשדה Region, בוחרים באפשרות us-east1.
משאירים את האפשרות מצורף אל במצב ללא. אחרי שיוצרים את מאזן העומסים, כתובת ה-IP הזו מצורפת לכלל ההעברה של מאזן העומסים.
לוחצים על שמירה כדי לשמור את כתובת ה-IP.
gcloud
כדי לשמור כתובת IP חיצונית סטטית, משתמשים בפקודה
gcloud compute addresses create.gcloud compute addresses create ADDRESS_NAME \ --region=us-east1
מחליפים את מה שכתוב בשדות הבאים:
-
ADDRESS_NAME: השם שרוצים לתת לכתובת הזו.
-
משתמשים בפקודה
gcloud compute addresses describeכדי לראות את התוצאה:gcloud compute addresses describe ADDRESS_NAME
כתובת ה-IP שמוחזרת נקראת RESERVED_IP_ADDRESS בקטע הבא.
הגדרת מאזן העומסים עם קטגוריות אחסון בקצה העורפי
בקטע הזה מוסבר איך ליצור את המשאבים הבאים עבור מאזן עומסים חיצוני אזורי של אפליקציות (ALB):
- שתי קטגוריות קצה עורפי. קטגוריות הקצה העורפי משמשות כעטיפה לקטגוריות Cloud Storage שיצרתם קודם.
- מפה של כתובות URL
- שרת proxy יעד
- כלל העברה עם כתובות IP אזוריות. לכלל ההעברה יש כתובת IP חיצונית.
בדוגמה הזו, אפשר להשתמש ב-HTTP או ב-HTTPS כפרוטוקול של הבקשה והתשובה בין הלקוח לבין מאזן העומסים. כדי ליצור מאזן עומסים ב-HTTPS, צריך להוסיף משאב של אישור SSL לקצה הקדמי של מאזן העומסים.
כדי ליצור את רכיבי איזון העומסים שצוינו למעלה באמצעות ה-CLI של gcloud, פועלים לפי השלבים הבאים:
יוצרים שתי קטגוריות עורפיות באזור
us-east1באמצעות הפקודהgcloud beta compute backend-buckets create. לקטגוריות הקצה העורפי יש סכמת איזון עומסים שלEXTERNAL_MANAGED.gcloud beta compute backend-buckets create backend-bucket-cats \ --gcs-bucket-name=BUCKET1_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --region=us-east1gcloud beta compute backend-buckets create backend-bucket-dogs \ --gcs-bucket-name=BUCKET2_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --region=us-east1מחליפים את המשתנים
BUCKET1_NAMEו-BUCKET2_NAMEבשמות של הקטגוריות שלכם ב-Cloud Storage.יוצרים מפת URL כדי לנתב בקשות נכנסות לקטגוריית קצה עורפי באמצעות הפקודה
gcloud beta compute url-maps create.gcloud beta compute url-maps create URL_MAP_NAME \ --default-backend-bucket=backend-bucket-cats \ --region=us-east1מחליפים את המשתנה
URL_MAP_NAMEבשם של מפת URL.מגדירים את כללי המארח והנתיב של מפת ה-URL באמצעות הפקודה
gcloud beta 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 beta 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מחליפים את המשתנה
URL_MAP_NAMEבשם של מפת URL.יוצרים שרת proxy ליעד באמצעות הפקודה
gcloud compute target-http-proxies create.לתנועת HTTP, יוצרים שרת proxy של HTTP ליעד כדי להפנות בקשות למפת URL:
gcloud compute target-http-proxies create http-proxy \ --url-map=URL_MAP_NAME \ --region=us-east1מחליפים את המשתנה
URL_MAP_NAMEבשם של מפת URL.לתנועה מסוג HTTPS, יוצרים שרת proxy יעד מסוג HTTPS כדי להפנות בקשות למפת URL. ה-proxy הוא החלק במאזן העומסים שמכיל את אישור ה-SSL של מאזן עומסים ב-HTTPS. אחרי שיוצרים את האישור, אפשר לצרף אותו לשרת ה-proxy של יעד ה-HTTPS.
כדי לצרף אישור של Certificate Manager, מריצים את הפקודה הבאה:
gcloud compute target-https-proxies create https-proxy \ --url-map=URL_MAP_NAME \ --certificate-manager-certificates=CERTIFICATE_NAME \ --region=us-east1מחליפים את מה שכתוב בשדות הבאים:
URL_MAP_NAME: השם של מפת URL
CERTIFICATE_NAME: השם של אישור ה-SSL שיצרתם באמצעות Certificate Manager.
יוצרים כלל העברה עם כתובת IP באזור
us-east1באמצעות הפקודהgcloud compute forwarding-rules create.לתנועת HTTP, יוצרים כלל העברה אזורי כדי לנתב בקשות נכנסות אל ה-proxy של יעד HTTP:
gcloud compute forwarding-rules create http-fw-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network=lb-network \ --address=RESERVED_IP_ADDRESS \ --ports=80 \ --region=us-east1 \ --target-http-proxy=http-proxy \ --target-http-proxy-region=us-east1לתנועת HTTPS, יוצרים כלל העברה אזורי כדי לנתב בקשות נכנסות אל שרת ה-proxy של יעד ה-HTTPS:
gcloud compute forwarding-rules create https-fw-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network=lb-network \ --address=RESERVED_IP_ADDRESS \ --ports=443 \ --region=us-east1 \ --target-https-proxy=https-proxy \ --target-https-proxy-region=us-east1
שליחת בקשת HTTP למאזן העומסים
עכשיו ששירות איזון העומסים פועל, אפשר לשלוח בקשה לכלל ההעברה של מאזן העומסים.
מקבלים את כתובת ה-IP של כלל ההעברה של מאזן העומסים (
http-fw-rule), שנמצא באזורus-east1.gcloud compute forwarding-rules describe http-fw-rule \ --region=us-east1מעתיקים את כתובת ה-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
המאמרים הבאים
- סקירה כללית על מאזן עומסים חיצוני של אפליקציות (ALB)
- תת-רשתות של שרת proxy בלבד למאזני עומסים מבוססי Envoy
- ניהול אישורים
- ניקוי הגדרות של איזון עומסים