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

במאמר הזה מוסבר איך ליצור מאזן עומסים חיצוני של אפליקציות כדי לנתב בקשות לתוכן סטטי אל קטגוריות של Cloud Storage. אחרי שמגדירים מאזן עומסים עם קטגוריות הקצה העורפי, בקשות לנתיבי כתובות URL שמתחילים ב-/love-to-fetch נשלחות לקטגוריה us-east1 של Cloud Storage, וכל שאר הבקשות נשלחות לקטגוריה europe-north1 של Cloud Storage, בלי קשר לאזור של המשתמש.

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

קטגוריות של Cloud Storage כקצוות עורפיים של מאזן עומסים

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

בתרשים הבא, מאזן העומסים שולח תנועה עם נתיב של /love-to-fetch/ לקטגוריה של Cloud Storage באזור us-east1. כל שאר הבקשות מועברות לקטגוריה של Cloud Storage באזור europe-north1.

מאזן העומסים שולח תנועה לקצה עורפי של Cloud Storage.
הפצת תנועה ל-Cloud Storage

כברירת מחדל, Cloud Storage משתמש באותו מטמון שבו משתמש Cloud CDN. אם מפעילים את Cloud CDN בקטגוריית הקצה העורפי, אפשר להשתמש באמצעי הבקרה של Cloud CDN בתוכן. אמצעי הבקרה של Cloud CDN כוללים, לדוגמה, מצבי מטמון, כתובות URL חתומות וביטול תוקף. בנוסף, Cloud CDN מאפשר לשמור במטמון תוכן גדול (‎> 10MB). אם לא תפעילו את Cloud CDN בקטגוריית הקצה העורפי, תוכלו להשתמש רק בכותרות Cache-Control של המקור כדי לשלוט בשמירה במטמון של תוכן קטן יותר, כפי שמוגדר במטא-נתונים של Cloud Storage.

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

צריך לוודא שההגדרה עומדת בדרישות המוקדמות הבאות. אם אתם משתמשים בכלי gcloud storage, תוכלו להתקין אותו לפי ההוראות במאמר אחסון אובייקטים באמצעות הכלי של Google Cloud CLI.

הגדרת פרויקט ברירת מחדל

המסוף

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Google Cloud project.

gcloud

gcloud config set project PROJECT_ID

מחליפים את PROJECT_ID בפרויקט שבו אתם משתמשים במדריך הזה.

Terraform

export GOOGLE_CLOUD_PROJECT=PROJECT_ID

הרשאות

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

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

מידע נוסף זמין במדריכים הבאים:

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

כדי ליצור את מאזן העומסים, צריך שיהיה לכם משאב של אישור SSL שאפשר לצרף לשרת ה-proxy לחלוקת העומס. משאב אישור ה-SSL יכול להיות מפת אישורים או אישור SSL של Compute Engine (אישור קלאסי).

מפת אישורים

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

אישור SSL של Compute Engine

למאזן עומסים מסוג HTTPS, יוצרים משאב של אישור SSL ב-Compute Engine, כמו שמתואר באחד מהמסמכים הבאים:

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

שמירת כתובת IP חיצונית

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

השלב הזה הוא אופציונלי אבל מומלץ, כי כתובת IP חיצונית סטטית מספקת כתובת אחת שאליה אפשר להפנות את הדומיין.

המסוף

  1. במסוף Google Cloud , נכנסים לדף כתובות IP חיצוניות.

    נכנסים אל External IP addresses

  2. לוחצים על Reserve static address.

  3. בתיבה Name, מזינים example-ip.

  4. מוודאים שהמסלול שנבחר ב-Network Service Tier הוא Premium.

  5. מגדירים את IP version ל-IPv4.

  6. מגדירים את Type בתור Global.

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

gcloud

gcloud compute addresses create example-ip \
    --network-tier=PREMIUM \
    --ip-version=IPV4 \
    --global

שימו לב לכתובת ה-IPv4 שנשמרה:

gcloud compute addresses describe example-ip \
    --format="get(address)" \
    --global

Terraform

כדי לשמור כתובת IP חיצונית, משתמשים במשאב google_compute_global_address.

# Reserve IP address
resource "google_compute_global_address" "default" {
  name = "example-ip"
}

אופציונלי: שימוש בכתובות BYOIP

באמצעות "העברת כתובות IP משלכם" (BYOIP), אתם יכולים לייבא כתובות ציבוריות משלכם אלGoogle Cloud כדי להשתמש בהן עם משאבי Google Cloud . לדוגמה, אם אתם מייבאים כתובות IPv4 משלכם, אתם יכולים להקצות אחת מהן לכלל ההעברה כשאתם מגדירים את מאזן העומסים. כשפועלים לפי ההוראות במאמר הזה כדי ליצור את מאזן העומסים, צריך לספק את כתובת ה-BYOIP בתור כתובת ה-IP.

למידע נוסף על השימוש ב-BYOIP, קראו את המאמר העברת כתובות IP משלכם.

הכנת הקטגוריות והתוכן ב-Cloud Storage

כך מכינים את הקטגוריות של Cloud Storage:

  • יוצרים את הקטגוריות.

  • מעתיקים תוכן לקטגוריות.

  • נותנים גישה לקטגוריות.

יצירת קטגוריות של Cloud Storage

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

חשוב לזכור את השמות של הקטגוריות של Cloud Storage שאתם יוצרים, כי תצטרכו להשתמש בהם בהמשך. במדריך הזה הם נקראים BUCKET_1_NAME ו-BUCKET_2_NAME.

המסוף

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

    כניסה לדף Cloud Storage Buckets

  2. לוחצים על Create bucket.

  3. בתיבה Name your bucket, מזינים שם ייחודי באופן גלובלי שעומד בהנחיות למתן שמות.

  4. לוחצים על Choose where to store your data.

  5. מגדירים את Location type ל-Region.

  6. מגדירים את Location לערך europe-north1. זהו BUCKET_1_NAME במדריך הזה.

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

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

gcloud

gcloud storage buckets create gs://BUCKET_1_NAME --project=PROJECT_ID --default-storage-class=standard --location=europe-north1 --uniform-bucket-level-access
gcloud storage buckets create gs://BUCKET_2_NAME --project=PROJECT_ID --default-storage-class=standard --location=us-east1 --uniform-bucket-level-access

מחליפים את BUCKET_1_NAME ואת BUCKET_2_NAME בשמות של הקטגוריות שרוצים ליצור.

Terraform

כדי ליצור את הקטגוריות, משתמשים במשאב google_storage_bucket.

# Create Cloud Storage buckets
resource "random_id" "bucket_prefix" {
  byte_length = 8
}

resource "google_storage_bucket" "bucket_1" {
  name                        = "${random_id.bucket_prefix.hex}-bucket-1"
  location                    = "us-east1"
  uniform_bucket_level_access = true
  storage_class               = "STANDARD"
  // delete bucket and contents on destroy.
  force_destroy = true
}

resource "google_storage_bucket" "bucket_2" {
  name                        = "${random_id.bucket_prefix.hex}-bucket-2"
  location                    = "us-east1"
  uniform_bucket_level_access = true
  storage_class               = "STANDARD"
  // delete bucket and contents on destroy.
  force_destroy = true
}

כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.

העברת תוכן לקטגוריות של Cloud Storage

כדי שתוכלו לבדוק את ההגדרה בהמשך, העתיקו את התמונות הבאות מקטגוריה ציבורית של Cloud Storage לקטגוריות שלכם ב-Cloud Storage.

gcloud

  1. לוחצים על Activate Cloud Shell.

  2. מריצים את הפקודות הבאות ב-Cloud Shell, ומחליפים את משתני השמות של הקטגוריות בשמות של הקטגוריות שלכם ב-Cloud Storage:

gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET_1_NAME/never-fetch/
gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET_2_NAME/love-to-fetch/

Terraform

כדי להעתיק פריטים לקטגוריה, אפשר להשתמש במשאב google_storage_bucket_object.

resource "google_storage_bucket_object" "cat_image" {
  name         = "never-fetch/three-cats.jpg"
  source       = "images/three-cats.jpg"
  content_type = "image/jpeg"

  bucket = google_storage_bucket.bucket_1.name
}

resource "google_storage_bucket_object" "dog_image" {
  name         = "love-to-fetch/two-dogs.jpg"
  source       = "images/two-dogs.jpg"
  content_type = "image/jpeg"

  bucket = google_storage_bucket.bucket_2.name
}

לחלופין, אפשר להשתמש במשאב null_resource.

resource "null_resource" "upload_cat_image" {
provisioner "local-exec" {
  command = "gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://${google_storage_bucket.bucket_1.name}/never-fetch/"
}
}

resource "null_resource" "upload_dog_image" {
provisioner "local-exec" {
  command = "gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://${google_storage_bucket.bucket_2.name}/love-to-fetch/"
}
}

במסוף Google Cloud , לוחצים על Refresh בדף הפרטים של כל קטגוריה כדי לוודא שהקובץ הועתק בהצלחה.

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

ההוראות האלה מתייחסות ליצירת מאזן עומסים מסוג HTTP או HTTPS. כדי ליצור מאזן עומסים ב-HTTPS, צריך להוסיף משאב של אישור SSL לממשק הקצה של מאזן העומסים. מידע נוסף זמין בסקירה הכללית על אישורי SSL.

המסוף

בחירת סוג מאזן העומסים

  1. במסוף Google Cloud , עוברים לדף איזון עומסים.

    כניסה לדף Load balancing

  2. לוחצים על יצירת מאזן עומסים.
  3. בשדה Type of load balancer, בוחרים באפשרות Application Load Balancer (HTTP/HTTPS) ולוחצים על Next.
  4. בקטע Public facing or internal, בוחרים באפשרות Public facing (external)‎ ולוחצים על Next.
  5. בקטע Global or single region deployment, בוחרים באפשרות Best for global workloads ולוחצים על Next.
  6. בשדה Load balancer generation, בוחרים באפשרות מאזן עומסים של אפליקציות קלאסי ולוחצים על Next.
  7. לוחצים על הגדרה.

הגדרה בסיסית

  1. בתיבה Name, מזינים http-lb.

הגדרת הקצה העורפי

  1. לוחצים על Backend configuration.

  2. לוחצים על התיבה שירותי קצה עורפי וקטגוריות קצה עורפי ואז על יצירת קטגוריית קצה עורפי.

  3. בתיבה Backend bucket name, מזינים cats.

  4. בתיבה קטגוריה של Cloud Storage, לוחצים על Browse.

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

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

  7. באותו אופן, יוצרים קטגוריית קצה עורפי בשם dogs ובוחרים באפשרות BUCKET_2_NAME.

  8. לוחצים על OK.

הגדרת כללי ניתוב

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

  1. לוחצים על Host and path rules.
  2. בשביל dogs, מזינים * בשדה Hosts ו-/love-to-fetch/* בשדה Paths.

הגדרת הקצה הקדמי

  1. לוחצים על Frontend configuration.

  2. מוודאים שהאפשרויות הבאות מוגדרות עם הערכים האלה:

    מאפיין (property) ערך (מקלידים ערך או בוחרים אפשרות כמפורט)
    פרוטוקול HTTP
    מסלול שירות הרשת Premium
    גרסת IP IPv4
    כתובת IP example-ip
    יציאה 80

    כדי ליצור מאזן עומסים ב-HTTPS במקום מאזן עומסים ב-HTTP, צריך אישור SSL. צריך למלא את השדות באופן הבא:

    מאפיין (property) ערך (מקלידים ערך או בוחרים אפשרות כמפורט)
    פרוטוקול HTTP(S)
    מסלול שירות הרשת Premium
    גרסת IP IPv4
    כתובת IP example-ip
    יציאה 443
    אישור בשדה Choose certificate repository, בוחרים באפשרות Use certificate map או באפשרות Use classic certificates. בהתאם לבחירה, בוחרים מפת אישורים או אישור קלאסי.
    אופציונלי: הפעלת הפניה אוטומטית מ-HTTP ל-HTTPS כדי להפעיל הפניות אוטומטיות, מסמנים את תיבת הסימון הזו.

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

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

  3. לוחצים על סיום.

בדיקת ההגדרות האישיות

  1. לוחצים על Review and finalize.

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

  3. לוחצים על Create וממתינים עד שמאזן העומסים ייווצר.

  4. לוחצים על השם של מאזן העומסים (http-lb).

  5. שימו לב לכתובת ה-IP של מאזן העומסים בשביל המשימה הבאה. במדריך הזה הוא נקרא IP_ADDRESS.

gcloud

הגדרת הקצה העורפי

gcloud compute backend-buckets create cats \
  --gcs-bucket-name=BUCKET_1_NAME
gcloud compute backend-buckets create dogs \
  --gcs-bucket-name=BUCKET_2_NAME

הגדרת מפת URL

gcloud compute url-maps create http-lb \
  --default-backend-bucket=cats
gcloud compute url-maps add-path-matcher http-lb \
  --path-matcher-name=path-matcher-2 \
  --new-hosts=* \
  --backend-bucket-path-rules="/love-to-fetch/*=dogs" \
  --default-backend-bucket=cats

הגדרת שרת ה-Proxy לטירגוט

במאזן עומסים מסוג HTTP, יוצרים שרת proxy ל-HTTP של היעד כדי לנתב בקשות למפת URL:

gcloud compute target-http-proxies create http-lb-proxy \
  --url-map=http-lb

במאזן עומסים מסוג HTTPS, יוצרים Proxy ל-HTTPS לניתוב בקשות למפת URL. שרת ה-proxy לחלוקת העומס מכיל את משאב אישור ה-SSL של מאזן העומסים של HTTPS, לכן בשלב הזה מצרפים את האישור או את מפת האישורים:

gcloud compute target-https-proxies create https-lb-proxy \
  --url-map=http-lb \
  --ssl-certificates=SSL_CERTIFICATE_NAME

מחליפים את SSL_CERTIFICATE_NAME בשם של אישור ה-SSL ב-Compute Engine. אם יצרתם מפת אישורים של Certificate Manager, החליפו את --ssl-certificates=SSL_CERTIFICATE_NAME ב---certificate-map=CERTIFICATE_MAP_NAME.

הגדרת כלל ההעברה

במאזן עומסים מסוג HTTP, יוצרים כלל העברה גלובלי כדי לנתב בקשות HTTP נכנסות ביציאה 80 לשרת ה-Proxy ל-HTTP:

gcloud compute forwarding-rules create http-lb-forwarding-rule \
  --load-balancing-scheme=EXTERNAL \
  --network-tier=PREMIUM \
  --address=example-ip \
  --global \
  --target-http-proxy=http-lb-proxy \
  --ports=80

למאזן עומסים מסוג HTTPS, יוצרים כלל העברה גלובלי כדי לנתב בקשות HTTPS נכנסות ביציאה 443 לשרת ה-proxy של היעד ל-HTTPS:

gcloud compute forwarding-rules create https-lb-forwarding-rule \
  --load-balancing-scheme=EXTERNAL \
  --network-tier=PREMIUM \
  --address=example-ip \
  --global \
  --target-https-proxy=https-lb-proxy \
  --ports=443

Terraform

כדי ליצור את מאזן העומסים, משתמשים במשאבים הבאים של Terraform.

הגדרת הקצה העורפי

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

# Create LB backend buckets
resource "google_compute_backend_bucket" "bucket_1" {
  name        = "cats"
  description = "Contains cat image"
  bucket_name = google_storage_bucket.bucket_1.name
}

resource "google_compute_backend_bucket" "bucket_2" {
  name        = "dogs"
  description = "Contains dog image"
  bucket_name = google_storage_bucket.bucket_2.name
}

הגדרת מפת URL

כדי ליצור את מפת URL, משתמשים במשאב google_compute_url_map.

# Create url map
resource "google_compute_url_map" "default" {
  name = "http-lb"

  default_service = google_compute_backend_bucket.bucket_1.id

  host_rule {
    hosts        = ["*"]
    path_matcher = "path-matcher-2"
  }
  path_matcher {
    name            = "path-matcher-2"
    default_service = google_compute_backend_bucket.bucket_1.id

    path_rule {
      paths   = ["/love-to-fetch/*"]
      service = google_compute_backend_bucket.bucket_2.id
    }
  }
}

הגדרת שרת ה-Proxy לטירגוט

כדי ליצור את שרת ה-proxy ל-HTTP, משתמשים במשאב google_compute_target_http_proxy.

# Create HTTP target proxy
resource "google_compute_target_http_proxy" "default" {
  name    = "http-lb-proxy"
  url_map = google_compute_url_map.default.id
}

הגדרת כלל ההעברה

כדי ליצור את כלל ההעברה, משתמשים במשאב google_compute_global_forwarding_rule.

# Create forwarding rule
resource "google_compute_global_forwarding_rule" "default" {
  name                  = "http-lb-forwarding-rule"
  ip_protocol           = "TCP"
  load_balancing_scheme = "EXTERNAL_MANAGED"
  port_range            = "80"
  target                = google_compute_target_http_proxy.default.id
  ip_address            = google_compute_global_address.default.id
}

הערה: כדי לשנות את המצב ל-Application Load Balancer הקלאסי, מגדירים את המאפיין load_balancing_scheme לערך "EXTERNAL" במקום "EXTERNAL_MANAGED".

כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.

איך מאפשרים גישה לקטגוריות של Cloud Storage

אתם יכולים להגדיר את הקטגוריות של Cloud Storage כקריאות באופן ציבורי או להגביל את הגישה אליהן.

הגדרת הקטגוריות של Cloud Storage כקריאות באופן ציבורי

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

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

המסוף

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

  1. במסוף Google Cloud , נכנסים לדף קטגוריות של Cloud Storage.

    כניסה לדף Cloud Storage Buckets

  2. לוחצים על שם הקטגוריה ואז על הכרטיסייה Permissions.

  3. לוחצים על הוספה.

  4. בתיבה New principals, מזינים allUsers.

  5. בתיבה Select a role, בוחרים באפשרות Cloud Storage > Storage Object Viewer.

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

  7. לוחצים על Allow public access.

gcloud

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

gcloud storage buckets add-iam-policy-binding gs://BUCKET_1_NAME --member=allUsers --role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET_2_NAME --member=allUsers --role=roles/storage.objectViewer

Terraform

כדי לתת לכל המשתמשים גישה לצפייה באובייקטים בקטגוריות, משתמשים במשאב google_storage_bucket_iam_member ומציינים את החבר allUsers.

# Make buckets public
resource "google_storage_bucket_iam_member" "bucket_1" {
  bucket = google_storage_bucket.bucket_1.name
  role   = "roles/storage.objectViewer"
  member = "allUsers"
}

resource "google_storage_bucket_iam_member" "bucket_2" {
  bucket = google_storage_bucket.bucket_2.name
  role   = "roles/storage.objectViewer"
  member = "allUsers"
}

הגדרת הקטגוריות של Cloud Storage כפרטיות

כדי לאפשר גישה לקטגוריות הפרטיות, צריך להקצות את תפקיד ה-IAM הנדרש לחשבון השירות service-PROJECT_NUM@https-lb..

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

המסוף

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

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

    כניסה לדף Buckets

  2. עוברים לקטגוריה שרוצים לתת אליה גישה ולוחצים על הכרטיסייה Permissions.

  3. בקטע Permissions, בכרטיסייה View by principals, לוחצים על Grant Access.

  4. בקטע Add principals, בשדה New principals, מזינים את כתובת האימייל של חשבון השירות שמבצע את הקריאה: service-PROJECT_NUM@https-lb..

  5. בקטע Assign roles, בשדה Select a role בוחרים באפשרות Cloud Storage > Storage Object Viewer. לתפקיד הזה מוקצית הרשאת קריאה בלבד.

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

בנוסף, כדי שכל התוכן שמוצג מהקטגוריה יישמר במטמון, מגדירים את מצב המטמון ל-Force cache all content ומציינים ערך TTL מקסימלי.

gcloud

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

  gcloud storage buckets add-iam-policy-binding gs://BUCKET_1_NAME \
      --member=serviceAccount:service-PROJECT_NUM@https-lb. \
      --role=roles/storage.objectViewer
  gcloud storage buckets add-iam-policy-binding gs://BUCKET_2_NAME \
      --member=serviceAccount:service-PROJECT_NUM@https-lb. \
      --role=roles/storage.objectViewer

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

  • ‫BUCKET_1_NAME ו-BUCKET_2_NAME: השם של הקטגוריות של Cloud Storage שבהן רוצים להשתמש
  • ‫PROJECT_NUM: מספר הפרויקט ב- Google Cloud

בנוסף, כדי שכל התוכן שמוצג מהקטגוריה יישמר במטמון, מגדירים את מצב המטמון ל-Force cache all content ומציינים ערך TTL מקסימלי.

שליחת תנועה למאזן העומסים

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

המסוף

בדפדפן אינטרנט, נכנסים לכתובות הבאות כדי לבדוק את מאזן העומסים, ומחליפים את IP_ADDRESS בכתובת ה-IP של מאזן העומסים:

  • http://IP_ADDRESS/love-to-fetch/two-dogs.jpg

  • http://IP_ADDRESS/never-fetch/three-cats.jpg

אם הגדרתם מאזן עומסים ב-HTTP, ודאו שהדפדפן לא מפנה אוטומטית ל-HTTPS.

gcloud

משתמשים בפקודה curl כדי לבדוק את התגובה מכתובות ה-URL הבאות. במאזן עומסים מסוג HTTP, מחליפים את IP_ADDRESS בכתובת ה-IPv4 של מאזן העומסים. במאזן עומסים מסוג HTTPS, מחליפים את http://IP_ADDRESS ב-https://DOMAIN, כאשר DOMAIN הוא שם הדומיין שמשויך לאישור ה-SSL שלכם, שמפנה לכתובת ה-IP של מאזן העומסים:

curl http://IP_ADDRESS/love-to-fetch/two-dogs.jpg
curl http://IP_ADDRESS/never-fetch/three-cats.jpg

פרמטרים של מחרוזות שאילתה ב-API בפורמט XML של Cloud Storage

כשפרמטרים מסוימים של מחרוזת שאילתה נכללים בבקשות שנשלחות לקטגוריית קצה עורפי דרך מאזן עומסים של אפליקציות, הלקוח מקבל תגובת HTTP 404 עם השגיאה "Unsupported query parameter". זה קורה כי ה-API בפורמט XML של Cloud Storage לא תומך בפרמטרים האלה כשהבקשה מגיעה ממאזן עומסים של אפליקציות.

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

סוג הפרמטר פרמטרים ההתנהגות שנצפתה
פרמטרים נתמכים generation, prefix, marker, max-keys הוספת הפרמטרים האלה (עם הערכים המתאימים) פועלת כמו שמתואר במאמרי העזרה של Cloud Storage API בפורמט XML. ה-API מחזיר תגובת HTTP רגילה.
פרמטרים שהמערכת מתעלמת מהם acl, billing, compose, delimiter, encryption, encryptionConfig, response-content-disposition, response-content-type, tagging, versions, websiteConfig להוספת הפרמטרים האלה אין השפעה.

אם מאזן העומסים מעביר את הפרמטרים האלה ל-Cloud Storage, ה-API בפורמט XML של Cloud Storage מתעלם מהם ומגיב כאילו הפרמטרים לא קיימים.
פרמטרים שנדחו cors, lifecycle, location, logging, storageClass, versioning ‫API בפורמט XML של Cloud Storage מחזיר את השגיאה "Unsupported query parameter".

מגבלות

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

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