התכונה Service Extensions מאפשרת למאזני עומסים נתמכים של אפליקציות להשתמש בתוספים כדי להוסיף עיבוד בהתאמה אישית לנתיב העיבוד. תוספים ל-Edge פועלים בנתיב של עיבוד הבקשות כשמאזן העומסים מקבל כותרות של בקשות, ולפני שהוא מעריך את מפת ה-URL או קורא ל-Cloud CDN. כך אפשר להשפיע על שמירת נתונים במטמון ועל ניתוב. בדף הזה מוסבר איך להגדיר תוספים של Edge.
סקירה כללית על תוספים של מאזן עומסים של אפליקציות זמינה במאמר סקירה כללית על תוספים של Cloud Load Balancing.
תוסף של Application Load Balancer מצביע על המשאבים הבאים:
- כלל העברה לצירוף
- פלאגין
התוסף מפנה אל כלל העברה של מאזן העומסים כדי להתחבר אליו. אחרי שמגדירים את המשאב, מאזן העומסים מתחיל לשלוח בקשות תואמות לשירותי התוספים. אפשר לצרף רק תוסף Edge אחד לכלל העברה, ולכלול רק פלאגין אחד בשרשרת של תוספי Edge.
מידע על המגבלות שקשורות לתוספים של מאזן עומסים של אפליקציות זמין בדף מכסות ומגבלות.
הגדרה באמצעות פלאגינים
בקטע הזה מוצגת דוגמה להגדרה של תוסף Edge באמצעות פלאגין שכותב מחדש את כותרת הבקשה :host ל-service-extensions.com כשהנתיב תואם ל-/extensions. המארח הקודם והמארח החדש שהוגדר ממופים לשירותי קצה עורפי באזורים שונים, וזה מדגים את התנהגות הניתוב.
כל משאבי התוסף שמפנים לתוסף נתון צריכים להיות מאותו הסוג. בנוסף, לתוספים צריך להיות אותו סוג של איזון עומסים. אי אפשר להגדיר תוספים של Cloud Load Balancing עם תוספים שכבר נמצאים בשימוש בתוספים של Media CDN.
לפני שמתחילים
יוצרים פלאגין שמכיל את הקוד המותאם אישית.
יוצרים ומגדירים מאזן עומסים של אפליקציות שתומך בתוספים של הרחבת קצה.
פועלים לפי ההוראות שבדף הגדרת מאזן עומסים של אפליקציות (ALB) גלובלי חיצוני עם מערכות בק-אנד של קבוצת מכונות וירטואליות, בכל השלבים חוץ מהשלבים הבאים:
- נותנים לשירות הקצה העורפי את השם
service-one. - מצביעים על
service-oneלמכונה וירטואלית (VM) באזורA. - כברירת מחדל,
gl7-gxlb-url-mapמוגדר כ-service-one.
- נותנים לשירות הקצה העורפי את השם
מגדירים שירות בק-אנד נוסף,
service-twoומפנים אותו למכונה וירטואלית באזורB.מוסיפים למפת URL התאמת נתיב שמפנה אל
service-two. משתמשים בפקודהgcloud compute url-maps add-path-matcherעם ערכי הדוגמה הבאים:gcloud compute url-maps add-path-matcher gl7-gxlb-url-map \ --path-matcher-name=rewrite-host \ --default-service=service-two \ --new-hosts=service-extensions.com \ --location=globalמגדירים דרך לשלוח בקשות בדיקה לשירות (לדוגמה, על ידי הפעלת curl).
הגדרת תוסף Edge באמצעות פלאגין
בודקים את ההתנהגות לפני שמגדירים תוסף.
מוודאים שבקשה ללא נתיב מפורש מועברת לאזור
A:curl FORWARDING_RULE_IP
מחליפים את
FORWARDING_RULE_IPבכתובת ה-IP של כלל ההעברה. כדי למצוא את כתובת ה-IP, משתמשים בפקודהgcloud compute forwarding-rules describe.הפלט אמור להיראות כך ולהצביע על כך שהדף מוגש ממכונה וירטואלית ב-
region A:Page served from region-A-vmמוודאים שאין התאמה ל-
/extensionsבמפת ה-URL:curl FORWARDING_RULE_IP/extensions
מחליפים את
FORWARDING_RULE_IPבכתובת ה-IP של כלל ההעברה. כדי למצוא את כתובת ה-IP, משתמשים בפקודהgcloud compute forwarding-rules describe.הפלט מציין שאין התאמה ל-
/extensionsבמיפוי כתובות ה-URL. הפלט אמור להיראות כך:<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>404 Not Found</title> </head><body> ...
מגדירים את התוסף ל-Edge.
המסוף
נכנסים לדף Service Extensions במסוף Google Cloud .
לוחצים על יצירת תוסף.
ייפתח אשף שידריך אתכם בשלבים הראשונים.
בוחרים באפשרות Load Balancing (איזון עומסים) עבור המוצר. לאחר מכן, לוחצים על המשך.
מופיעה רשימה של נכסים נתמכים של Application Load Balancer.
בסוג מאזן העומסים, בוחרים באפשרות 'מאזן עומסים גלובלי חיצוני של אפליקציות (ALB)'. לאחר מכן, לוחצים על המשך.
בקטע 'סוג התוסף', בוחרים באפשרות תוספים ל-Edge ולוחצים על המשך.
כדי לפתוח את הטופס Create extension, לוחצים על Continue.
בטופס יצירת תוסף, שימו לב שאי אפשר לערוך את הבחירות הקודמות.
בקטע Basics (פרטים בסיסיים), מבצעים את הפעולות הבאות:
מציינים שם ייחודי לתוסף.
השם צריך להתחיל באות קטנה, להמשיך בעד 62 אותיות קטנות, מספרים או מקפים, ולא להסתיים במקף.
אופציונלי: מזינים תיאור קצר של התוסף (עד 1,024 תווים).
אופציונלי: בקטע תוויות, לוחצים על הוספת תווית. לאחר מכן, בשורה שמופיעה, מבצעים את הפעולות הבאות:
- בשדה Key, מזינים שם מפתח.
- בשדה ערך, מזינים ערך למפתח.
כדי להוסיף עוד צמדי מפתח/ערך, לוחצים על הוספת תווית. אפשר להוסיף עד 64 צמדי מפתח/ערך.
מידע נוסף על תוויות זמין במאמר יצירה ועדכון של תוויות לפרויקטים.
בקטע כללי העברה, בוחרים כלל העברה אחד או יותר כדי לשייך לתוסף – לדוגמה,
cr-xlb-forwarding-rule.אי אפשר לבחור כללי העברה שכבר משויכים לתוסף אחר, והם מופיעים כהשבתה.
בקטע Extension, כדי להוסיף תוסף לביצוע עבור בקשה תואמת:
כדי להתאים בקשות שרשרת ההרחבות מופעלת עבורן, צריך לציין ביטוי של Common Expression Language (CEL) בתנאי ההתאמה – לדוגמה,
request.path.startsWith("/extensions").תוספים ל-Edge מאפשרים להשתמש רק בביטוי רגולרי אחד לכל ביטוי CEL.
למידע נוסף על ביטויי CEL, אפשר ללחוץ על קבלת עזרה בנושא תחביר או לעיין במאמר העזרה בנושא שפת ההתאמה של CEL.
בשדה Programmability type (סוג התכנות), בוחרים באפשרות Plugins (פלאגינים).
בקטע Plugin, בוחרים פלאגין שנוצר באמצעות Service Extensions או את אותו מוצר ואותו סוג תוסף. אפשר לכלול רק תוסף אחד בתוסף Edge.
בקטע העברת מאפיינים, בוחרים את מאפייני הבקשה, החיבור והמיקום שרוצים שמאזן העומסים יעביר לתוסף Wasm או לקריאה החוזרת. אפשר להגדיר עד 16 מאפיינים לכל תוסף. מידע נוסף זמין במאמר בנושא מאפיינים נתמכים.
בקטע העברת כותרות, לוחצים על הוספת כותרת, ואז מוסיפים כותרות HTTP להעברה לתוסף (מהלקוח או מהקצה העורפי). אם לא מציינים כותרת, כל הכותרות נשלחות.
אופציונלי: אם רוצים שהתוסף ייכשל במצב פתוח, בוחרים באפשרות מופעל בשדה Fail open. במקרה כזה, אם הקריאה לתוסף נכשלת או שחלף הזמן הקצוב לתגובה, עיבוד הבקשה או התגובה נמשך ללא שגיאה.
כברירת מחדל, השדה Fail open לא מסומן. במקרה כזה, אם כותרות התגובה לא נמסרו ללקוח במורד הזרם, קוד סטטוס HTTP גנרי
500מוחזר ללקוח. אם כותרות התגובה נמסרו, זרם ה-HTTP ללקוח במורד הזרם מאופס.
בתוסף Edge, אפשר לציין רק תוסף אחד לכל שרשרת תוספים.
אם רוצים לציין יותר מתוסף אחד או שרשראות של תוספים במקום תוסף יחיד, לוחצים על הלחצן מעבר למצב מתקדם בסוף הטופס ומציינים את התוספים והשרשראות הנדרשים. התוספים פועלים לפי הסדר שבו הם מופיעים ברשימה.
מציינים שמות ייחודיים לכל תוסף ולכל שרשור תוספים. השמות צריכים להיות בהתאם ל-RFC-1034, להכיל רק אותיות קטנות, מספרים ומקפים, והאורך המקסימלי שלהם הוא 63 תווים. בנוסף, התו הראשון חייב להיות אות והתו האחרון חייב להיות אות או מספר.
לוחצים על יצירת תוסף.
gcloud
מגדירים את הפלאגין בקובץ YAML ומשייכים אותו לכלל העברת התנועה – לדוגמה,
cr-xlb-forwarding-rule.cat >edge-plugin.yaml <<EOF name: edge-ext forwardingRules: - https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/global/forwardingRules/cr-xlb-forwarding-rule loadBalancingScheme: EXTERNAL_MANAGED extensionChains: - name: "chain1" matchCondition: celExpression: 'request.path.startsWith("/extensions")' extensions: - name: 'ext1' service: projects/PROJECT_ID/locations/global/wasmPlugins/WASM_PLUGIN failOpen: false supportedEvents: - REQUEST_HEADERS forwardAttributes: - request.host - request.path EOFמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט -
WASM_PLUGIN: המזהה או השם המלא של הפלאגין
תוספים ל-Edge מאפשרים להשתמש רק בביטוי רגולרי אחד לכל ביטוי CEL.
מידע נוסף על השדות בקובץ ה-YAML מופיע בקטע ExtensionChain במאמרי העזרה של ה-API.
בשדה
forwardAttributesאפשר לציין את הבקשה, החיבור ומאפייני המיקום שאפשר להעביר לתוספי Wasm או לשירותי callout. אפשר להגדיר עד 16 מאפיינים לכל תוסף. מידע נוסף על מאפיינים נתמכים זמין במאמר מאפיינים נתמכים.-
מייבאים את התוסף ל-Edge. משתמשים בפקודה
gcloud service-extensions lb-edge-extensions importעם ערכי הדוגמה הבאים:gcloud service-extensions lb-edge-extensions import edge-ext \ --source=edge-plugin.yaml \ --location=global
אחרי שיוצרים תוסף ל-Edge, לוקח קצת זמן עד שהתוסף החדש מופץ לכל המיקומים. יכול להיות שהזמן יהיה שונה במיקומים שונים כי התוסף לא מועבר לכל המיקומים בו-זמנית.
כדי לוודא שהתוסף ל-Edge פועל כמצופה, משתמשים באותה פקודה
curl:curl FORWARDING_RULE_IP/extensions
הפלט אמור להיראות כך ולהצביע על כך שהדף מוגש ממכונה וירטואלית ב-
region B:Page served from region-B-vmכדי לוודא שהתוסף פועל רק לבקשות עם קידומת הנתיב
/extension, חוזרים על הפקודהcurlבלי נתיב.curl FORWARDING_RULE_IP
הפלט אמור להיראות כך:
Page served from region-A-vm
מגבלות על תוספים ל-Edge
- אפשר לצרף רק תוסף Edge אחד לכלל העברה.
- תוספים ל-Edge לא תומכים בעיבוד של גוף ה-HTTP.
- תוספים ל-Edge מאפשרים להשתמש רק בביטוי רגולרי אחד לכל ביטוי CEL.
מידע על מגבלות שחלות על כל התוספים מופיע במאמר מגבלות על תוספים.
המאמרים הבאים
- אפשר לראות דוגמאות של תוספים ל-Rust, Go ו-C++ וכלי בדיקה במאגר התוספים של Service Extensions ב-GitHub.
- ניהול תוספים