Auf dieser Seite erfahren Sie, wie Sie Richtlinien zur Ratenbegrenzung für regionale interne Application Load Balancer einrichten.
Hinweis
- Machen Sie sich mit der Übersicht zur Ratenbegrenzung für Dienste vertraut.
-
- Network Security API (
networksecurity.googleapis.com) - Network Services API (
networkservices.googleapis.com)
Führen Sie den folgenden Befehl aus, um die APIs zu aktivieren:
gcloud services enable \ networksecurity.googleapis.com \ networkservices.googleapis.com - Network Security API (
Wenn Sie noch keinen regionalen internen Application Load Balancer konfiguriert haben, lesen Sie die Seite Regionalen internen Application Load Balancer mit Back-Ends von VM-Instanzgruppen einrichten und erstellen Sie einen.
Richtlinie zur Ratenbegrenzung für Dienste erstellen
Erstellen Sie eine YAML-Datei, in der das Ziel und die Regeln definiert sind, um eine Richtlinie zur Ratenbegrenzung für Dienste zu erstellen. Importieren Sie die Datei dann mit dem Befehl gcloud network-security service-rate-limit-policies. In den folgenden Abschnitten finden Sie Beispiele für Richtlinien zur Ratenbegrenzung für Dienste.
Ratenbegrenzung basierend auf benutzerdefinierten Gruppen anwenden
Im folgenden Beispiel wird ein benutzerdefiniertes Tag aus dem HTTP-Header x-custom-group-tag verwendet, um zwei Gruppen zu identifizieren: group1 und group2. Die Anfragen pro Minute (RPM) werden auf 10.000 für group1 und 20.000 für group2 begrenzt.
gcloud
Erstellen Sie die Datei
custom-groups-policy.yamlund geben Sie die Richtlinienparameter an.$ 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 EOFErsetzen Sie Folgendes:
PROJECT_ID: die ID Ihres Cloud de Confiance Projekts in.LOCATION: der Standort Ihrer Weiterleitungsregel.FORWARDING_RULE_NAME: der Name Ihrer Weiterleitungsregel.
Erstellen Sie die Richtlinie zur Ratenbegrenzung für Dienste, indem Sie die YAML-Datei importieren, die Sie im vorherigen Schritt erstellt haben:
gcloud network-security service-rate-limit-policies import custom-groups-policy \ --source=custom-groups-policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
Ersetzen Sie Folgendes:
PROJECT_ID: die ID Ihres Cloud de Confiance Projekts in.LOCATION: der Standort Ihrer Weiterleitungsregel.
Ratenbegrenzung auf alle Clients anwenden
Im folgenden Beispiel werden die Anfragen pro Minute für alle Clients auf 10.000 begrenzt.
gcloud
Erstellen Sie die Datei
all-clients-policy.yamlund geben Sie die Richtlinienparameter an.$ 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 EOFErsetzen Sie Folgendes:
PROJECT_ID: die ID Ihres Cloud de Confiance Projekts in.LOCATION: der Standort Ihrer Weiterleitungsregel.FORWARDING_RULE_NAME: der Name Ihrer Weiterleitungsregel.
Erstellen Sie die Richtlinie zur Ratenbegrenzung für Dienste, indem Sie die YAML-Datei importieren, die Sie im vorherigen Schritt erstellt haben:
gcloud network-security service-rate-limit-policies import all-clients-policy \ --source=all-clients-policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
Ersetzen Sie Folgendes:
PROJECT_ID: die ID Ihres Cloud de Confiance Projekts in.LOCATION: der Standort Ihrer Weiterleitungsregel.
Ratenbegrenzung basierend auf Host und API-Schlüssel anwenden
Im folgenden Beispiel wird die Rate der APIs, die für den Host example.com bestimmt sind, auf 1.000 Anfragen pro 5 Minuten für jeden eindeutigen Wert des API-Schlüssels begrenzt, der aus dem HTTP-Header x-api-key abgerufen wird. Für einen speziellen API-Schlüssel abc123 gilt stattdessen ein höheres Limit von 10.000 Anfragen pro 5 Minuten.
gcloud
Erstellen Sie die Datei
host-and-api-key-policy.yamlund geben Sie die Richtlinienparameter an.$ 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 EOFErsetzen Sie Folgendes:
PROJECT_ID: die ID Ihres Cloud de Confiance Projekts in.LOCATION: der Standort Ihrer Weiterleitungsregel.FORWARDING_RULE_NAME: der Name Ihrer Weiterleitungsregel.
Erstellen Sie die Richtlinie zur Ratenbegrenzung für Dienste, indem Sie die YAML-Datei importieren, die Sie im vorherigen Schritt erstellt haben:
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
Ersetzen Sie Folgendes:
PROJECT_ID: die ID Ihres Cloud de Confiance Projekts in.LOCATION: der Standort Ihrer Weiterleitungsregel.
Ratenbegrenzung basierend auf URL-Pfad und Clientname anwenden
Im folgenden Beispiel wird die Rate der APIs, die für jeden Client unter dem Pfad /public gehostet werden und durch den allgemeinen Namen des Clientzertifikats identifiziert werden, auf 100 Anfragen pro Minute begrenzt.
gcloud
Erstellen Sie die Datei
path-and-client-name-policy.yamlund geben Sie die Richtlinienparameter an.$ 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 EOFErsetzen Sie Folgendes:
PROJECT_ID: die ID Ihres Cloud de Confiance Projekts in.LOCATION: der Standort Ihrer Weiterleitungsregel.FORWARDING_RULE_NAME: der Name Ihrer Weiterleitungsregel.
Erstellen Sie die Richtlinie zur Ratenbegrenzung für Dienste, indem Sie die YAML-Datei importieren, die Sie im vorherigen Schritt erstellt haben:
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
Ersetzen Sie Folgendes:
PROJECT_ID: die ID Ihres Cloud de Confiance Projekts in.LOCATION: der Standort Ihrer Weiterleitungsregel.