הגדרה של מאזן עומסים חיצוני אזורי של אפליקציות (ALB) עם קטגוריות של Cloud Storage

במאמר הזה מוסבר איך ליצור מאזן עומסים אזורי חיצוני של אפליקציות כדי לנתב בקשות לתוכן סטטי אל קטגוריות של Cloud Storage.

לפני שמתחילים

חשוב לוודא שההגדרה עומדת בדרישות המוקדמות הבאות.

התקנת Google Cloud CLI

חלק מההוראות במדריך הזה אפשר לבצע רק באמצעות Google Cloud CLI. הוראות להתקנה מופיעות במאמר התקנת ה-CLI של gcloud.

אפשר למצוא פקודות שקשורות לאיזון עומסים במסמך הפניות ל-API ול-CLI של gcloud.

התפקידים הנדרשים

אם אתם יוצרי הפרויקט, מוקצה לכם התפקיד 'בעלים' (roles/owner). כברירת מחדל, התפקיד 'בעלים' (roles/owner) או התפקיד 'עריכה' (roles/editor) כוללים את ההרשאות שנדרשות כדי לבצע את הפעולות שמתוארות במאמר הזה.

אם אתם לא יוצרי הפרויקט, צריך להעניק את ההרשאות הנדרשות בחשבון המשתמש המתאים בפרויקט. לדוגמה, חשבון ראשי יכול להיות חשבון Google (למשתמשי קצה) או חשבון שירות.

כדי לקבל את ההרשאות שדרושות ליצירת קטגוריות של Cloud Storage ומשאבי רשת, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

מידע נוסף על תפקידים והרשאות ב-Cloud Load Balancing זמין במאמר תפקידים והרשאות. למידע נוסף על הגדרת מדיניות IAM עם מענקים מותנים לכללי העברה, ראו תנאי IAM לכללי העברה.

הגדרת משאב של אישור SSL

אם משתמשים במאזן עומסים אזורי חיצוני של אפליקציות (ALB) שמשתמש ב-HTTPS כפרוטוקול של הבקשה והתגובה, אפשר ליצור משאב של אישור SSL באמצעות אישור SSL של Compute Engine או אישור של Certificate Manager.

בדוגמה הזו, יוצרים משאב של אישור SSL באמצעות Certificate Manager, כמו שמתואר באחד מהמסמכים הבאים:

אחרי שיוצרים את האישור, אפשר לצרף אותו לשרת proxy של יעד HTTPS.

מומלץ להשתמש באישור שמנוהל על ידי Google.

מגבלות

המגבלות הבאות חלות על קטגוריות של Cloud Storage כשמשתמשים בהן כבק-אנד למאזן עומסים אזורי חיצוני של אפליקציות (ALB):

  • אין תמיכה בגישה לקטגוריה פרטית, ולכן קטגוריית קצה עורפי חייבת להיות נגישה לציבור דרך האינטרנט.

  • אי אפשר להשתמש בכתובות URL חתומות.

  • אי אפשר לשלב את Cloud CDN כשיוצרים קטגוריות קצה עורפי למאזן עומסים חיצוני אזורי של אפליקציות.

  • כשמשתמשים במאזן עומסים חיצוני אזורי של אפליקציות (ALB) כדי לגשת לקטגוריות של בק-אנד, רק שיטת HTTP GET נתמכת. אפשר להוריד תוכן מהמאגר, אבל אי אפשר להעלות תוכן למאגר דרך מאזן העומסים האזורי החיצוני של האפליקציה.

  • במאזן עומסים חיצוני אזורי של אפליקציות (ALB), יש תמיכה בקטגוריות של Cloud Storage רק באזור שבו מאזן העומסים מוגדר. אין תמיכה בקטגוריות בשני אזורים או במספר אזורים.

סקירה כללית של ההגדרה

בתרשים הבא מוצג מאזן עומסים אזורי חיצוני של אפליקציות עם קטגוריות קצה עורפי שנמצאות באותו אזור כמו מאזן העומסים.

לכלל ההעברה של מאזן העומסים החיצוני האזורי של אפליקציות יש כתובת IP חיצונית.

מאזן עומסים חיצוני אזורי של אפליקציות שולח תעבורה לקצה עורפי של Cloud Storage.
חלוקת התנועה ל-Cloud Storage (לחצו כדי להגדיל).

בקטעים הבאים מוגדרים המשאבים השונים כמו שמוצג בדיאגרמה הקודמת.

הגדרת הרשת והתת-רשת של שרת ה-proxy בלבד

בדוגמה הזו נעשה שימוש ברשת VPC, באזור ובתת-רשת של פרוקסי בלבד:

  • רשת. הרשת היא רשת VPC במצב מותאם אישית בשם lb-network.

  • רשת משנה עבור שרתי proxy של Envoy. רשת משנה בשם proxy-only-subnet-us באזור us-east1 משתמשת ב-10.129.0.0/23 לטווח ה-IP הראשי שלה.

הגדרת רשת VPC במצב בהתאמה אישית

המסוף

  1. נכנסים לדף VPC networks במסוף Google Cloud .

    מעבר לרשתות VPC

  2. לוחצים על יצירת רשת VPC.

  3. בשדה Name (שם), מזינים lb-network.

  4. לוחצים על יצירה.

gcloud

  1. יוצרים רשת VPC מותאמת אישית בשם lb-network באמצעות הפקודה gcloud compute networks create.

    gcloud compute networks create lb-network --subnet-mode=custom
    

הגדרת רשת המשנה ל-proxy בלבד

תת-רשת של פרוקסי בלבד מספקת קבוצה של כתובות IP ש- Google Cloud משתמש בהן כדי להפעיל פרוקסי של Envoy בשמכם. הפרוקסיים מסיימים חיבורים מהלקוח ויוצרים חיבורים חדשים לשרתי הקצה.

כל מאזני העומסים האזוריים שמבוססים על Envoy באותו אזור כמו רשת ה-VPC משתמשים בתת-הרשת הזו שמוגדרת ל-proxy בלבד. יכולה להיות רק תת-רשת פעילה אחת של פרוקסי בלבד לכל מטרה נתונה, לכל אזור ולכל רשת.

המסוף

  1. נכנסים לדף VPC networks במסוף Google Cloud .

    מעבר לרשתות VPC

  2. לוחצים על השם של רשת ה-VPC שיצרתם.

  3. בכרטיסייה Subnet, לוחצים על Add subnet.

  4. הזן את פריטי המידע הבאים:

    • Name (שם): proxy-only-subnet-us
    • אזור: us-east1
    • מטרה: Regional Managed Proxy
    • טווח כתובות IP: 10.129.0.0/23
  5. לוחצים על הוספה.

gcloud

  1. יוצרים תת-רשת לשרת 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.

המסוף

  1. במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.

    כניסה לדף Buckets

  2. לוחצים על יצירה.

  3. בקטע תחילת העבודה, מזינים שם ייחודי גלובלית בהתאם להנחיות למתן שמות.

  4. לוחצים על בחירת המיקום לאחסון הנתונים.

  5. מגדירים את סוג המיקום לאזור.

  6. ברשימת האזורים, בוחרים באפשרות us-east1.

  7. לוחצים על יצירה.

  8. לוחצים על Buckets כדי לחזור לדף Cloud Storage Buckets. כך יוצרים קטגוריה שנייה באזור us-east1.

gcloud

  1. יוצרים את הקטגוריה הראשונה באזור us-east1 באמצעות הפקודה gcloud storage buckets create.

    gcloud storage buckets create gs://BUCKET1_NAME \
        --default-storage-class=standard \
        --location=us-east1 \
        --uniform-bucket-level-access
    
  2. יוצרים את הקטגוריה השנייה גם באזור 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).

המסוף

כדי להעניק לכל המשתמשים גישה לצפייה באובייקטים בקטגוריות, חוזרים על התהליך הבא לכל קטגוריה:

  1. במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.

    כניסה לדף Buckets

  2. ברשימת הקטגוריות, לוחצים על השם של הקטגוריה שרוצים להגדיר כציבורית.

  3. לוחצים על הכרטיסייה הרשאות.

  4. בקטע Permissions, לוחצים על הלחצן Grant access. מופיעה תיבת הדו-שיח Grant access.

  5. בשדה New principals, מזינים allUsers.

  6. בשדה Select a role, מזינים Storage Object Viewer בתיבת הסינון ובוחרים Storage Object Viewer מהתוצאות המסוננות.

  7. לוחצים על Save.

  8. לוחצים על 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 חיצונית סטטית לכלל ההעברה של מאזן העומסים.

המסוף

  1. נכנסים לדף Reserve a static address במסוף Google Cloud .

    מעבר אל 'שמירת כתובת סטטית'

  2. בוחרים שם לכתובת החדשה.

  3. בשביל IP version, בוחרים IPv4.

  4. בשדה Type, בוחרים באפשרות Regional.

  5. בשדה Region, בוחרים באפשרות us-east1.

  6. משאירים את האפשרות מצורף אל במצב ללא. אחרי שיוצרים את מאזן העומסים, כתובת ה-IP הזו מצורפת לכלל ההעברה של מאזן העומסים.

  7. לוחצים על שמירה כדי לשמור את כתובת ה-IP.

gcloud

  1. כדי לשמור כתובת IP חיצונית סטטית, משתמשים בפקודה gcloud compute addresses create.

    gcloud compute addresses create ADDRESS_NAME \
       --region=us-east1
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ADDRESS_NAME: השם שרוצים לתת לכתובת הזו.
  2. משתמשים בפקודה 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, פועלים לפי השלבים הבאים:

  1. יוצרים שתי קטגוריות עורפיות באזור 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-east1
    
    gcloud 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.

  2. יוצרים מפת 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.

  3. מגדירים את כללי המארח והנתיב של מפת ה-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.

  4. יוצרים שרת 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
    

    מחליפים את מה שכתוב בשדות הבאים:

  5. יוצרים כלל העברה עם כתובת 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 למאזן העומסים

עכשיו ששירות איזון העומסים פועל, אפשר לשלוח בקשה לכלל ההעברה של מאזן העומסים.

  1. מקבלים את כתובת ה-IP של כלל ההעברה של מאזן העומסים (http-fw-rule), שנמצא באזור us-east1.

      gcloud compute forwarding-rules describe http-fw-rule \
          --region=us-east1
    

    מעתיקים את כתובת ה-IP שמוחזרת כדי להשתמש בה כ-FORWARDING_RULE_IP_ADDRESS בשלב הבא.

  2. שליחת בקשת 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
    

המאמרים הבאים