בדף הזה מוסבר איך להגדיר כללי מדיניות להגבלת קצב של יצירת בקשות לשירות במאזני עומסים של אפליקציות (ALB) פנימיים ברמה האזורית.
לפני שמתחילים
- מומלץ לקרוא את הסקירה הכללית על הגבלת קצב יצירת הבקשות בשירותים.
-
- Network Security API (
networksecurity.googleapis.com) - Network Services API (
networkservices.googleapis.com)
כדי להפעיל את ממשקי ה-API, מריצים את הפקודה הבאה:
gcloud services enable \ networksecurity.googleapis.com \ networkservices.googleapis.com - Network Security API (
אם עדיין לא הגדרתם מאזן עומסים פנימי אזורי של אפליקציות (ALB), תוכלו להיעזר בדף הגדרת מאזן עומסים פנימי אזורי של אפליקציות עם קצוות עורפיים של קבוצות מכונות וירטואליות כדי ליצור אחד כזה.
יצירת מדיניות להגבלת קצב של יצירת בקשות לשירות
כדי ליצור מדיניות להגבלת קצב של יצירת בקשות לשירות, יוצרים קובץ YAML שמגדיר את היעד ואת הכללים, ואז מייבאים את הקובץ באמצעות הפקודה gcloud network-security service-rate-limit-policies. בקטעים הבאים מופיעות דוגמאות למדיניות של הגבלת קצב של יצירת בקשות לשירות.
החלת הגבלת קצב על סמך קבוצות בהתאמה אישית
בדוגמה הבאה נעשה שימוש בתג מותאם אישית מכותרת ה-HTTP, x-custom-group-tag, כדי לזהות שתי קבוצות: group1 ו-group2. הוא מגביל את מספר הבקשות לדקה (RPM) ל-10,000 עבור group1 ול-20,000 עבור group2.
gcloud
יוצרים את הקובץ
custom-groups-policy.yamlומציינים את הפרמטרים של המדיניות.$ cat >custom-groups-policy.yaml <<EOF name: projects/PROJECT_ID/locations/LOCATION/rateLimitPolicies/custom-groups-policy description: Rate limit each API key based on custom tags. httpRules: # Match on traffic on the custom tag header. - to: destination: headerSet: headers: - name: "x-custom-group-tag" value: exact: "group1" rateLimitActions: - rateLimitBucket: rl_group1_rpm_limit - to: destination: headerSet: headers: - name: "x-custom-group-tag" value: exact: "group2" rateLimitActions: - rateLimitBucket: rl_group2_rpm_limit rateLimitBuckets: - name: rl_group1_rpm_limit # Set threshold for ALL the traffic matching this bucket. keys: - keyType: ALL defaultLimit: countLimit: count: 10000 interval: 1 intervalUnit: MINUTES - name: rl_group2_rpm_limit # Set threshold for ALL the traffic matching this bucket. keys: - keyType: ALL defaultLimit: countLimit: count: 20000 interval: 1 intervalUnit: MINUTES targets: - resource: projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_NAME EOFמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance . -
LOCATION: המיקום של כלל ההעברה. -
FORWARDING_RULE_NAME: השם של כלל ההעברה.
-
כדי ליצור את מדיניות הגבלת קצב של יצירת בקשות לשירות, מייבאים את קובץ ה-YAML שיצרתם בשלב הקודם:
gcloud network-security service-rate-limit-policies import custom-groups-policy \ --source=custom-groups-policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance . -
LOCATION: המיקום של כלל ההעברה.
-
החלת הגבלת קצב על כל הלקוחות
בדוגמה הבאה, מספר הבקשות לדקה מוגבל ל-10,000 לכל הלקוחות.
gcloud
יוצרים את הקובץ
all-clients-policy.yamlומציינים את הפרמטרים של המדיניות.$ cat >all-clients-policy.yaml <<EOF name: projects/PROJECT_ID/locations/LOCATION/rateLimitPolicies/all-clients-policy description: Service rate limiting example. httpRules: # Match on all traffic. # Service rate limiting bucket - rateLimitActions: - rateLimitBucket: rl_default_rpm_limit rateLimitBuckets: - name: "rl_default_rpm_limit" # Match on 'ALL' requests for this bucket. keys: - keyType: ALL defaultLimit: countLimit: count: 10000 interval: 1 intervalUnit: MINUTES targets: - resource: projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_NAME EOFמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance . -
LOCATION: המיקום של כלל ההעברה. -
FORWARDING_RULE_NAME: השם של כלל ההעברה.
-
כדי ליצור את מדיניות הגבלת קצב של יצירת בקשות לשירות, מייבאים את קובץ ה-YAML שיצרתם בשלב הקודם:
gcloud network-security service-rate-limit-policies import all-clients-policy \ --source=all-clients-policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance . -
LOCATION: המיקום של כלל ההעברה.
-
החלת הגבלת קצב על סמך מארח ומפתח API
בדוגמה הבאה, קצב הבקשות של ממשקי ה-API שמיועדים למארח example.com מוגבל ל-1,000 בקשות ל-5 דקות לכל ערך ייחודי של מפתח ה-API שנשלף מכותרת ה-HTTP x-api-key. במקום זאת, למפתח API מיוחד abc123 יש מגבלה מוגדלת של 10,000 בקשות לכל 5 דקות.
gcloud
יוצרים את הקובץ
host-and-api-key-policy.yamlומציינים את הפרמטרים של המדיניות.$ cat >host-and-api-key-policy.yaml <<EOF name: projects/PROJECT_ID/locations/LOCATION/rateLimitPolicies/host-and-api-key-policy description: Rate limit each api key. httpRules: # Match on traffic to example.com - to: destination: hosts: - exact: "example.com" rateLimitActions: - rateLimitBucket: rl_default_rpm_limit rateLimitBuckets: - name: rl_default_rpm_limit # Identify API key from its header, say 'x-api-key'. keys: - header: "x-api-key" keyType: HTTP_HEADER defaultLimit: countLimit: count: 1000 interval: 5 intervalUnit: MINUTES # Override the threshold for specific API key 'abc123'. userOverrides: - overrideKey: httpHeaders: - header: "x-api-key" value: "abc123" limit: countLimit: count: 10000 interval: 5 intervalUnit: MINUTES targets: - resource: projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_NAME EOFמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance . -
LOCATION: המיקום של כלל ההעברה. -
FORWARDING_RULE_NAME: השם של כלל ההעברה.
-
כדי ליצור את מדיניות הגבלת קצב של יצירת בקשות לשירות, מייבאים את קובץ ה-YAML שיצרתם בשלב הקודם:
gcloud network-security service-rate-limit-policies import host-and-api-key-policy \ --source=host-and-api-key-policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance . -
LOCATION: המיקום של כלל ההעברה.
-
החלת הגבלת קצב ליצירת בקשות על סמך נתיב כתובת ה-URL ושם הלקוח
בדוגמה הבאה מוגבל השימוש בממשקי ה-API שמתארחים בנתיב /public ל-100 בקשות לדקה לכל לקוח, שמזוהה לפי השם המוכר של אישור הלקוח.
gcloud
יוצרים את הקובץ
path-and-client-name-policy.yamlומציינים את פרמטרים המדיניות.$ cat >path-and-client-name-policy.yaml <<EOF name: projects/PROJECT_ID/locations/LOCATION/rateLimitPolicies/path-and-client-name-policy description: Simple API rate limiting example. httpRules: # Match on traffic to /public . - to: destination: paths: - exact: "/public" # Default RPM bucket rateLimitActions: - rateLimitBucket: rl_default_rpm_limit rateLimitBuckets: - name: "rl_default_rpm_limit" # Identify client by its client cert name keys: - keyType: PRINCIPAL principalType: CLIENT_CERT_COMMON_NAME defaultLimit: countLimit: count: 100 interval: 1 intervalUnit: MINUTES targets: - resource: projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_NAME EOFמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance . -
LOCATION: המיקום של כלל ההעברה. -
FORWARDING_RULE_NAME: השם של כלל ההעברה.
-
כדי ליצור את מדיניות הגבלת קצב של יצירת בקשות לשירות, מייבאים את קובץ ה-YAML שיצרתם בשלב הקודם:
gcloud network-security service-rate-limit-policies import path-and-client-name-policy \ --source=path-and-client-name-policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance . -
LOCATION: המיקום של כלל ההעברה.
-