הגדרת שירות Media CDN

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


לחצו על תראו לי איך כדי לקרוא הסבר מפורט על המשימה ישירות במסוף Google Cloud :

תראו לי איך


בדף הזה מפורטים התהליכים הבאים:

  1. יוצרים קטגוריה של Cloud Storage לאחסון התוכן.
  2. מפעילים את השירותים הנדרשים.
  3. יוצרים משאב EdgeCacheOrigin כדי לקשר את Media CDN לקטגוריה.
  4. יוצרים משאב EdgeCacheService כדי להגדיר ניתוב בקשות ושמירת תוכן במטמון בשרת המקור.
  5. בודקים אם התגובה נשמרת במטמון.

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

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

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

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

  • roles/networkservices.edgeCacheAdmin: גישה ליצירה, לעדכון, למחיקה ולניהול של כל משאבי Edge Cache.
  • roles/networkservices.edgeCacheUser: גישה לצפייה במשאבי Edge Cache ולשימוש בהם.
  • roles/networkservices.edgeCacheViewer: גישת קריאה בלבד למשאבי Edge Cache.

כדי ליצור קטגוריית אחסון

כדי להפעיל SSL ב-Media CDN

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

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

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

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

  1. יוצרים קטגוריה של Cloud Storage עם גישה ציבורית ומקצים לה את השם my-bucket.

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

  2. מעלים קובץ לקטגוריה.

הפעלת השירותים הנדרשים

כדי להגדיר ולפרוס שירותים של Media CDN, צריך להפעיל בפרויקט את Network Services API ואת Certificate Manager API.

המסוף

  1. מפעילים את Network Services API.

    הפעלה של ה-API

  2. מפעילים את Certificate Manager API.

    הפעלה של ה-API

gcloud

  1. מפעילים את Network Services API:

    gcloud services enable networkservices.googleapis.com
    
  2. מפעילים את Certificate Manager API:

    gcloud services enable certificatemanager.googleapis.com
    

מידע נוסף על הפעלה והשבתה של שירותים זמין במאמר שימוש בשירות.

יצירת משאב EdgeCacheOrigin

יוצרים מקור שמפנה לקטגוריה של Cloud Storage.

המסוף

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

    מעבר אל Media CDN

  2. לוחצים על הכרטיסייה מקורות.

  3. לוחצים על יצירת מקור.

  4. מזינים את השם של המקור כ-cloud-storage-origin.

  5. אופציונלי: מזינים תיאור למקור.

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

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

  7. לוחצים על יצירת מקור.

אחרי כ-10 דקות, משאב EdgeCacheOrigin שנוצר לאחרונה מופיע ברשימת המקורות בפרויקט בדף מקורות.

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

gcloud

משתמשים בפקודה gcloud edge-cache origins create:

gcloud edge-cache origins create ORIGIN \
    --origin-address="ADDRESS"

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

  • ORIGIN: השם של המקור החדש
  • ADDRESS: שם הקטגוריה, gs://my-bucket

אם יש לכם מקור חיצוני, מחליפים את ADDRESS ב-FQDN או בכתובת ה-IP.

כדי לראות את מקור התנועה החדש שנוצר, משתמשים בפקודה gcloud edge-cache origins list.

כדי לעדכן את כתובת המקור, משתמשים בפקודה gcloud edge-cache origins update.

API

משתמשים בשיטה edgeCacheOrigins.create:

POST https://networkservices.googleapis.com/v1/PARENT/edgeCacheOrigins?edgeCacheOriginId=ORIGIN_ID
{
  "name": "ORIGIN_ID",
  "originAddress: "ADDRESS"
}

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

  • PARENT: משאב האב בפורמט projects/PROJECT/locations/global
  • ORIGIN_ID: השם המקוצר של המקור החדש
  • ADDRESS: שם הקטגוריה, gs://my-bucket

    אם יש לכם מקור חיצוני, מחליפים את ADDRESS ב-FQDN או בכתובת ה-IP.

כדי לראות את המקור החדש שנוצר, משתמשים בשיטה edgeCacheOrigins.list.

כדי לעדכן את כתובת המקור, משתמשים בשיטה edgeCacheOrigins.patch.

Terraform

resource "google_network_services_edge_cache_origin" "default" {
  name           = "cloud-storage-origin"
  origin_address = "gs://my-bucket-${random_id.unique_suffix.hex}"
}

יצירת משאב EdgeCacheService

משאב EdgeCacheService מגדיר את הגדרות הניתוב, האישורים והשמירה במטמון, ויכול להפנות למשאבי EdgeCacheOrigin.

יוצרים משאב EdgeCacheService בסיסי שמבצע את הפעולות הבאות:

  • מטמון של כל התגובות מהמקור שהגדרנו למשך שעה
  • מגדירה כותרת תגובה x-cache-status שמחזירה את סטטוס המטמון (למשל HIT או MISS)

אפשר גם לרשום שם דומיין לשירות הזה.

המסוף

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

    מעבר אל Media CDN

  2. לוחצים על הכרטיסייה Services (שירותים).

  3. לוחצים על יצירת שירות.

  4. מזינים שם ייחודי לשירות – לדוגמה, my-service – ולוחצים על הבא.

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

  6. בשביל Hosts, מזינים שם דומיין של מארח – לדוגמה, web.example.com.

  7. לוחצים על הוספת כלל ניתוב.

    1. בשדה עדיפות, מציינים את הערך 1.
    2. לוחצים על הוספת תנאי התאמה, בשדה התאמה לנתיב מציינים את / ואז לוחצים על סיום.
    3. בוחרים באפשרות אחזור מ-Origin, ואז בוחרים את ה-Origin שהגדרתם.
    4. לוחצים על פעולות של תוספים.
    5. בקטע פעולה בכותרת, לוחצים על הוספת פריט. לאחר מכן, מבצעים את הפעולות הבאות:
      1. בקטע סוג, בוחרים באפשרות כותרות תגובה להוספה.
      2. לוחצים על הוספת כותרת.
      3. בשדה Name (שם), מציינים x-cache-status, ובשדה Value (ערך), מציינים {cdn_cache_status}.
      4. לוחצים על סיום.
    6. בקטע פעולת נתיב, לוחצים על הוספת פריט. לאחר מכן, מבצעים את הפעולות הבאות:
      1. בשדה Type (סוג), בוחרים באפשרות CDN policy (מדיניות CDN).
      2. בקטע מצב מטמון, בוחרים באפשרות FORCE_CACHE_ALL.
      3. לוחצים על סיום.
    7. לוחצים על Save.
  8. לוחצים על יצירת שירות.

משאב EdgeCacheService שנוצר מופיע בדף Services ברשימת השירותים בפרויקט.

gcloud

  1. ב-Cloud Shell, משתמשים בעורך טקסט כדי ליצור קובץ מקומי בשם my-service.yaml.

    קובץ כזה מציין את הפרטים הבאים:

    • איך הניתוב פועל – קודם מתבצעת התאמה של המארח ואז של הנתיב
    • איך פועל המטמון – על סמך מצב המטמון וערך ה-TTL
    • איך הבקשות והתשובות משתנות – לדוגמה, על ידי הוספת המשתנה cdn_cache_status לכותרת של תשובה
  2. מדביקים את תוכן הדוגמה הבא בקובץ ושומרים אותו:

    name: SERVICE
    routing:
      hostRules:
      - hosts:
        - DOMAIN 
        pathMatcher: routes
      pathMatchers:
      - name: routes
        routeRules:
        - priority: 1
          matchRules:
          - prefixMatch: /
          origin: ORIGIN
          routeAction:
            cdnPolicy:
              cacheMode: CACHE_ALL_STATIC
              defaultTtl: 3600s
          headerAction:
            responseHeadersToAdd:
            - headerName: "x-cache-status"
              headerValue: "{cdn_cache_status}"
    

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

    • SERVICE: שם השירות
    • DOMAIN: הדומיין של השירות החדש

      אם מציינים את שם הדומיין, Media CDN מגיב עם שגיאה 404 עבור מארחים אחרים.

    • ORIGIN: השם של המקור הקשור

  3. משתמשים בפקודה gcloud edge-cache services import עם קובץ ה-YAML:

    gcloud edge-cache services import SERVICE \
        --source=my-service.yaml
    

    כדי לראות את השירות החדש שנוצר ברשימת המשאבים EdgeCacheService בפרויקט, משתמשים בפקודה gcloud edge-cache services list.

API

משתמשים בשיטה edgeCacheServices.create:

POST https://networkservices.googleapis.com/v1/PARENT/edgeCacheServices?edgeCacheServiceId=SERVICE_NAME
{
  "name": "SERVICE_NAME",
  "routing": {
    "hostRules": [
      {
        "hosts": ["DOMAIN"],
        "pathMatcher": "routes"
      }
    ],
    "pathMatchers": [
      {
        "name": "routes",
        "routeRules": [
          {
            "priority": "1",
            "matchRules": [
              {
                "prefixMatch": "/"
              }
            ],
            "origin": "ORIGIN",
            "routeAction": {
               "cdnPolicy": {
                 "cacheMode": "CACHE_ALL_STATIC",
                 "defaultTtl": "3600s"
               }
            }
            "headerAction": {
              "responseHeadersToAdd": [
                {
                  "headerName": "x-cache-status",
                  "headerValue": "{cdn_cache_status}"
                }
              ]
            },
          }
        ]
      }
    ]
  }
}

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

  • PARENT: משאב האב בפורמט projects/PROJECT/locations/global
  • SERVICE_NAME: שם השירות
  • DOMAIN: הדומיין של השירות החדש

    אם מציינים את שם הדומיין, Media CDN מגיב עם שגיאה 404 עבור מארחים אחרים.

  • ORIGIN_NAME: השם של המקור הקשור

כדי לראות את השירות החדש שנוצר ברשימת המשאבים EdgeCacheService בפרויקט, משתמשים בשיטה edgeCacheServices.list.

Terraform

resource "google_network_services_edge_cache_service" "default" {
  name = "cloud-media-service"
  routing {
    host_rule {
      hosts        = ["googlecloudexample.com"]
      path_matcher = "routes"
    }
    path_matcher {
      name = "routes"
      route_rule {
        description = "a default route rule, priority=10 (low)"
        priority    = 10
        match_rule {
          prefix_match = "/"
        }
        origin = google_network_services_edge_cache_origin.default.name
        route_action {
          cdn_policy {
            cache_mode  = "CACHE_ALL_STATIC"
            default_ttl = "3600s"
          }
        }
        header_action {
          response_header_to_add {
            header_name  = "x-cache-status"
            header_value = "{cdn_cache_status}"
          }
        }
      }
    }
  }
}

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

אחזור כתובות ה-IP

כדי לראות את כתובות ה-IP של השירות החדש שיצרתם, פועלים לפי השלבים הבאים:

המסוף

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

    מעבר אל Media CDN

  2. לוחצים על הכרטיסייה Services (שירותים).

  3. כתובות ה-IP של השירות מופיעות בתא Addresses.

    אם התא ריק, מרעננים את הדפדפן.

gcloud

משתמשים בפקודה gcloud edge-cache services describe:

gcloud edge-cache services describe SERVICE

מחליפים את SERVICE בשם השירות.

בפלט מוצגות כתובות ה-IP שהוקצו לשירות שלכם:

ipv4Addresses:
    IPV4_ADDRESS
ipv6Addresses:
    IPV6_ADDRESS
name: projects/my-project/locations/global/edgeCacheServices/SERVICE
...

API

משתמשים בשיטה edgeCacheServices.get:

GET https://networkservices.googleapis.com/v1/SERVICE_NAME

מחליפים את SERVICE_NAME בשם המלא של השירות. צריך להשתמש בפורמט הבא:

projects/PROJECT/locations/global/edgeCacheServices/SERVICE_NAME

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

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

ipv4Addresses:
    IPV4_ADDRESS
ipv6Addresses:
    IPV6_ADDRESS

בדיקה אם התגובה נשמרת במטמון

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

כדי לבדוק שהשירות מוגדר בצורה נכונה לשמירת תוכן במטמון, אפשר להשתמש בכלי curl של שורת הפקודה כדי לשלוח בקשות ולבדוק את התגובות. curl זמין גם ב-Cloud Shell במסוף Google Cloud .

אם רוצים להשתמש ב-EdgeCacheService עם הדומיין, אפשר להקצות את כתובת ה-IP של EdgeCacheService לרשומת דומיין. הוראות מפורטות זמינות במאמר הגדרת הדומיין באמצעות Cloud DNS. אחרי שמגדירים את הדומיין, ניגשים לתוכן באמצעות הפקודה הבאה: curl

curl -svo /dev/null "http://DOMAIN_NAME/FILENAME"

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

curl -svo /dev/null --resolve DOMAIN_NAME:80:IP_ADDRESS "http://DOMAIN_NAME/FILENAME"

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

  • DOMAIN_NAME : דומיין המארח שציינתם כשיצרתם את השירות
  • IP_ADDRESS: כתובת ה-IP של השירות כפי שהיא מופיעה בעמודה כתובות ברשימת השירותים
  • FILENAME: השם של הקובץ שהעליתם לקטגוריה

דוגמה:

curl -svo /dev/null --resolve web.example.com:80:34.104.37.129 "http://web.example.com/file.mp4"

הפלט הראשוני של הפקודה דומה לזה שמופיע בהמשך, עם הסטטוס miss, כי Media CDN לא אחזר כבר את הנתונים המבוקשים מהמקור:

< HTTP/2 200 OK
...
< x-cache-status: den;miss
...

כששולחים את אותה בקשה שוב ושוב, מתקבל פלט שדומה לזה שבהמשך, עם הסטטוס hit:

< HTTP/2 200 OK
...
< x-cache-status: den;hit
...

אם הסטטוס hit לא מופיע, כדאי לבדוק את הדברים הבאים:

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

בדקתם עכשיו משאב בסיסי של EdgeCacheService שיכול להציג תוכן ברחבי העולם. יכול להיות ששירות ברמת ייצור יצטרך אישורי SSL (TLS), כמה מקורות וכללי מדיניות אבטחה של Google Cloud Armor.

אופציונלי: ניקוי

מוחקים את כל המשאבים שלא מתכוונים להשתמש בהם שוב.

המסוף

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

    מעבר אל Media CDN

  2. לוחצים על הכרטיסייה Services (שירותים).

  3. בוחרים את השירות ולוחצים על מחיקה.

  4. לוחצים על הכרטיסייה מקורות.

  5. בוחרים את המקור ולוחצים על מחיקה.

gcloud

  1. כדי לראות את רשימת המשאבים שיצרתם, משתמשים בפקודה gcloud edge-cache origins list ובפקודה gcloud edge-cache services list.

  2. כדי למחוק את השירות, משתמשים בפקודה gcloud edge-cache services delete:

    gcloud edge-cache services delete SERVICE
    

    מחליפים את SERVICE בשם השירות.

  3. כדי למחוק את המקור, משתמשים בפקודה gcloud edge-cache origins delete:

    gcloud edge-cache origins delete ORIGIN
    

    מחליפים את ORIGIN בשם של נקודת המוצא.

API

  1. כדי להציג רשימה של המשאבים שיצרתם, משתמשים ב-method ‏edgeCacheServices.list וב-method ‏edgeCacheOrigins.list.

  2. כדי למחוק את השירות, משתמשים ב-method‏ edgeCacheServices.delete:

    DELETE https://networkservices.googleapis.com/v1/SERVICE_NAME
    

    מחליפים את SERVICE_NAME בשם המלא של השירות. צריך להשתמש בפורמט הבא:

    projects/PROJECT/locations/global/edgeCacheServices/SERVICE_NAME
    

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

  3. כדי למחוק את המקור, משתמשים בשיטת edgeCacheOrigins.delete:

    DELETE https://networkservices.googleapis.com/v1/ORIGIN
    

    מחליפים את ORIGIN בשם המלא של המקור. צריך להשתמש בפורמט הבא:

    projects/PROJECT/locations/global/edgeCacheOrigins/ORIGIN_ID
    

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

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

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