הצגת תנועה מכמה אזורים

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

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

אפשר להגדיר מעבר אוטומטי לגיבוי באזור אחר באמצעות Service Health ב-Cloud Run.

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

  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.

  6. הגדרת סביבת הפיתוח של Cloud Run בפרויקט Google Cloud .
  7. מתקינים ומפעילים את ה-CLI של gcloud.
  8. מוודאים שיש בחשבון את תפקידי ה-IAM הבאים:
  9. מתן התפקידים

    המסוף

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

      כניסה לדף IAM
    2. בוחרים את הפרויקט.
    3. לוחצים על Grant access.
    4. בשדה New principals, מזינים את מזהה המשתמש. בדרך כלל מדובר בכתובת האימייל בחשבון Google שמשמש לפריסת שירות Cloud Run.

    5. בוחרים תפקיד מהרשימה Select a role.
    6. כדי לתת עוד תפקידים, לוחצים על Add another role ובוחרים את כל התפקידים הנוספים.
    7. לוחצים על Save.

    gcloud

    כדי להקצות לחשבון שלכם את תפקידי ה-IAM הנדרשים בפרויקט:

            gcloud projects add-iam-policy-binding PROJECT_ID \
                --member=PRINCIPAL \
                --role=ROLE
            

    מחליפים את:

    • PROJECT_NUMBER עם מספר הפרויקט ב- Google Cloud .
    • PROJECT_ID במזהה הפרויקט ב- Google Cloud .
    • PRINCIPAL עם החשבון שאליו אתם מוסיפים את הקישור. בדרך כלל מדובר בכתובת האימייל בחשבון Google שמשמשת לפריסת שירות Cloud Run.
    • ROLE עם התפקיד שאתם מוסיפים לחשבון של כלי הפריסה.
  10. כדאי לעיין בדף תמחור של Cloud Run. כדי ליצור הערכת עלויות בהתאם לשימוש החזוי, אפשר להשתמש במחשבון התמחור.
  11. מפעילים את ממשקי ה-API של Artifact Registry,‏ Cloud Build,‏ Cloud Run Admin API,‏ Compute Engine ו-Network Services API באמצעות הפקודה הבאה:
  12.   gcloud services enable artifactregistry.googleapis.com \
        cloudbuild.googleapis.com \
        run.googleapis.com \
        compute.googleapis.com \
        networkservices.googleapis.com
      

פריסת השירות בכמה אזורים

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

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

פריסת שירות במספר אזורים

בקטע הזה נסביר איך לפרוס ולהגדיר שירות רב-אזורי באמצעות פקודה אחת של ה-CLI של gcloud או באמצעות קובץ YAML או Terraform.

gcloud

  • כדי ליצור ולפרוס שירות מרובה אזורים, מריצים את הפקודה gcloud run deploy באמצעות הדגל --regions:

    gcloud run deploy SERVICE_NAME \
      --image=IMAGE_URL \
      --regions=REGIONS

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

    • SERVICE_NAME: השם של שירות רב-אזורי שרוצים לפרוס.
    • IMAGE_URL: הפניה לקובץ אימג' בקונטיינר, לדוגמה, us-docker.pkg.dev/cloudrun/container/hello:latest.
    • REGIONS: רשימה של כמה אזורים שרוצים לפרוס בהם. לדוגמה, europe-west1,asia-east1.

YAML

  1. יוצרים קובץ YAML לשירות, ומשתמשים במאפיין run.googleapis.com/regions כדי להגדיר את האזורים שבהם רוצים לפרוס את השירות:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE_NAME
      annotations:
        run.googleapis.com/regions: REGIONS
    spec:
      template:
        spec:
          containers:
          - image: IMAGE_URL

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

    • SERVICE_NAME: השם של שירות רב-אזורי שרוצים לפרוס אליו.
    • REGIONS: רשימה של כמה אזורים שרוצים לעדכן. לדוגמה, europe-west1,asia-east1.
    • IMAGE_URL: הפניה לקובץ אימג' בקונטיינר, לדוגמה, us-docker.pkg.dev/cloudrun/container/hello:latest.
  2. יוצרים את השירות באמצעות הפקודה הבאה:

    gcloud run multi-region-services replace service.yaml

Terraform

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

מוסיפים את הטקסט הבא למשאב google_cloud_run_v2_service בהגדרות של Terraform.

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-multi-region"
  location = "global"

  multi_region_settings {
    regions = [
      "REGION_1",
      "REGION_2",
    ]
  }

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
  }
}

מחליפים את "REGION_1" ואת "REGION_2" בכל אחד מהGoogle Cloud אזורים שצריך. לדוגמה, europe-west1 ו-us-central1.

עדכון של שירות רב-אזורי

בקטע הזה נסביר איך להוסיף או להסיר אזורים משירות רב-אזורי באמצעות פקודה אחת של ה-CLI של gcloud או קובץ YAML.

gcloud

כדי להוסיף או להסיר אזורים משירות רב-אזורי, מריצים את הפקודה gcloud run multi-region-services update.

  • כדי להוסיף את השירות במספר אזורים לאזור או לאזורים נוספים, משתמשים בדגל --add-regions:

    gcloud run multi-region-services update SERVICE_NAME \
      --add-regions=REGIONS
  • כדי להסיר את השירות במספר אזורים מאזור אחד או יותר, משתמשים בדגל --remove-regions:

    gcloud run multi-region-services update SERVICE_NAME \
      --remove-regions=REGIONS

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

    • SERVICE_NAME: השם של שירות מרובה אזורים שרוצים לעדכן.
    • REGIONS: האזור או האזורים שרוצים להוסיף אליהם את השירות או להסיר מהם את השירות. לדוגמה, us-central1,asia-east1.

YAML

  1. כדי לעדכן שירות קיים בכמה אזורים, מורידים את הגדרת ה-YAML שלו:

    gcloud run multi-region-services describe SERVICE_NAME --format export > service.yaml
  2. מעדכנים את המאפיין run.googleapis.com/regions כדי להוסיף או להסיר את רשימת האזורים שבהם רוצים לפרוס את השירות:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE_NAME
      annotations:
        run.googleapis.com/regions: REGIONS

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

    • SERVICE_NAME: השם של שירות רב-אזורי שרוצים לפרוס אליו.
    • REGIONS: הרשימה החדשה של כמה אזורים שרוצים לפרוס בהם את הגרסה של השירות.
  3. מעדכנים את השירות באמצעות הפקודה הבאה:

    gcloud run multi-region-services replace service.yaml

מחיקת שירות מרובה אזורים

  • כדי למחוק שירות רב-אזורי, מריצים את הפקודה gcloud run multi-region-services delete:

    gcloud run multi-region-services delete SERVICE_NAME

    מחליפים את SERVICE_NAME בשם של השירות הרב-אזורי שרוצים למחוק.

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

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

הארכיטקטורה שמתוארת בקטעים הבאים לא מנתבת אוטומטית בקשות לאזור אחר כששירות אזורי של Cloud Run לא מגיב או מחזיר שגיאות.

כדי להגדיל את הזמינות של השירות שמנוהל במספר אזורים:

הגדרה של קבוצות נקודות קצה ברשת לפי אזור

לכל אזור שבו פרסתם בשלב הקודם, צריך ליצור קבוצות של נקודות קצה ברשת (NEGs) בלי שרת (serverless) באמצעות ההוראות הבאות:

‫CLI של gcloud

  1. יוצרים קבוצה של נקודות קצה ברשת בשביל שירות Cloud Run ב-REGION:

    gcloud compute network-endpoint-groups create NEG_NAME \
      --region=REGION \
      --network-endpoint-type=serverless \
      --cloud-run-service=SERVICE_NAME

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

    • NEG_NAME עם השם של משאב קבוצת נקודות הקצה ברשת, לדוגמה, myservice-neg-uscentral1.
    • REGION עם האזור שבו השירות שלך נפרס.
    • SERVICE_NAME בשם של השירות.
  2. חוזרים על השלב הקודם לכל אזור.

Terraform

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

  1. מגדירים קבוצת נקודות קצה ברשת עם השם myservice-neg בשביל שירות Cloud Run לכל אזור שצוין במשתנה run_regions:

    resource "google_compute_region_network_endpoint_group" "lb_default" {
      provider              = google-beta
      count                 = length(local.run_regions)
      name                  = "myservice-neg"
      network_endpoint_type = "SERVERLESS"
      region                = local.run_regions[count.index]
      cloud_run {
        service = google_cloud_run_v2_service.run_default[count.index].name
      }
    }

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

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

gcloud

  1. שמרו כתובת IP סטטית כדי שלא תצטרכו לעדכן את רשומות ה-DNS כשתיצרו מחדש את מאזן העומסים.
    gcloud compute addresses create --global SERVICE_IP
    בפקודה שלמעלה, מחליפים את SERVICE_IP בשם של משאב כתובת ה-IP (למשל, myservice-ip).

    כתובת ה-IP הזו היא כתובת IPv4 גלובלית מסוג anycast שמנותבת למרכז הנתונים או לנקודת ה-PoP של Google שהכי קרובים למבקרים באתר.

  2. יוצרים שירות לקצה העורפי.
    gcloud compute backend-services create \
      --global BACKEND_NAME \
      --load-balancing-scheme=EXTERNAL_MANAGED

    מחליפים את BACKEND_NAME בשם שרוצים לתת לשירות לקצה העורפי. לדוגמה, myservice-backend.

  3. מוסיפים את קבוצת נקודות הקצה ברשת לשירות הקצה העורפי:

    gcloud compute backend-services add-backend --global BACKEND_NAME 
    --network-endpoint-group-region=REGION
    --network-endpoint-group=NEG_NAME

    מציינים את NEG_NAME שיצרתם בשלב הקודם עבור האזור.

  4. יוצרים מפת URL.
    gcloud compute url-maps create URLMAP_NAME --default-service=BACKEND_NAME

    מחליפים את URLMAP_NAME בשם שרוצים לתת למפת URL (לדוגמה, myservice-urlmap).

  5. יוצרים אישור TLS מנוהל לדומיין כדי לשרת תנועת HTTPS. (מחליפים את example.com בשם הדומיין).
    gcloud compute ssl-certificates create CERT_NAME \
      --domains=example.com

    מחליפים את CERT_NAME בשם שרוצים לתת לאישור ה-SSL המנוהל (לדוגמה, myservice-cert).

  6. יוצרים שרת proxy ליעד HTTPS.
    gcloud compute target-https-proxies create HTTPS_PROXY_NAME \
      --ssl-certificates=CERT_NAME \
      --url-map=URLMAP_NAME

    מחליפים את HTTPS_PROXY_NAME בשם שרוצים לתת לשרת ה-proxy של יעד ה-HTTPS (לדוגמה, myservice-https).

  7. יוצרים כלל העברה שמקשר בין משאבי הרשת שיצרתם לכתובת ה-IP.
    gcloud compute forwarding-rules create --global FORWARDING_RULE_NAME \
      --target-https-proxy=HTTPS_PROXY_NAME \
      --address=SERVICE_IP \
      --ports=443 \
      --load-balancing-scheme=EXTERNAL_MANAGED 

    מחליפים את FORWARDING_RULE_NAME בשם של משאב כלל ההעברה שרוצים ליצור. לדוגמה, myservice-lb.

Terraform

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

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

  1. מגדירים את כתובת ה-IP:

    resource "google_compute_global_address" "lb_default" {
      provider = google-beta
      name     = "myservice-service-ip"
    
      # Use an explicit depends_on clause to wait until API is enabled
      depends_on = [
        google_project_service.compute_api
      ]
    }
    output "load_balancer_ip_addr" {
      value = google_compute_global_address.lb_default.address
    }

    הגדרת שם משאב כתובת ה-IP ל-myservice-service-ip. אתם יכולים לשנות את הערך הזה לערך משלכם. כתובת ה-IP הזו היא כתובת IPv4 גלובלית מסוג anycast, שמנותבת למרכז הנתונים של Google או לנקודת הנוכחות (POP) שהכי קרובה למבקרים באתר.

  2. יוצרים ומגדירים את שירות הקצה העורפי:

    resource "google_compute_backend_service" "lb_default" {
      provider              = google-beta
      name                  = "myservice-backend"
      load_balancing_scheme = "EXTERNAL_MANAGED"
    
      backend {
        group = google_compute_region_network_endpoint_group.lb_default[0].id
      }
    
      backend {
        group = google_compute_region_network_endpoint_group.lb_default[1].id
      }
    
      # Use an explicit depends_on clause to wait until API is enabled
      depends_on = [
        google_project_service.compute_api,
      ]
    }

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

  3. מגדירים את מפת ה-URL:

    resource "google_compute_url_map" "lb_default" {
      provider        = google-beta
      name            = "myservice-lb-urlmap"
      default_service = google_compute_backend_service.lb_default.id
    
      path_matcher {
        name            = "allpaths"
        default_service = google_compute_backend_service.lb_default.id
        route_rules {
          priority = 1
          url_redirect {
            https_redirect         = true
            redirect_response_code = "MOVED_PERMANENTLY_DEFAULT"
          }
        }
      }
    }

    מחבר את משאב שירות לקצה העורפי (myservice-backend) למשאב החדש של מפת URL (myservice-lb-urlmap). אפשר לשנות את הערכים האלה לערכים משלכם.

  4. יוצרים אישור TLS מנוהל לדומיין כדי להציג תנועת HTTPS. מחליפים את example.com בשם הדומיין במשאב google_compute_managed_ssl_certificate:

    resource "google_compute_managed_ssl_certificate" "lb_default" {
      provider = google-beta
      name     = "myservice-ssl-cert"
    
      managed {
        domains = ["example.com"]
      }
    }
  5. מגדירים את שרת ה-proxy של HTTPS:

    resource "google_compute_target_https_proxy" "lb_default" {
      provider = google-beta
      name     = "myservice-https-proxy"
      url_map  = google_compute_url_map.lb_default.id
      ssl_certificates = [
        google_compute_managed_ssl_certificate.lb_default.name
      ]
      depends_on = [
        google_compute_managed_ssl_certificate.lb_default
      ]
    }

    יוצר משאב google_compute_target_https_proxy עם שם יעד myservice-https-proxy ומקשר בין אישור TLS שנוצר קודם (myservice-ssl-cert) לבין משאבי מיפוי כתובות URL (myservice-lb-urlmap). אפשר לשנות את הערכים האלה לערכים משלכם.

  6. מגדירים את כלל ההעברה:

    resource "google_compute_global_forwarding_rule" "lb_default" {
      provider              = google-beta
      name                  = "myservice-lb-fr"
      load_balancing_scheme = "EXTERNAL_MANAGED"
      target                = google_compute_target_https_proxy.lb_default.id
      ip_address            = google_compute_global_address.lb_default.id
      port_range            = "443"
      depends_on            = [google_compute_target_https_proxy.lb_default]
    }

    יוצר משאב google_compute_global_forwarding_rule עם שם יעד myservice-https-proxy ומקשר בין יעד שרת Proxy מסוג HTTPS שנוצר קודם לכן (myservice-https-proxy) לבין משאב כתובת IP‏ (myservice-service-ip). אפשר לשנות את הערכים האלה לערכים שלכם.

  7. החלת ההגדרה הזו:

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

    הכנת Cloud Shell

    1. מפעילים את Cloud Shell.
    2. מגדירים את פרויקט ברירת המחדל שבו רוצים להחיל את ההגדרות של Terraform. Google Cloud

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

      export GOOGLE_CLOUD_PROJECT=PROJECT_ID

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

    הכנת הספרייה

    לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).

    1. יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת .tf, למשל main.tf. במדריך הזה, הקובץ נקרא main.tf.
      mkdir DIRECTORY && cd DIRECTORY && touch main.tf
    2. אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.

      מעתיקים את הקוד לדוגמה בקובץ main.tf החדש שיצרתם.

      לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.

    3. בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
    4. שומרים את השינויים.
    5. מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
      terraform init

      אופציונלי: תוכלו לכלול את האפשרות -upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:

      terraform init -upgrade

    החלה של השינויים

    1. בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
      terraform plan

      מתקנים את ההגדרות לפי הצורך.

    2. מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה, כדי להחיל את הגדרות Terraform:
      terraform apply

      ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!‎".

    3. פותחים את Google Cloud הפרויקט כדי לראות את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.

הגדרה של קבוצות נקודות קצה ברשת לפי אזור

לכל אזור שפרסתם בו בשלב הקודם, צריך ליצור קבוצות של נקודות קצה ברשת (NEGs) בלי שרתים ולהוסיף אותן לשירות לקצה העורפי באמצעות ההוראות הבאות:

‫CLI של gcloud

  1. יוצרים קבוצה של נקודות קצה ברשת בשביל שירות Cloud Run ב-REGION:

    gcloud compute network-endpoint-groups create NEG_NAME \
      --region=REGION \
      --network-endpoint-type=serverless \
      --cloud-run-service=SERVICE_NAME

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

    • NEG_NAME עם השם של משאב קבוצת נקודות הקצה ברשת. (לדוגמה, myservice-neg-uscentral1)
    • REGION עם האזור שבו השירות שלך נפרס.
    • SERVICE_NAME בשם של השירות.
  2. מוסיפים את קבוצת נקודות הקצה ברשת לשירות הקצה העורפי:

    gcloud compute backend-services add-backend --global BACKEND_NAME \
      --network-endpoint-group-region=REGION \
      --network-endpoint-group=NEG_NAME

    מציינים את NEG_NAME שיצרתם בשלב הקודם עבור האזור.

  3. חוזרים על השלבים הקודמים לגבי כל אזור.

Terraform

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

  1. מגדירים קבוצת נקודות קצה ברשת עם השם myservice-neg בשביל שירות Cloud Run לכל אזור שצוין במשתנה run_regions:

    resource "google_compute_region_network_endpoint_group" "lb_default" {
      provider              = google-beta
      count                 = length(local.run_regions)
      name                  = "myservice-neg"
      network_endpoint_type = "SERVERLESS"
      region                = local.run_regions[count.index]
      cloud_run {
        service = google_cloud_run_v2_service.run_default[count.index].name
      }
    }
  2. מגדירים שירות קצה עורפי לצירוף קבוצת נקודות הקצה ברשת (myservice-neg):

    resource "google_compute_backend_service" "lb_default" {
      provider              = google-beta
      name                  = "myservice-backend"
      load_balancing_scheme = "EXTERNAL_MANAGED"
    
      backend {
        group = google_compute_region_network_endpoint_group.lb_default[0].id
      }
    
      backend {
        group = google_compute_region_network_endpoint_group.lb_default[1].id
      }
    
      # Use an explicit depends_on clause to wait until API is enabled
      depends_on = [
        google_project_service.compute_api,
      ]
    }

הגדרת רשומות DNS בדומיין

כדי להפנות את שם הדומיין לכלל ההעברה שיצרתם, צריך לעדכן את רשומות ה-DNS שלו עם כתובת ה-IP שיצרתם.

  1. מריצים את הפקודה הבאה כדי למצוא את כתובת ה-IP השמורה של מאזן העומסים:

    gcloud compute addresses describe SERVICE_IP \
      --global \
      --format='value(address)'

    מחליפים את SERVICE_IP בשם של כתובת ה-IP שיצרתם קודם. הפקודה הזו מדפיסה את כתובת ה-IP בפלט.

  2. מעדכנים את רשומות ה-DNS של הדומיין על ידי הוספה של רשומת A עם כתובת ה-IP הזו.

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

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

הקהל הוא בדרך כלל כתובת ה-URL המלאה של שירות היעד, שבשירותי Cloud Run היא כתובת URL שנוצרת ומסתיימת ב-run.app. עם זאת, בפריסה מרובת אזורים, הלקוח לא יכול לדעת מראש לאיזה שירות אזורי תנותב בקשה. לכן, בפריסה מרובת אזורים, צריך להגדיר את השירות לשימוש בקהלים מותאמים אישית.

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

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

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

אחרי שהיא מוכנה, אפשר להיכנס לכתובת ה-URL של האתר עם הקידומת https:// כדי לנסות אותה.

אמת את הסטטוס

  1. כדי לבדוק את הסטטוס של הפצת רשומת ה-DNS, משתמשים בכלי השירות dig של שורת הפקודה:

    dig A +short example.com

    בפלט מוצגת כתובת ה-IP שהגדרתם ברשומות ה-DNS.

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

    gcloud compute ssl-certificates describe CERT_NAME

    מחליפים את CERT_NAME בשם שבחרתם קודם למשאב של אישור ה-SSL.

    הפלט יכלול שורה עם status: ACTIVE.

הגדרת הפניה אוטומטית מ-HTTP ל-HTTPS

כברירת מחדל, כלל העברה מטפל רק בפרוטוקול יחיד, ולכן בקשות לנקודות הקצה של http:// מגיבות עם השגיאה '404 לא נמצא'. אם אתם צריכים שבקשות לכתובות ה-URL של http:// יופנו לפרוטוקול https://, אתם צריכים ליצור מפת URL נוספת וכלל העברה באמצעות ההוראות הבאות:

‫CLI של gcloud

  1. יוצרים מפת URL עם כלל הפניה אוטומטית.

    gcloud compute url-maps import HTTP_URLMAP_NAME \
      --global \
      --source /dev/stdin <<EOF
            name: HTTP_URLMAP_NAME
            defaultUrlRedirect:
              redirectResponseCode: MOVED_PERMANENTLY_DEFAULT
              httpsRedirect: True
            EOF

    מחליפים את HTTP_URLMAP_NAME בשם של משאב מפת URL שייווצר (לדוגמה, myservice-httpredirect).

  2. יוצרים HTTP proxy ליעד עם מפת URL.

    gcloud compute target-http-proxies create HTTP_PROXY_NAME \
      --url-map=HTTP_URLMAP_NAME

    מחליפים את HTTP_PROXY_NAME בשם של ה-proxy ל-HTTP עם יעד שייווצר (לדוגמה, myservice-http).

  3. יוצרים כלל העברה ביציאה 80 עם אותה כתובת IP שמורה.

    gcloud compute forwarding-rules create --global HTTP_FORWARDING_RULE_NAME \
      --target-http-proxy=HTTP_PROXY_NAME \
      --address=SERVICE_IP \
      --ports=80
            

    מחליפים את HTTP_FORWARDING_RULE_NAME בשם של כלל ההעברה החדש שייווצר (לדוגמה, myservice-httplb).

Terraform

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

  1. יוצרים משאב של מפת URL עם כלל הפניה אוטומטית:

    resource "google_compute_url_map" "https_default" {
      provider = google-beta
      name     = "myservice-https-urlmap"
    
      default_url_redirect {
        redirect_response_code = "MOVED_PERMANENTLY_DEFAULT"
        https_redirect         = true
        strip_query            = false
      }
    }
  2. יוצרים proxy ל-HTTP עם יעד באמצעות משאב מפת ה-URL שנוצר לאחרונה (myservice-https-urlmap):

    resource "google_compute_target_http_proxy" "https_default" {
      provider = google-beta
      name     = "myservice-http-proxy"
      url_map  = google_compute_url_map.https_default.id
    
      depends_on = [
        google_compute_url_map.https_default
      ]
    }
  3. יוצרים כלל העברה ביציאה 80 עם אותו משאב של כתובת IP שמורה (myservice-http-proxy):

    resource "google_compute_global_forwarding_rule" "https_default" {
      provider   = google-beta
      name       = "myservice-https-fr"
      target     = google_compute_target_http_proxy.https_default.id
      ip_address = google_compute_global_address.lb_default.id
      port_range = "80"
      depends_on = [google_compute_target_http_proxy.https_default]
    }

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

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

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

שימוש במינויים מאומתים של Pub/Sub push עם פריסה במספר אזורים

כברירת מחדל, שירות Pub/Sub מעביר הודעות לנקודות קצה של דחיפה באותו אזור שבו שירות Pub/Sub מאחסן את ההודעות. כדי לעקוף את ההתנהגות הזו, אפשר לעיין במאמר שימוש במינוי מאומת לדחיפה ב-Pub/Sub עם פריסה של Cloud Run בכמה אזורים. Google Cloud

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

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

  1. כדי לעדכן את מפת כתובות ה-URL של מאזן העומסים הגלובלי החיצוני של האפליקציות, מסירים את ה-NEG משירות ה-backend באמצעות הדגל --global:

    gcloud compute backend-services remove-backend BACKEND_NAME \
    --network-endpoint-group=NEG_NAME \
    --network-endpoint-group-region=REGION \
    --global
    

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

    • BACKEND_NAME: השם של שירות הקצה העורפי.
    • NEG_NAME: השם של משאב קבוצת נקודות הקצה ברשת, לדוגמה, myservice-neg-uscentral1.
    • REGION: האזור שבו נוצר ה-NEG ושממנו רוצים להסיר את השירות. לדוגמה, us-central1,asia-east1.
  2. כדי לוודא שאזור תקין משרת עכשיו תעבורה, עוברים אל https://<domain-name>.

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