הגדרת Cloud Run,‏ Cloud Functions או App Engine

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

  • App Engine
  • פונקציות Cloud Run
  • Cloud Run

קבוצות של נקודות קצה ברשת (NEGs) בלי שרת (serverless) מאפשרות להשתמש בGoogle Cloud אפליקציות בלי שרת (serverless) עם מאזני עומסים חיצוניים של אפליקציות (ALB). אחרי שמגדירים מאזן עומסים עם קצה עורפי של NEG בלי שרת (serverless), בקשות למאזן העומסים מנותבות לקצה העורפי של האפליקציה בלי שרת (serverless).

מידע נוסף על קבוצות NEGs ללא שרת זמין במאמר סקירה כללית על קבוצות NEGs ללא שרת.

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

  1. פריסת פונקציות של App Engine או Cloud Run, או שירות של Cloud Run.
  2. אם עדיין לא עשיתם זאת, מתקינים את Google Cloud CLI.
  3. הגדרת ההרשאות
  4. הוספת משאב של אישור SSL.

פריסת שירות של App Engine, פונקציות Cloud Run או שירות Cloud Run

ההוראות בדף הזה מניחות שכבר יש לכם שירות פעיל של Cloud Run, פונקציות Cloud Run או App Engine.

בדוגמה שבדף הזה, השתמשנו בהפעלה מהירה של Cloud Run Python כדי לפרוס שירות Cloud Run באזור us-central1. בהמשך הדף מוסבר איך להגדיר מאזן עומסים חיצוני של אפליקציות (ALB) שמשתמש בקצה עורפי של NEG בלי שרת (serverless) כדי לנתב בקשות לשירות הזה.

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

Cloud Run

כדי ליצור אפליקציית Hello World פשוטה, לארוז אותה בקובץ אימג' של קונטיינר ואז לפרוס את קובץ האימג' של הקונטיינר ב-Cloud Run, אפשר לעיין במאמר מדריך למתחילים: בנייה ופריסה.

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

פונקציות Cloud Run

מדריך למתחילים: פונקציות Cloud Run ב-Python

App Engine

כדאי לעיין במדריכים למתחילים הבאים בנושא App Engine ל-Python 3:

התקנת Google Cloud CLI

מתקינים את Google Cloud CLI. למידע על הכלי, כולל הסברים והוראות התקנה, אפשר לעיין במאמר סקירה כללית על gcloud.

אם לא הפעלתם את ה-CLI של gcloud בעבר, קודם מריצים את הפקודה gcloud init כדי לאתחל את ספריית gcloud.

הגדרת ההרשאות

כדי לפעול לפי המדריך הזה, צריך ליצור NEG בלי שרת (serverless) וליצור מאזן עומסים (LB) חיצוני של HTTP(S) בפרויקט. צריכה להיות לכם הרשאת בעלים או עריכה בפרויקט, או תפקידי ה-IAM הבאים ב-Compute Engine:

משימה התפקיד הנדרש
יצירת מאזן עומסים ורכיבי רשת אדמין רשתות
יצירה ושינוי של קבוצות NEG Compute Instance Admin
יצירה ושינוי של אישורי SSL Security Admin

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

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

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

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

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

המסוף

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

    נכנסים אל External IP addresses

  2. לוחצים על שמירת כתובת IP חיצונית סטטית.

  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

מחליפים את EXAMPLE_IP בשם של כתובת ה-IP.

יצירת משאב של אישור SSL

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

מפת אישורים

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

אישור SSL ב-Compute Engine

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

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

יצירת מאזן העומסים

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

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

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

המסוף

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

  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 (דור מאזן העומסים), בוחרים באפשרות Classic Application Load Balancer (מאזן עומסים קלאסי לאפליקציות) ולוחצים על Next (הבא).
  7. לוחצים על Configure (הגדרה).

הגדרה בסיסית

  1. בשדה של שם מאזן העומסים, מזינים serverless-lb.
  2. כדי להמשיך, צריך להשאיר את החלון פתוח.

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

  1. לוחצים על Frontend configuration.
  2. בשדה Name (שם), מזינים שם.
  3. כדי ליצור מאזן עומסים ב-HTTPS, צריך שיהיה לכם אישור SSL (gcloud compute ssl-certificates list).

    מומלץ להשתמש באישור ש-Google מנהלת, כמו שמתואר למעלה.

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

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

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

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

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

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

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

  1. לוחצים על Backend configuration.
  2. ברשימה Backend services & backend buckets לוחצים על Create a backend service.
  3. בשדה Name (שם), מזינים שם.
  4. בקטע Backend type (סוג קצה עורפי), בוחרים באפשרות Serverless network endpoint group (קבוצה של נקודות קצה ברשת ללא שרת).
  5. משאירים את Protocol ללא שינוי. המערכת מתעלמת מהפרמטר הזה.
  6. בקטע Backends, באפשרות New backend, בוחרים באפשרות Create Serverless network endpoint group.
  7. בשדה Name (שם), מזינים שם.
  8. לוחצים על יצירה.
  9. בקטע New backend (שרת קצה עורפי חדש), לוחצים על Done (סיום).
  10. בוחרים באפשרות הפעלת Cloud CDN.
  11. אופציונלי: משנים את ההגדרות של מצב מטמון ושל TTL.
  12. לוחצים על יצירה.

כללי ניתוב

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

  1. לוחצים על Host and path rules (כללים לגבי מארח ונתיב).

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

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

  1. לוחצים על Review and finalize.
  2. בודקים את כל ההגדרות.
  3. אופציונלי: לוחצים על Equivalent Code (קוד מקביל) כדי לראות את בקשת ה-API בארכיטקטורת REST שתשמש ליצירת מאזן העומסים.
  4. לוחצים על יצירה.
  5. מחכים שמאזן העומסים ייווצר.
  6. לוחצים על השם של מאזן העומסים (serverless-lb).
  7. שימו לב לכתובת ה-IP של מאזן העומסים לקראת המשימה הבאה. היא נקראת IP_ADDRESS.

gcloud

  1. יוצרים NEG בלי שרת עבור האפליקציה בלי שרת. אפשרויות נוספות מפורטות במדריך העזר בנושא gcloudgcloud compute network-endpoint-groups create.
  2. יוצרים שירות לקצה העורפי.
       gcloud compute backend-services create BACKEND_SERVICE_NAME \
           --load-balancing-scheme=LOAD_BALANCING_SCHEME \
           --global \
           --enable-cdn \
           --cache-mode=CACHE_MODE \
           --custom-response-header='Cache-Status: {cdn_cache_status}' \
           --custom-response-header='Cache-ID: {cdn_cache_id}'
       

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

    • CACHE_All_STATIC (ברירת מחדל): שמירה אוטומטית במטמון של תוכן סטטי.
    • USE_ORIGIN_HEADERS: המקור צריך להגדיר כותרות תקפות של שמירה במטמון כדי לשמור תוכן במטמון.
    • FORCE_CACHE_ALL: מאחסן במטמון את כל התוכן, בלי להתייחס להנחיות private,‏ no-store או no-cache בכותרות התגובה של Cache-Control.

    מידע על הנחיות המטמון ש-Cloud CDN מבין ועל התוכן שלא נשמר במטמון על ידי Cloud CDN מופיע במאמרים תוכן שניתן לשמירה במטמון ותוכן שלא ניתן לשמירה במטמון.

  3. מוסיפים את ה-NEG בלי שרת (serverless) כקצה עורפי לשירות לקצה העורפי:
       gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
           --global \
           --network-endpoint-group=SERVERLESS_NEG_NAME \
           --network-endpoint-group-region=us-central1
       
  4. יוצרים מפת URL כדי לנתב בקשות נכנסות לשירות הקצה העורפי:
       gcloud compute url-maps create URL_MAP_NAME \
           --default-service BACKEND_SERVICE_NAME
       

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

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

    כדי ליצור אישור שמנוהל על ידי Google, צריך שיהיה לכם דומיין. אם אין לכם דומיין, אתם יכולים להשתמש באישור SSL בחתימה עצמית לצורך בדיקה.

    כדי ליצור משאב של אישור SSL בניהול Google:
       gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \
           --domains DOMAIN
       
    כדי ליצור משאב של אישור SSL בניהול עצמי:
       gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \
           --certificate CRT_FILE_PATH \
           --private-key KEY_FILE_PATH
       
  6. יוצרים שרת proxy של HTTP(S) ליעד כדי להפנות בקשות למפת URL.

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

       gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
          --ssl-certificates=SSL_CERTIFICATE_NAME \
          --url-map=URL_MAP_NAME
       
  7. יוצרים כלל העברה כדי להפנות בקשות נכנסות לשרת ה-proxy.

    במאזן עומסים מסוג HTTPS:

       gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \
           --load-balancing-scheme=EXTERNAL \
           --network-tier=PREMIUM \
           --address=EXAMPLE_IP \
           --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
           --global \
           --ports=443
       

חיבור הדומיין למאזן העומסים

אחרי שיוצרים את מאזן העומסים, רושמים את כתובת ה-IP שמשויכת למאזן העומסים – לדוגמה, 30.90.80.100. כדי להפנות את הדומיין למאזן העומסים, צריך ליצור רשומת A באמצעות שירות הרישום של הדומיין. אם הוספתם מספר דומיינים לאישור ה-SSL, צריך להוסיף רשומת A לכל אחד מהם, כשכולם מפנים לכתובת ה-IP של מאזן העומסים. לדוגמה, כדי ליצור רשומות A בשביל www.example.com ובשביל example.com, משתמשים בפקודה הבאה:

NAME                  TYPE     DATA
www                   A        30.90.80.100
@                     A        30.90.80.100

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

בדיקת מאזן העומסים

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

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

    כניסה לדף Load balancing

  2. לוחצים על מאזן העומסים שיצרתם.

  3. שימו לב לכתובת ה-IP של מאזן העומסים.

  4. במקרה של מאזן עומסים ב-HTTPS, אפשר לבדוק את מאזן העומסים באמצעות דפדפן אינטרנט על ידי מעבר אל https://IP_ADDRESS. מחליפים את IP_ADDRESS בכתובת ה-IP של מאזן העומסים. המערכת אמורה להפנות אתכם לדף הבית של שירות helloworld.
    אם זה לא עובד ואתם משתמשים באישור שמנוהל על ידי Google, צריך לוודא שהסטטוס של משאב האישור הוא ACTIVE. מידע נוסף זמין במאמר סטטוס של משאב אישור SSL בניהול Google.
    אם השתמשתם באישור בחתימה עצמית לבדיקה, תוצג בדפדפן אזהרה. צריך להנחות את הדפדפן באופן מפורש לקבל אישור בחתימה עצמית. לוחצים על האזהרה כדי לראות את הדף בפועל.

  5. כדי לאמת תגובות של מטמון, משתמשים ב-curl משורת הפקודה של המחשב המקומי. מחליפים את IP_ADDRESS בכתובת ה-IPv4 של מאזן העומסים.

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

    curl -v -o/dev/null https://IP_ADDRESS
    

    אם אתם משתמשים באישור בחתימה עצמית, אתם צריכים לציין גם את הדגל -k. לדוגמה:

    curl -v -o/dev/null -k -s 'https://DOMAIN:443' --connect-to DOMAIN:443:IP_ADDRESS:443
    

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

    הפלט צריך לכלול את הכותרות המותאמות אישית Cache-ID ו-Cache-Status שהגדרתם כדי לציין אם התגובה הוגשה מהמטמון:

    HTTP/2 200
    cache-status: hit
    cache-id: SEA-b9fa975e
    

    הפלט מכיל את כותרות התגובה שמציינות שהייתה מציאה במטמון (cache hit), כלומר הנכס הסטטי באפליקציה בלי שרת (serverless) הוגש למשתמש ממטמון קצה של Cloud CDN.

    הערך של הכותרת cache-status הוא disabled בתגובות שלא נשמרו במטמון ב-Cloud CDN. בתגובות שנשמרו במטמון, ערך הכותרת cache-status הוא hit,‏ miss או revalidated.

הגבלת תעבורה נכנסת בנקודת קצה (endpoint) שמוגדרת כברירת מחדל

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

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

בנוסף, אפשר להשבית את כתובת ה-URL שמוגדרת כברירת מחדל ב-Cloud Run.

השבתת Cloud CDN

המסוף

השבתת Cloud CDN לשירות קצה עורפי יחיד

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

    מעבר אל Cloud CDN

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

  3. מבטלים את הסימון של תיבות הסימון של כל שירותי הקצה העורפי שרוצים להפסיק את השימוש שלהם ב-Cloud CDN.

  4. לוחצים על עדכון.

הסרת Cloud CDN מכל שירותי ה-Backend של מקור

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

    מעבר אל Cloud CDN

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

  3. כדי לאשר, לוחצים על הסרה.

gcloud

gcloud compute backend-services update BACKEND_SERVICE_NAME 
--no-enable-cdn

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

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