בדף הזה מוסבר איך ליצור מאזן עומסים חיצוני של אפליקציות כדי להפנות בקשות אל עורפי קצה בלי שרתים (serverless). המונח 'בלי שרת' מתייחס כאן למוצרי המחשוב הבאים בלי שרת:
- App Engine
- פונקציות Cloud Run
- Cloud Run
קבוצות של נקודות קצה ברשת בלי שרת מאפשרות להשתמש בGoogle Cloud אפליקציות בלי שרת עם מאזני עומסים חיצוניים של אפליקציות. אחרי שמגדירים מאזן עומסים עם קצה עורפי של NEG בלי שרת, בקשות למאזן העומסים מנותבות לקצה העורפי של האפליקציה בלי שרת.
מידע נוסף על NEGs בלי שרת (serverless) זמין במאמר סקירה כללית של NEGs בלי שרת (serverless).
לפני שמתחילים
- פריסת פונקציות App Engine, פונקציות Cloud Run או שירות Cloud Run.
- אם עדיין לא עשיתם זאת, מתקינים את Google Cloud CLI.
- הגדרת ההרשאות
- הוספת משאב של אישור SSL.
פריסת פונקציות Cloud Run, שירות Cloud Run או אפליקציית App Engine
ההוראות בדף הזה מניחות שכבר יש לכם שירות פעיל של Cloud Run, פונקציות Cloud Run או App Engine.
בדוגמה שבדף הזה, השתמשנו במדריך למתחילים של Cloud Run Python כדי לפרוס שירות Cloud Run באזור us-central1. בהמשך הדף מוסבר איך להגדיר מאזן עומסים חיצוני של אפליקציות (ALB) שמשתמש בקצה עורפי של NEG בלי שרתים כדי לנתב בקשות לשירות הזה.
אם עדיין לא פרסתם אפליקציה בלי שרת (serverless), או אם אתם רוצים לנסות NEG בלי שרת (serverless) עם אפליקציה לדוגמה, תוכלו להשתמש באחד מהמדריכים למתחילים שבהמשך. אפשר ליצור אפליקציה בלי שרת בכל אזור, אבל בהמשך צריך להשתמש באותו אזור כדי ליצור את ה-NEG בלי שרת ואת מאזן העומסים (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 ללא שרת וליצור מאזן עומסים חיצוני של HTTP(S) בפרויקט. צריכה להיות לכם הרשאת בעלים או עריכה בפרויקט, או תפקידי ה-IAM הבאים ב-Compute Engine:
| משימה | התפקיד הנדרש |
|---|---|
| יצירת מאזן עומסים ורכיבי רשת | אדמין רשתות |
| יצירה ושינוי של קבוצות של ישויות בעלות שם | אדמין מכונות של Compute |
| יצירה ושינוי של אישורי SSL | אדמין לענייני אבטחה |
אופציונלי: שימוש בכתובות BYOIP
באמצעות העברת כתובות IP משלכם (BYOIP), אתם יכולים לייבא כתובות ציבוריות משלכם אלGoogle Cloud כדי להשתמש בכתובות עם משאבי Google Cloud . לדוגמה, אם מייבאים כתובות IPv4 משלכם, אפשר להקצות אחת מהן לכלל ההעברה כשמגדירים את מאזן העומסים. כשפועלים לפי ההוראות במסמך הזה כדי ליצור את מאזן העומסים, צריך לספק את כתובת ה-BYOIP בתור כתובת ה-IP.
מידע נוסף על השימוש ב-BYOIP זמין במאמר בנושא העברת כתובות IP משלכם.
שמירת כתובת IP חיצונית
אחרי שהשירותים שלכם פועלים, צריך להגדיר כתובת IP חיצונית סטטית גלובלית שהלקוחות שלכם משתמשים בה כדי להגיע למאזן העומסים.
המסוף
נכנסים לדף External IP addresses במסוף Google Cloud .
לוחצים על שמירת כתובת IP חיצונית סטטית.
בשדה Name (שם), מזינים
example-ip.בקטע Network service tier, בוחרים באפשרות Premium.
בשביל IP version, בוחרים IPv4.
בשדה Type (סוג), בוחרים באפשרות Global (גלובלי).
לוחצים על 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
כדי ליצור מאזן עומסים מסוג HTTPS, צריך להוסיף משאב של אישור SSL לממשק הקצה של מאזן העומסים. יוצרים משאב של אישור SSL באמצעות אישור SSL בניהול Google או אישור SSL בניהול עצמי.
אישורים שמנוהלים על ידי Google. מומלץ להשתמש באישורים בניהול Google כי Google Cloud מקבלים, מנהלים ומחדשים את האישורים האלה באופן אוטומטי. כדי ליצור אישור שמנוהל על ידי Google, צריך דומיין ורשומות DNS של הדומיין הזה כדי שהאישור יוקצה.
בנוסף, צריך לעדכן את רשומת ה-A ב-DNS של הדומיין כך שתפנה לכתובת ה-IP של מאזן העומסים שנוצרה בשלב הקודם. אם יש לכם כמה דומיינים באישור שמנוהל על ידי Google, אתם צריכים לעדכן את רשומות ה-DNS של כל הדומיינים ותתי-הדומיינים כך שיפנו לכתובת ה-IP של מאזן העומסים. הוראות מפורטות זמינות במאמר שימוש באישורים שמנוהלים על ידי Google.
אישורים בחתימה עצמית. אם אתם לא רוצים להגדיר דומיין בשלב הזה, אתם יכולים להשתמש באישור SSL בחתימה עצמית לצורך בדיקה.
בדוגמה הזו אנחנו מניחים שכבר יצרתם משאב של אישור SSL.
אם אתם רוצים לבדוק את התהליך הזה בלי ליצור משאב של אישור SSL (או דומיין, כפי שנדרש באישורים בניהול Google), אתם עדיין יכולים להשתמש בהוראות שבדף הזה כדי להגדיר איזון עומסים של HTTP במקום זאת.
יצירת מאזן העומסים
בתרשים הבא, מאזן העומסים משתמש בקצה עורפי של NEG ללא שרת כדי להפנות בקשות לשירות Cloud Run ללא שרת. בדוגמה הזו השתמשנו במדריך למתחילים של Cloud Run Python כדי לפרוס שירות Cloud Run.
מכיוון שבדיקות תקינות לא נתמכות בשירותים לקצה העורפי עם קצה עורפי של NEG ללא שרתים, אין צורך ליצור כלל חומת אש שמאפשר בדיקות תקינות אם למאזן העומסים יש רק קצה עורפי של NEG ללא שרתים.
המסוף
בחירת סוג מאזן העומסים
נכנסים לדף Load balancing במסוף Google Cloud .
- לוחצים על Create load balancer (יצירת מאזן עומסים).
- בקטע Type of load balancer, בוחרים באפשרות Application Load Balancer (HTTP/HTTPS) ולוחצים על Next.
- בקטע Public facing or internal (פנימי או חיצוני), בוחרים באפשרות Public facing (external) (חיצוני) ולוחצים על Next (הבא).
- לפריסה גלובלית או פריסה באזור יחיד, בוחרים באפשרות הכי מתאים לעומסי עבודה גלובליים ולוחצים על הבא.
- בקטע Load balancer generation (דור מאזן העומסים), בוחרים באפשרות Classic Application Load Balancer (מאזן עומסים קלאסי לאפליקציות) ולוחצים על Next (הבא).
- לוחצים על Configure (הגדרה).
הגדרה בסיסית
- בשדה של שם מאזן העומסים, מזינים
serverless-lb. - כדי להמשיך, צריך להשאיר את החלון פתוח.
הגדרות הקצה הקדמי
- לוחצים על Frontend configuration.
- בשדה Name (שם), מזינים שם.
-
כדי ליצור מאזן עומסים ב-HTTPS, צריך שיהיה לכם אישור SSL (
gcloud compute ssl-certificates list).מומלץ להשתמש באישור שמנוהל על ידי Google, כפי שמתואר קודם.
- לוחצים על סיום.
כדי להגדיר מאזן עומסים של אפליקציות (ALB) חיצוני, ממלאים את השדות באופן הבא.
מוודאים שהאפשרויות הבאות מוגדרות עם הערכים האלה:
| מאפיין (property) | ערך (מקלידים ערך או בוחרים אפשרות כמפורט) |
|---|---|
| פרוטוקול | HTTPS |
| Network Service Tier | Premium |
| גרסת IP | IPv4 |
| כתובת IP | example-ip |
| יציאה | 443 |
| אישור | בוחרים אישור SSL קיים או יוצרים אישור חדש. כדי ליצור מאזן עומסים ב-HTTPS, צריך שיהיה לכם משאב של אישור SSL לשימוש בשרת ה-proxy של HTTPS. אפשר ליצור משאב של אישור SSL באמצעות אישור SSL בניהול Google או אישור SSL בניהול עצמי. כדי ליצור אישור שמנוהל על ידי Google, צריך דומיין. רשומת הכתובת הקבועה של הדומיין צריכה להפנות לכתובת ה-IP של איזון העומסים שיצרתם קודם בתהליך הזה. מומלץ להשתמש באישורים שמנוהלים על ידי Google כי Google Cloud היא מקבלת, מנהלת ומחדשת את האישורים האלה באופן אוטומטי. אם אין לכם דומיין, אתם יכולים להשתמש באישור SSL בחתימה עצמית לבדיקה. |
| אופציונלי: הפעלת הפניה אוטומטית מ-HTTP ל-HTTPS |
משתמשים בתיבת הסימון הזו כדי להפעיל הפניות אוטומטיות מ-HTTP ל-HTTPS.
אם מסמנים את תיבת הסימון הזו, נוצר מאזן עומסים חלקי נוסף של HTTP שמשתמש באותה כתובת IP כמו מאזן העומסים של HTTPS, ומפנה בקשות HTTP לחלק הקדמי של מאזן העומסים של HTTPS. אפשר לסמן את התיבה הזו רק אם בוחרים בפרוטוקול HTTPS ומשתמשים בכתובת IP שמורה. |
הגדרת הקצה העורפי
- לוחצים על Backend configuration.
- ברשימה Backend services & backend buckets לוחצים על יצירת שירות לקצה העורפי.
- בשדה Name (שם), מזינים שם.
- בקטע Backend type (סוג קצה עורפי), בוחרים באפשרות Serverless network endpoint group (קבוצה של נקודות קצה ברשת ללא שרת).
- משאירים את Protocol ללא שינוי. המערכת מתעלמת מהפרמטר הזה.
- בקטע Backends, באפשרות New backend, בוחרים באפשרות Create Serverless network endpoint group.
- בשדה Name (שם), מזינים שם.
- לוחצים על יצירה.
- בקטע New backend (קצה עורפי חדש), לוחצים על Done (סיום).
- בוחרים באפשרות הפעלת Cloud CDN.
- אופציונלי: משנים את ההגדרות של מצב מטמון ושל TTL.
- לוחצים על יצירה.
כללי ניתוב
כללי הניתוב קובעים לאן התנועה מופנית. כדי להגדיר ניתוב, צריך להגדיר כללי מארח ורכיבי השוואה של נתיבים, שהם רכיבי הגדרה של מפת URL של מאזן עומסים חיצוני של אפליקציות (ALB).
-
לוחצים על Host and path rules (כללים לגבי מארח ונתיב).
- שומרים את המארחים והנתיבים שמוגדרים כברירת מחדל. בדוגמה הזו, כל הבקשות מועברות לשירות העורפי שנוצר בשלב הקודם.
בדיקת ההגדרות
- לוחצים על Review and finalize.
- בודקים את כל ההגדרות.
- אופציונלי: לוחצים על Equivalent Code (קוד מקביל) כדי לראות את בקשת ה-API בארכיטקטורת REST שתשמש ליצירת מאזן העומסים.
- לוחצים על יצירה.
- מחכים שמאזן העומסים ייווצר.
- לוחצים על השם של מאזן העומסים (serverless-lb).
- שימו לב לכתובת ה-IP של מאזן העומסים לקראת המשימה הבאה. היא נקראת
IP_ADDRESS.
gcloud
- יוצרים NEG ללא שרת עבור האפליקציה ללא שרת.
אפשרויות נוספות מפורטות במדריך העזר בנושא
gcloudgcloud compute network-endpoint-groups create. - יוצרים שירות לקצה העורפי.
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 מופיע במאמרים תוכן שאפשר לשמור במטמון ותוכן שלא ניתן לשמור במטמון.
-
- מוסיפים את ה-NEG בלי שרת (serverless) כקצה עורפי לשירות לקצה העורפי:
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --global \ --network-endpoint-group=SERVERLESS_NEG_NAME \ --network-endpoint-group-region=us-central1 - יוצרים מפת URL כדי לנתב בקשות נכנסות לשירות הקצה העורפי:
gcloud compute url-maps create URL_MAP_NAME \ --default-service BACKEND_SERVICE_NAMEמפת ה-URL בדוגמה הזו מכוונת רק לשירות לקצה העורפי אחד שמייצג אפליקציה אחת בלי שרת (serverless), ולכן אין צורך להגדיר כללי מארח או התאמות נתיבים. אם יש לכם יותר משירות קצה עורפי אחד, אתם יכולים להשתמש בכללי מארח כדי להפנות בקשות לשירותים שונים על סמך שם המארח, ולהגדיר התאמות נתיבים כדי להפנות בקשות לשירותים שונים על סמך נתיב הבקשה.
-
כדי ליצור מאזן עומסים ב-HTTPS, צריך שיהיה לכם משאב של אישור SSL לשימוש בשרת ה-proxy של יעד HTTPS.
אפשר ליצור משאב של אישור SSL באמצעות אישור SSL בניהול Google או אישור SSL בניהול עצמי. מומלץ להשתמש באישורים שמנוהלים על ידי Google כי Google Cloud היא משיגה, מנהלת ומחדשת את האישורים האלה באופן אוטומטי.
כדי ליצור אישור שמנוהל על ידי Google, צריך דומיין. אם אין לכם דומיין, אתם יכולים להשתמש באישור SSL בחתימה עצמית לצורך בדיקה.
כדי ליצור משאב של אישור SSL בניהול Google: כדי ליצור משאב של אישור SSL בניהול עצמי:gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --domains DOMAINgcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --certificate CRT_FILE_PATH \ --private-key KEY_FILE_PATH -
יוצרים שרת proxy של HTTP(S) ליעד כדי להפנות בקשות למפת URL.
למאזן עומסים מסוג HTTPS, יוצרים שרת proxy ליעד מסוג HTTPS. ה-proxy הוא החלק במאזן העומסים שמכיל את אישור ה-SSL לאיזון עומסים של HTTPS, ולכן בשלב הזה צריך גם לטעון את האישור.
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --ssl-certificates=SSL_CERTIFICATE_NAME \ --url-map=URL_MAP_NAME - יוצרים כלל העברה כדי להפנות בקשות נכנסות לשרת ה-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 לבדיקה.
נכנסים לדף Load balancing במסוף Google Cloud .
לוחצים על מאזן העומסים שיצרתם.
שימו לב לכתובת ה-IP של מאזן העומסים.
במקרה של מאזן עומסים ב-HTTPS, אפשר לבדוק את מאזן העומסים באמצעות דפדפן אינטרנט על ידי מעבר אל
https://IP_ADDRESS. מחליפים אתIP_ADDRESSבכתובת ה-IP של מאזן העומסים. המערכת אמורה להפנות אתכם לדף הבית של שירותhelloworld.
אם זה לא עובד ואתם משתמשים באישור שמנוהל על ידי Google, צריך לוודא שהסטטוס של משאב האישור הוא ACTIVE. מידע נוסף זמין במאמר בנושא סטטוס של משאב אישור SSL בניהול Google.
אם השתמשתם באישור בחתימה עצמית לצורך בדיקה, תוצג בדפדפן אזהרה. צריך להנחות את הדפדפן באופן מפורש לקבל אישור בחתימה עצמית. לוחצים על האזהרה כדי לראות את הדף בפועל.כדי לאמת תשובות של מטמון, משתמשים ב-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.
הגבלת תעבורת נתונים נכנסת (ingress) בנקודת קצה (endpoint) שמוגדרת כברירת מחדל
בלי הגדרות הכניסה המתאימות, משתמשים יכולים להשתמש בכתובת ה-URL שמוגדרת כברירת מחדל לאפליקציה ללא שרת כדי לעקוף את איזון העומסים, את מדיניות האבטחה של Cloud Armor, את אישורי ה-SSL ואת המפתחות הפרטיים שמועברים דרך איזון העומסים.
כדי לוודא שתעבורה חיצונית מגיעה לאפליקציה בלי שרת רק ממאזן העומסים, צריך להגדיר את תעבורת הנתונים הנכנסת ל'איזון עומסים פנימי ו-Cloud Load Balancing'.
- הגדרת תעבורת נתונים נכנסת (ingress) לרשת לערך Internal and Cloud Load Balancing (איזון עומסים פנימי ובענן) ב-App Engine
- הגדרת כניסה לרשת לערך 'Internal and Cloud Load Balancing' (פנימי ואיזון עומסים ב-Cloud) עבור פונקציות Cloud Run
- הגדרת תעבורת נתונים נכנסת (ingress) לרשת לערך 'פנימי ו-Cloud Load Balancing' ב-Cloud Run
בנוסף, אפשר להשבית את כתובת ה-URL שמוגדרת כברירת מחדל ב-Cloud Run.
השבתת Cloud CDN
המסוף
השבתת Cloud CDN לשירות קצה עורפי יחיד
נכנסים לדף Cloud CDN במסוף Google Cloud .
בצד שמאל של שורת המקור, לוחצים על תפריט ואז בוחרים באפשרות עריכה.
מבטלים את הסימון של התיבות שליד כל שירות קצה עורפי שרוצים להפסיק את השימוש שלו ב-Cloud CDN.
לוחצים על עדכון.
הסרת Cloud CDN מכל שירותי ה-Backend של מקור
נכנסים לדף Cloud CDN במסוף Google Cloud .
בצד שמאל של שורת המקור, לוחצים על תפריט ואז בוחרים באפשרות הסרה.
כדי לאשר, לוחצים על הסרה.
gcloud
gcloud compute backend-services update BACKEND_SERVICE_NAME
--no-enable-cdn
השבתה של Cloud CDN לא מבטלת את התוקף של מטמונים או מוחקת אותם. אם משביתים את Cloud CDN ומפעילים אותו מחדש, יכול להיות שרוב התוכן במטמון או כולו עדיין יישאר במטמון. כדי למנוע שימוש בתוכן על ידי מטמונים, צריך להפוך את התוכן הזה ללא תקף.
המאמרים הבאים
- במסמכי התיעוד של Cloud CDN מוסבר על מצבי מטמון ועל אפשרות השמירה במטמון של התשובות.