Esta página mostra como configurar políticas de limitação de taxa de serviço para balanceadores de carga de aplicativo internos regionais.
Antes de começar
- Familiarize-se com a visão geral da limitação de taxa de serviço.
-
- API de segurança de rede (
networksecurity.googleapis.com) - API Network Services (
networkservices.googleapis.com)
Para ativar as APIs, execute o seguinte comando:
gcloud services enable \ networksecurity.googleapis.com \ networkservices.googleapis.com - API de segurança de rede (
Se você ainda não configurou um balanceador de carga de aplicativo interno regional, consulte a página Configurar um balanceador de carga de aplicativo interno regional com back-ends de grupos de instâncias de VM e crie um.
Criar uma política de limitação de taxa de serviço
Para criar uma política de limitação de taxa de serviço, crie um arquivo YAML que defina o destino e as regras e importe o arquivo usando o comando gcloud network-security service-rate-limit-policies. As seções a seguir mostram exemplos de políticas de limitação de taxa de serviço.
Aplicar a limitação de taxa com base em grupos personalizados
O exemplo a seguir usa uma tag personalizada do cabeçalho HTTP, x-custom-group-tag, para identificar dois grupos: group1 e group2. Ele limita as solicitações por minuto (RPM) a 10.000 para group1 e 20.000 para group2.
gcloud
Crie o arquivo
custom-groups-policy.yamle especifique os parâmetros da política.$ 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 EOFSubstitua:
PROJECT_ID: o ID do Cloud de Confiance projeto.LOCATION: o local da regra de encaminhamento.FORWARDING_RULE_NAME: o nome da regra de encaminhamento.
Crie a política de limitação de taxa de serviço importando o arquivo YAML que você criou na etapa anterior:
gcloud network-security service-rate-limit-policies import custom-groups-policy \ --source=custom-groups-policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
Substitua:
PROJECT_ID: o ID do Cloud de Confiance projeto.LOCATION: o local da regra de encaminhamento.
Aplicar a limitação de taxa a todos os clientes
O exemplo a seguir limita as solicitações por minuto a 10.000 para todos os clientes.
gcloud
Crie o arquivo
all-clients-policy.yamle especifique os parâmetros da política.$ 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 EOFSubstitua:
PROJECT_ID: o ID do Cloud de Confiance projeto.LOCATION: o local da regra de encaminhamento.FORWARDING_RULE_NAME: o nome da regra de encaminhamento.
Crie a política de limitação de taxa de serviço importando o arquivo YAML que você criou na etapa anterior:
gcloud network-security service-rate-limit-policies import all-clients-policy \ --source=all-clients-policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
Substitua:
PROJECT_ID: o ID do Cloud de Confiance projeto.LOCATION: o local da regra de encaminhamento.
Aplicar a limitação de taxa com base no host e na chave de API
O exemplo a seguir limita as APIs destinadas ao host example.com a 1.000 solicitações por 5 minutos para cada valor exclusivo da chave de API buscada no cabeçalho HTTP x-api-key. Uma chave de API especial abc123 tem um limite maior de 10.000 solicitações por 5 minutos.
gcloud
Crie o arquivo
host-and-api-key-policy.yamle especifique os parâmetros da política.$ 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 EOFSubstitua:
PROJECT_ID: o ID do Cloud de Confiance projeto.LOCATION: o local da regra de encaminhamento.FORWARDING_RULE_NAME: o nome da regra de encaminhamento.
Crie a política de limitação de taxa de serviço importando o arquivo YAML que você criou na etapa anterior:
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
Substitua:
PROJECT_ID: o ID do Cloud de Confiance projeto.LOCATION: o local da regra de encaminhamento.
Aplicar a limitação de taxa com base no caminho do URL e no nome do cliente
O exemplo a seguir limita as APIs hospedadas no caminho /public para cada cliente, identificado pelo nome comum do certificado do cliente, a 100 solicitações por minuto.
gcloud
Crie o arquivo
path-and-client-name-policy.yamle especifique os parâmetros da política.$ 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 EOFSubstitua:
PROJECT_ID: o ID do Cloud de Confiance projeto.LOCATION: o local da regra de encaminhamento.FORWARDING_RULE_NAME: o nome da regra de encaminhamento.
Crie a política de limitação de taxa de serviço importando o arquivo YAML que você criou na etapa anterior:
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
Substitua:
PROJECT_ID: o ID do Cloud de Confiance projeto.LOCATION: o local da regra de encaminhamento.