Configure 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 vista geral do balanceamento de carga avançado. Este documento destina-se a utilizadores que têm, pelo menos, um conhecimento intermédio dos conceitos de Cloud Service Mesh e equilíbrio de carga.

Antes de começar

Atualize a CLI Google Cloud para se certificar de que tem a versão mais recente:

gcloud components update

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

Para criar um novo serviço de back-end denominado hello-world-backend-service, use o seguinte 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

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

Pode definir políticas de equilíbrio de carga de serviços num ficheiro YAML. Por exemplo, configure uma política para ativar a funcionalidade de esgotamento automático da capacidade da seguinte forma num ficheiro denominado hello-world-lb-policy:

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

Depois de criar o ficheiro YAML, importe-o:

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

Por último, associe a política de balanceamento de carga do 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

Em alternativa, pode associar uma política de balanceamento de carga de serviço existente a um serviço de back-end quando criar o serviço de back-end:

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 alterações ao recurso do serviço de back-end. A implementação do Cloud Service Mesh também tem de incluir uma verificação de funcionamento e regras de firewall, e tem de adicionar back-ends conforme necessário.

Configure o algoritmo de pulverização para região

Para configurar o algoritmo de dispersão para a região, que distribui o tráfego para todas as zonas numa região, crie uma política de balanceamento de carga de serviço num ficheiro denominado hello-world-lb-policy.yaml:

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

Importe o ficheiro YAML:

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

Também pode configurar este algoritmo com a CLI gcloud:

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

Configure o algoritmo de hierarquia de publicação por zona

Para configurar o algoritmo de cascata por zona, que envia tráfego para a zona local antes de derramar tráfego para outras zonas, crie uma política de balanceamento de carga de serviço num ficheiro denominado hello-world-lb-policy.yaml:

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

Importe o ficheiro YAML:

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

Também pode configurar este algoritmo com a CLI gcloud:

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

Configure backends preferenciais

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

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

O exemplo seguinte 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 pode configurar esta funcionalidade com a CLI gcloud:

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

Para atualizar os backends preferenciais:

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

Configure a redução automática da capacidade

Para configurar o Cloud Service Mesh para esvaziar um back-end automaticamente com base no respetivo estado de funcionamento, crie uma política de balanceamento de carga de serviço da seguinte forma:

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

Também pode configurar esta funcionalidade com a CLI gcloud:

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

Personalize o comportamento de comutação por falha

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

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

Para personalizar o comportamento de comutação por falha com a CLI gcloud:

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