Configurar o balanceamento de carga avançado

Este documento contém instruções para configurar as opções de balanceamento de carga avançado, descritas na Visão geral do balanceamento de carga avançado. Este documento é destinado a usuários que têm pelo menos um entendimento intermediário dos conceitos do Cloud Service Mesh e do balanceamento de carga.

Antes de começar

Atualize a CLI do Google Cloud para garantir que você tem a versão mais recente:

gcloud components update

Crie um novo serviço de back-end ou decida qual serviço de back-end atual usar para o balanceamento de carga avançado.

Para criar um novo serviço de back-end denominado hello-world-backend-service, use este comando:

gcloud compute backend-services create hello-world-backend-service \
    --global \
    --protocol=HTTP \
    --health-checks hello-world-health-check \
    --load-balancing-scheme=INTERNAL_SELF_MANAGED

Criar uma política de balanceamento de carga de serviço com YAML

É possível definir políticas de balanceamento de carga de serviço em um arquivo YAML. Por exemplo, configure uma política para ativar o recurso de redução automática de capacidade da seguinte maneira, em um arquivo chamado hello-world-lb-policy:

name: projects/${project-id}/locations/global/serviceLbPolicies/hello-world-lb-policy
autoCapacityDrain:
  enable: True

Depois de criar o arquivo YAML, importe-o:

gcloud network-services service-lb-policies import hello-world-lb-policy \
   --source=hello-world-lb-policy.yaml \
   --location=global

Por fim, associe a política de balanceamento de carga de serviço ao serviço de back-end:

gcloud compute backend-services update hello-world-backend-service \
  --service-lb-policy hello-world-lb-policy \
  --global

Como alternativa, é possível associar uma política de balanceamento de carga de serviço atual a um serviço de back-end ao criá-lo:

gcloud compute backend-services create hello-world-backend-service \
    --global \
    --protocol=HTTP \
    --health-checks hello-world-health-check \
    --load-balancing-scheme=INTERNAL_SELF_MANAGED \
    --service-lb-policy hello-world-lb-policy

Estas instruções abrangem apenas as mudanças feitas no recurso de serviço de back-end. A implantação do Cloud Service Mesh também precisa incluir uma verificação de integridade e regras de firewall. Além disso, você precisa adicionar back-ends conforme necessário.

Configurar o algoritmo de distribuição por região

Para configurar o algoritmo de pulverização para região, que distribui o tráfego para todas as zonas de uma região, crie uma política de balanceamento de carga de serviço em um arquivo chamado hello-world-lb-policy.yaml:

name: projects/${project-id}/locations/global/serviceLbPolicies/hello-world-lb-policy
loadBalancingAlgorithm: SPRAY_TO_REGION

Importe o arquivo yaml:

gcloud network-services service-lb-policies import hello-world-lb-policy \
   --source=hello-world-lb-policy.yaml \
   --location=global

Você também pode configurar esse algoritmo com a CLI gcloud:

gcloud network-services service-lb-policies create hello-world-lb-policy \
    --load-balancing-algorithm=SPRAY_TO_REGION \
    --location=global

Configurar o algoritmo de hierarquia por zona

Para configurar o algoritmo de hierarquia por zona, que envia tráfego para a zona local antes de distribuir o tráfego para outras zonas, crie uma política de balanceamento de carga de serviço em um arquivo chamado hello-world-lb-policy.yaml:

name: projects/${project-id}/locations/global/serviceLbPolicies/hello-world-lb-policy
loadBalancingAlgorithm: WATERFALL_BY_ZONE

Importe o arquivo yaml:

gcloud network-services service-lb-policies import hello-world-lb-policy \
   --source=hello-world-lb-policy.yaml \
   --location=global

Você também pode configurar esse algoritmo com a CLI gcloud:

gcloud network-services service-lb-policies create hello-world-lb-policy \
    --load-balancing-algorithm=WATERFALL_BY_ZONE \
    --location=global

Configurar os back-ends preferenciais

Para configurar back-ends preferenciais, crie uma política de balanceamento de carga de serviço da seguinte maneira:

name: projects/${project-id}/locations/global/backendServices/hello-world-service
...
backends:
...
  preference: PREFERRED

O exemplo a seguir mostra três back-ends, MIG1, MIG2 e MIG3:

name: ..
...
- backends
name: MIG1
preference: PREFERRED
- backends
name: MIG2
preference: DEFAULT
- backends
name: MIG3
...

Também é possível configurar esse recurso com a CLI gcloud:

gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
      [...]
      --preference=PREFERRED \
      --global

Para atualizar os back-ends preferidos:

gcloud compute backend-services update-backend BACKEND_SERVICE_NAME \
      [...]
      --preference=PREFERRED

Configurar diminuição automática de capacidade

Para configurar o Cloud Service Mesh a fim de reduzir um back-end automaticamente com base na integridade dele, crie uma política de balanceamento de carga de serviço da seguinte maneira:

name: projects/${project-id}/locations/global/serviceLbPolicies/hello-world-lb-policy
autoCapacityDrain:
  enable: True

Também é possível configurar esse recurso com a CLI gcloud:

gcloud network-services service-lb-policies create capacity-drain-policy \
    --auto-capacity-drain \
    --location=global

Personalizar o comportamento de failover

Para configurar o Cloud Service Mesh para um valor específico do limite de integridade de failover, inclua o seguinte em uma política de balanceamento de carga de serviço, substituindo VALUE por um valor entre 1 e 99. Os valores padrão são 50 para a Cloud Service Mesh com gRPC sem proxy e 70 para a Cloud Service Mesh com o Envoy.

projects/${project-id}/locations/global/serviceLbPolicies/hello-world-lb-policy
failoverConfig:
  failoverHealthThreshold: VALUE

Para personalizar o comportamento de failover com a CLI gcloud:

gcloud network-services service-lb-policies create failover-health-threshold--policy \
   --failover-health-threshold=VALUE \
   --location=global