הגדרת קצה עורפי חיצוני עם NEG לאינטרנט

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

במדריך מוסבר איך להגדיר מאזן עומסים גלובלי חיצוני של אפליקציות עם שירות קצה עורפי שמופעל בו Cloud CDN, שמשמש כשרת proxy לשרת קצה עורפי חיצוני בכתובת backend.example.com.

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

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

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

איור 1 מציג ארכיטקטורה לדוגמה.

Figure 1. תרחיש שימוש אופייני לשרתי קצה עורפיים חיצוניים.
איור 1. תרחיש שימוש אופייני לשרתי קצה עורפיים חיצוניים.

בתרשים, ל-www.example.com יש קצה קדמי של מאזן עומסים עם כתובת ה-IP‏ 120.1.1.1. כשאין פגיעה במטמון, בקשות משתמשים ל-/cart/id/1223515 נשלפות מהקצה העורפי החיצוני באמצעות HTTPS. כל התנועה הנכנסת האחרת מופנית לשירות הקצה העורפי Google Cloud עם מכונות וירטואליות של Compute Engine או לקטגוריית הקצה העורפי, בהתאם למפת ה-URL.

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

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

הרשאות

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

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

הגדרת מאזן עומסים עם קצה עורפי חיצוני

בקטע הזה נסביר איך להגדיר ולבדוק קבוצת נקודות קצה ברשת (NEG) באינטרנט.

סקירה כללית של ההגדרה

כדי להגדיר NEG לאינטרנט, צריך לבצע את הפעולות הבאות:

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

בדוגמה הזו נוצרים המשאבים הבאים:

  • כלל העברה עם כתובת ה-IP‏ 120.1.1.1 מפנה בקשות נכנסות לשרת proxy של יעד.
    • הערך networkTier של כלל ההעברה צריך להיות PREMIUM.
  • שרת ה-proxy של היעד בודק כל בקשה מול מפת ה-URL כדי לקבוע את שירות הקצה העורפי המתאים לבקשה.
    • בשרתי קצה עורפיים חיצוניים, שרת ה-proxy של היעד חייב להיות TargetHttpProxy או TargetHttpsProxy. בדוגמה הזו נעשה שימוש ב-TargetHttpsProxy.
  • הפעלת Cloud CDN (אופציונלי) בשירות הקצה העורפי מאפשרת שמירה במטמון והצגת תגובות ממטמוני Cloud CDN.
  • הדוגמה הזו כוללת כותרת מותאמת אישית, שנדרשת כשהעורף החיצוני מצפה לערך מסוים בכותרת Host של בקשת ה-HTTP.

ההגדרה תיראה כך:

איור 2. ‫Cloud CDN עם קצה עורפי מקומי.
איור 2. ‫Cloud CDN עם קצה עורפי מקומי.

יצירת קבוצת נקודות קצה ברשת (NEG) ונקודת קצה באינטרנט

המסוף

  1. נכנסים לדף Network endpoint groups במסוף Google Cloud .

    כניסה לדף Network endpoint groups

  2. לוחצים על יצירת קבוצת נקודות קצה ברשת.
  3. מזינים את השם של קבוצת נקודות הקצה ברשת: example-fqdn-neg.
  4. בקטע סוג קבוצת נקודות קצה ברשת, בוחרים באפשרות קבוצת נקודות קצה ברשת (אינטרנט).
  5. בשדה יציאה שמוגדרת כברירת מחדל, מזינים 443.
  6. בקטע New network endpoint (נקודת קצה חדשה ברשת), בוחרים באפשרות Fully qualified domain name and port (שם דומיין מוגדר במלואו ויציאה).
  7. בשדה FQDN, מזינים backend.example.com.
  8. בקטע סוג יציאה, בוחרים באפשרות ברירת מחדל ומוודאים שמספר היציאה הוא 443.
  9. לוחצים על יצירה.

gcloud

  1. יוצרים NEG לאינטרנט ומגדירים את --network-endpoint-type ל-internet-fqdn-port (שם המארח והיציאה שדרכם אפשר להגיע לקצה העורפי החיצוני):

    gcloud compute network-endpoint-groups create example-fqdn-neg \
        --network-endpoint-type="internet-fqdn-port" --global
    
  2. מוסיפים את נקודת הקצה ל-NEG. אם לא מציינים יציאה, ברירת המחדל של בחירת היציאה היא יציאה 80 (HTTP) או 443 (HTTPS; HTTP/2), בהתאם לפרוטוקול שהוגדר בשירות לקצה העורפי. חשוב לכלול את דגל --global:

    gcloud compute network-endpoint-groups update example-fqdn-neg \
        --add-endpoint="fqdn=backend.example.com,port=443" \
        --global
    
  3. מפרטים את ה-NEG באינטרנט שנוצר:

    gcloud compute network-endpoint-groups list --global
    

    פלט:

    NAME                LOCATION   ENDPOINT_TYPE        SIZE
    example-fqdn-neg    global     INTERNET_FQDN_PORT   1
    

  4. מפרטים את נקודת הקצה ב-NEG:

    gcloud compute network-endpoint-groups list-network-endpoints example-fqdn-neg \
        --global
    

    פלט:

    INSTANCE   IP_ADDRESS   PORT   FQDN
                                   backend.example.com
    

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

בדוגמה הבאה מעדכנים מאזן עומסים קיים.

במאזן העומסים הקיים, שירות ברירת המחדל הוא Google Cloud service. בדוגמה הזו משנים את מפת ה-URL הקיימת על ידי הוספת התאמת נתיבים ששולחת את כל הבקשות ל-cart/id/1223515 לשירות הקצה העורפי images, שמשויך ל-NEG באינטרנט.

המסוף

יצירת שירות לקצה העורפי והוספה של NEG לאינטרנט

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

    כניסה לדף איזון עומסים

  2. כדי להוסיף את שירות לקצה העורפי למאזן עומסים קיים, בוחרים את מאזן העומסים הקלאסי של האפליקציה, לוחצים על Menu ואז על Edit.
  3. לוחצים על Backend configuration.
  4. בתפריט Backend services & backend buckets בוחרים באפשרות Create a backend service.
  5. מגדירים את שם השירות לקצה העורפי ל-images.
  6. בקטע סוג קצה עורפי, בוחרים באפשרות קבוצה של נקודות קצה ברשת באינטרנט.
  7. בוחרים את הפרוטוקול שבו רוצים להשתמש ממאזן העומסים ל-NEG באינטרנט. לצורך הדוגמה הזו, בוחרים באפשרות HTTPS.
  8. בקטע New backend > Internet network endpoint group (קצה עורפי חדש > קבוצת נקודות קצה ברשת האינטרנט), בוחרים באפשרות example-fqdn-neg ואז לוחצים על Done (סיום).
  9. בוחרים באפשרות הפעלת Cloud CDN.
  10. אופציונלי: משנים את ההגדרות של מצב מטמון ושל TTL.
  11. בקטע Custom request headers (כותרות בקשות בהתאמה אישית) שבAdvanced configurations (הגדרות מתקדמות), לוחצים על Add header (הוספת כותרת).
    1. בשדה Header name (שם הכותרת), מזינים Host.
    2. בשדה ערך הכותרת, מזינים backend.example.com.
  12. לוחצים על יצירה.
  13. כדי להמשיך, צריך להשאיר את החלון פתוח.

צירוף שירות ה-Backend למיפוי קיים של כתובות URL

  1. לוחצים על Host and path rules (כללים לגבי מארח ונתיב).
  2. בשורה הראשונה או בשורות הראשונות יש Google Cloud שירותים בעמודה הימנית, ואחד מהם כבר מאוכלס בכלל ברירת המחדלAny unmatched (default) של מארחים ונתיבים.
  3. מוודאים שיש שורה עם images שנבחרה בעמודה השמאלית. אם הוא לא קיים, לוחצים על הוספת כלל של מארח ונתיב ובוחרים באפשרות images. ממלאים את שאר השדות באופן הבא:
    1. בשדה מארחים, מזינים *.
    2. בשדה Paths, מזינים /cart/id/1223515.

בדיקה וסיום

  1. לוחצים על Review and finalize.
  2. משווים את ההגדרות למה שרציתם ליצור.
  3. אם הכל נראה נכון, לוחצים על עדכון.

gcloud

  1. יוצרים שירות קצה עורפי חדש עבור ה-NEG:

    gcloud compute backend-services create images \
       --global \
       --enable-cdn \
       --cache-mode=CACHE_MODE \
       --protocol=HTTP2
    

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

    • CACHE_ALL_STATIC: שמירה אוטומטית במטמון של תוכן סטטי

    • USE_ORIGIN_HEADERS (ברירת מחדל): כדי לשמור תוכן במטמון, המקור צריך להגדיר כותרות תקפות של שמירה במטמון

    • FORCE_CACHE_ALL: שומר במטמון את כל התוכן, תוך התעלמות מההנחיות private,‏ no-store או no-cache בכותרות התגובה Cache-Control

  2. מגדירים את שירות הקצה העורפי להוספת כותרת הבקשה המותאמת אישית Host: backend.example.com לבקשה:

    gcloud compute backend-services update images \
       --custom-request-header "Host: backend.example.com" --global
    
  3. משתמשים בפקודה backend-services add-backend כדי להוסיף את ה-NEG לאינטרנט לשירות הקצה העורפי:

    gcloud compute backend-services add-backend images \
      --network-endpoint-group "example-fqdn-neg" \
      --global-network-endpoint-group \
      --global
    
  4. מצרפים את שירות הקצה העורפי החדש למפת URL של מאזן העומסים על ידי יצירת כלל התאמה חדש להפניית בקשות לקצה העורפי הזה:

    gcloud compute url-maps add-path-matcher EXAMPLE_URL_MAP \
      --default-service=GCP_SERVICE_EXAMPLE \
      --path-matcher-name=CUSTOM_ORIGIN_PATH_MATCHER_EXAMPLE \
      --backend-service-path-rules=/CART/ID/1223515=IMAGES
    

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

    • EXAMPLE_URL_MAP: השם של מיפוי ה-URL הקיים
    • GCP_SERVICE_EXAMPLE: השם של שירות קיים לקצה העורפי שמוגדר כברירת מחדל
    • CUSTOM_ORIGIN_PATH_MATCHER_EXAMPLE: השם של כלל הנתיב החדש
    • /CART/ID/1223515: הנתיב
    • IMAGES: השם של שירות הקצה העורפי החדש עם ה-NEG באינטרנט שמצורף אליו

הוספת טווחי כתובות ה-IP הנדרשים לרשימת ההיתרים

כדי לאפשר למאזן עומסים חיצוני של אפליקציות לשלוח בקשות ל-NEG באינטרנט, צריך לבצע שאילתה לרשומת ה-DNS TXT של _cloud-eoips.googleusercontent.com באמצעות כלי כמו dig או nslookup.

לדוגמה, מריצים את הפקודה הבאה dig:

dig TXT _cloud-eoips.googleusercontent.com | grep -Eo 'ip4:[^ ]+' | cut -d':' -f2

הפלט מכיל שני טווחי כתובות IP, כמו שמוצג כאן:

34.96.0.0/20
34.127.192.0/18

חשוב לשים לב לטווחים של כתובות ה-IP ולוודא שחומת האש או הרשימה של בקרת הגישה (ACL) בענן מאפשרות גישה לטווחים האלה.

מידע נוסף זמין במאמר בנושא אימות בקשות.

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

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

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

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

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

    כניסה לדף איזון עומסים

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

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

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

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

    אם זה לא עובד ואתם משתמשים באישור שמנוהל על ידי Google, צריך לוודא שהסטטוס של משאב האישור הוא ACTIVE. מידע נוסף זמין במאמר בנושא סטטוס של משאב אישור SSL בניהול Google.

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

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

    curl -s 'https://www.example.com:443' --resolve www.example.com:443:IP_ADDRESS
    

  5. אופציונלי: אם אתם משתמשים בדומיין מותאם אישית, יכול להיות שתצטרכו לחכות עד שהגדרות ה-DNS המעודכנות יתעדכנו. לאחר מכן, בודקים את הדומיין (לדוגמה, backend.example.com) בדפדפן האינטרנט.

    לקבלת עזרה בפתרון בעיות, אפשר לעיין במאמר בנושא פתרון בעיות ב-backend חיצוני וב-NEG באינטרנט.

השבתת Cloud CDN

המסוף

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

    כניסה לדף איזון עומסים

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

  3. לוחצים על עריכה.

  4. לוחצים על Backend configuration.

  5. בשירות הקצה העורפי עם הקצה העורפי של ה-NEG באינטרנט, לוחצים על Edit.

  6. מבטלים את הסימון בתיבת הסימון Enable Cloud CDN.

  7. כדי לבדוק את השינויים, לוחצים על בדיקה וסיום ואז על עדכון.

gcloud

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

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

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