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

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

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

אם אתם משתמשים קיימים ב-Classic Application Load Balancer, הקפידו לעיין בסקירה כללית על העברה כשאתם מתכננים פריסה חדשה באמצעות Global External Application Load Balancer.

קטגוריות של 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, תוכלו להתקין אותו באמצעות ההוראות במאמר אחסון אובייקטים באמצעות הכלי של gcloud.

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

המסוף

  1. נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. 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

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

  4. 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

  5. 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 שאפשר לצרף לפרוקסי היעד. משאב אישור ה-SSL יכול להיות מיפוי אישורים או אישור SSL של Compute Engine (אישור קלאסי).

מפת אישורים

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

אישור SSL ב-Compute Engine

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

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

אופציונלי: שימוש בכתובות 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

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

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

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

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

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

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

  8. לוחצים על Buckets כדי לחזור לדף Cloud Storage Buckets. כדי ליצור קטגוריה שנייה, פועלים לפי ההוראות האלה, אבל מגדירים את המיקום ל-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. לוחצים על הפעלת 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 מסוף, לוחצים על רענון בדף הפרטים של כל קטגוריה כדי לוודא שהקובץ הועתק בהצלחה.

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

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

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

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

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

המסוף

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

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

    כניסה לקטגוריות של Cloud Storage

  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 כפרטיות

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

המסוף

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

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

    כניסה לדף Buckets

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

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

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

  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.iam.gserviceaccount.com \
      --role=roles/storage.objectViewer
  gcloud storage buckets add-iam-policy-binding gs://BUCKET_2_NAME \
      --member=serviceAccount:service-PROJECT_NUM@https-lb.iam.gserviceaccount.com \
      --role=roles/storage.objectViewer

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

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

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

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

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

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

המסוף

  1. נכנסים לדף External IP addresses במסוף Google Cloud .

    נכנסים אל External IP addresses

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

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

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

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

  6. מגדירים את הסוג לגלובלי.

  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"
}

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

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

המסוף

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

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

    כניסה לדף Load balancing

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

הגדרה בסיסית

  1. בתיבה שם, מזינים 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. לוחצים על כללי ניתוב.
  2. בשדה מארחים מזינים *, ובשדה נתיבים מזינים /love-to-fetch/*.dogs

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

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

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

    מאפיין (property) ערך (מקלידים ערך או בוחרים אפשרות כמפורט)
    פרוטוקול HTTP
    Network Service Tier Premium
    גרסת IP IPv4
    כתובת IP example-ip
    Port 80
    אופציונלי: פסק זמן של HTTP keepalive מזינים ערך של זמן קצוב לתפוגה בין 5 ל-1,200 שניות. ערך ברירת המחדל הוא 610 שניות.

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

    מאפיין (property) ערך (מקלידים ערך או בוחרים אפשרות כמפורט)
    פרוטוקול ‫HTTP(S)
    Network Service Tier ‫Premium
    גרסת IP IPv4
    כתובת IP example-ip
    Port 443
    אופציונלי: פסק זמן של HTTP keepalive מזינים ערך של זמן קצוב לתפוגה בין 5 ל-1,200 שניות. ערך ברירת המחדל הוא 610 שניות.
    אישור בקטע בחירת מאגר אישורים, בוחרים באפשרות שימוש במפת אישורים או באפשרות שימוש באישורים קלאסיים. בהתאם לבחירה שלכם, בוחרים מפת אישורים או אישור קלאסי.
    אופציונלי: הפעלת הפניה אוטומטית מ-HTTP ל-HTTPS משתמשים בתיבת הסימון הזו כדי להפעיל הפניות אוטומטיות.

    סימון התיבה הזו יוצר מאזן עומסים חלקי נוסף של HTTP שמשתמש באותה כתובת IP כמו מאזן העומסים של HTTPS, ומפנה בקשות HTTP לחלק הקדמי של מאזן העומסים של 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 \
  --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
  --url-map=http-lb

מחליפים את הערך HTTP_KEEP_ALIVE_TIMEOUT_SEC בערך של זמן הקצוב לתפוגה של חיבור HTTP פעיל של הלקוח מ-5 ל-1,200 שניות. ערך ברירת המחדל הוא 610 שניות. השדה הזה אופציונלי.

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

gcloud compute target-https-proxies create https-lb-proxy \
  --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
  --url-map=http-lb \
  --ssl-certificates=SSL_CERTIFICATE_NAME

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

  • ‫HTTP_KEEP_ALIVE_TIMEOUT_SEC: הערך של זמן הקצוב לתפוגה של חיבור HTTP פעיל של הלקוח מ-5 עד 1,200 שניות. ערך ברירת המחדל הוא 610 שניות. השדה הזה הוא אופציונלי.
  • ‫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_MANAGED \
  --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_MANAGED \
  --network-tier=PREMIUM \
  --address=example-ip \
  --global \
  --target-https-proxy=https-lb-proxy \
  --ports=443

Terraform

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

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

כדי ליצור את ה-backend, משתמשים במשאב 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
}

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

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

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

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

המסוף

אין תמיכה במסוף Google Cloud .

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

שלבי הגדרת תצורה נוספים

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

עדכון של הזמן הקצוב לתפוגה של HTTP keepalive בלקוח

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

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

המסוף

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

    כניסה לדף Load balancing

  2. לוחצים על השם של מאזן העומסים שרוצים לשנות.
  3. לוחצים על עריכה.
  4. לוחצים על Frontend configuration.
  5. מרחיבים את הקטע תכונות מתקדמות. בשדה HTTP keepalive timeout, מזינים ערך של פסק זמן.
  6. לוחצים על עדכון.
  7. כדי לבדוק את השינויים, לוחצים על בדיקה וסיום ואז על עדכון.

gcloud

כדי לעדכן את שרת ה-proxy של HTTP, משתמשים במאזן עומסים מסוג HTTP עם הפקודה gcloud compute target-http-proxies update:

      gcloud compute target-http-proxies update TARGET_HTTP_PROXY_NAME \
          --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
          --global
    

למאזן עומסים ב-HTTPS, מעדכנים את שרת ה-proxy של HTTPS באמצעות הפקודה gcloud compute target-https-proxies update:

      gcloud compute target-https-proxies update TARGET_HTTPS_PROXY_NAME \
          --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
          --global
    

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

  • ‫TARGET_HTTP_PROXY_NAME: השם של ה-proxy ל-HTTP של היעד.
  • ‫TARGET_HTTPS_PROXY_NAME: השם של ה-proxy ל-HTTPS עם יעד.
  • ‫HTTP_KEEP_ALIVE_TIMEOUT_SEC: ערך הזמן הקצוב לתפוגה של HTTP keepalive, מ-5 עד 600 שניות.

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

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

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

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

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

מגבלות

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

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