הגדרת מדיניות להגבלת קצב של יצירת בקשות

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

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

יצירת מדיניות להגבלת קצב של יצירת בקשות לשירות

כדי ליצור מדיניות להגבלת קצב של יצירת בקשות לשירות, יוצרים קובץ YAML שמגדיר את היעד ואת הכללים, ואז מייבאים את הקובץ באמצעות הפקודה gcloud network-security service-rate-limit-policies. בקטעים הבאים מופיעות דוגמאות למדיניות של הגבלת קצב של יצירת בקשות לשירות.

החלת הגבלת קצב על סמך קבוצות בהתאמה אישית

בדוגמה הבאה נעשה שימוש בתג מותאם אישית מכותרת ה-HTTP,‏ x-custom-group-tag, כדי לזהות שתי קבוצות: group1 ו-group2. הוא מגביל את מספר הבקשות לדקה (RPM) ל-10,000 עבור group1 ול-20,000 עבור group2.

gcloud

  1. יוצרים את הקובץ 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: השם של כלל ההעברה.
  2. כדי ליצור את מדיניות הגבלת קצב של יצירת בקשות לשירות, מייבאים את קובץ ה-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

  1. יוצרים את הקובץ 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: השם של כלל ההעברה.
  2. כדי ליצור את מדיניות הגבלת קצב של יצירת בקשות לשירות, מייבאים את קובץ ה-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

  1. יוצרים את הקובץ 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: השם של כלל ההעברה.
  2. כדי ליצור את מדיניות הגבלת קצב של יצירת בקשות לשירות, מייבאים את קובץ ה-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

  1. יוצרים את הקובץ 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: השם של כלל ההעברה.
  2. כדי ליצור את מדיניות הגבלת קצב של יצירת בקשות לשירות, מייבאים את קובץ ה-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: המיקום של כלל ההעברה.

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