Escalabilidade com base na capacidade de publicação do balanceamento de carga

Este documento descreve como dimensionar um grupo de instâncias gerido (MIG) com base na capacidade de publicação de um Application Load Balancer externo ou de um Application Load Balancer interno. Isto significa que a escala automática adiciona ou remove instâncias de VM no grupo quando o balanceador de carga indica que o grupo atingiu uma fração configurável da respetiva capacidade, em que a capacidade é definida pela capacidade alvo do modo de balanceamento selecionado do grupo de instâncias de back-end.

Também pode dimensionar um GIG com base na respetiva utilização da CPU ou nas métricas de monitorização.

Limitações

Pode criar uma escala automática de um grupo de instâncias gerido com base na capacidade de publicação de um Application Load Balancer externo e um Application Load Balancer interno. Outros tipos de balanceadores de carga não são suportados.

Antes de começar

  • Reveja as limitações do ajuste automático.
  • Leia acerca dos princípios básicos do escalamento automático.
  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Trusted Cloud by S3NS serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se no Compute Engine selecionando uma das seguintes opções:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Trusted Cloud console to access Trusted Cloud by S3NS services and APIs, you don't need to set up authentication.

    gcloud

    1. Instale a CLI Google Cloud e, em seguida, inicie sessão na CLI gcloud com a sua identidade federada. Depois de iniciar sessão, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init
    2. Set a default region and zone.

    REST

    Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.

      Instale a CLI Google Cloud e, em seguida, inicie sessão na CLI gcloud com a sua identidade federada. Depois de iniciar sessão, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

    Para mais informações, consulte o artigo Autenticar para usar REST na Trusted Cloud documentação de autenticação.

Dimensionamento com base na capacidade de publicação do balanceamento de carga HTTP(S)

O Compute Engine oferece suporte para o equilíbrio de carga nos seus grupos de instâncias. Pode usar a escala automática em conjunto com o equilíbrio de carga configurando um escalador automático que seja dimensionado com base na carga das suas instâncias.

Um balanceador de carga HTTP(S) externo ou interno distribui pedidos para serviços de back-end de acordo com o respetivo mapa de URLs. O balanceador de carga pode ter um ou mais serviços de back-end, cada um deles a suportar back-ends de grupos de instâncias ou grupos de pontos finais da rede (NEGs). Quando os back-ends são grupos de instâncias, o balanceador de carga HTTP(S) oferece dois modos de balanceamento: UTILIZATION e RATE. Com o UTILIZATION, pode especificar um objetivo máximo para a utilização média de back-end de instâncias no grupo de instâncias. Com RATE, tem de especificar um número de pedidos por segundo de destino com base em cada instância ou em cada grupo. (Apenas os grupos de instâncias zonais suportam a especificação de uma taxa máxima para todo o grupo. Os grupos de instâncias geridos regionais não suportam a definição de uma taxa máxima por grupo.

O modo de equilíbrio e a capacidade de destino que especificar definem as condições em que o Trusted Cloud determina quando uma VM de back-end está na capacidade máxima. Trusted Cloud tenta enviar tráfego para VMs em bom estado que tenham capacidade restante. Se todas as VMs já estiverem no limite da capacidade, a utilização ou a taxa alvo é excedida.

Quando anexa um escalador automático a um back-end de grupo de instâncias de um balanceador de carga HTTP(S), o escalador automático dimensiona o grupo de instâncias gerido para manter uma fração da capacidade de fornecimento do balanceamento de carga.

Por exemplo, suponha que a capacidade de publicação de balanceamento de carga de um grupo de instâncias geridas é definida como 100 RPS por instância. Se criar um escalador automático com a política de balanceamento de carga HTTP(S) e o definir para manter um nível de utilização alvo de 0,8 ou 80%, o escalador automático adiciona ou remove instâncias do grupo de instâncias gerido para manter 80% da capacidade de fornecimento ou 80 RPS por instância.

O diagrama seguinte mostra como o escalador automático interage com um grupo de instâncias gerido e um serviço de back-end:

As relações entre o escalador automático, os grupos de instâncias geridos e os serviços de back-end de balanceamento de carga.
O redimensionador automático monitoriza a capacidade de publicação do grupo de instâncias gerido, que é definida no serviço de back-end, e dimensiona com base na utilização alvo. Neste exemplo, a capacidade de publicação é medida no valor maxRatePerInstance.

Configurações de balanceamento de carga aplicáveis

Pode definir uma de três opções para a capacidade de publicação do seu equilíbrio de carga. Quando cria o back-end pela primeira vez, pode escolher entre a utilização máxima do back-end, o número máximo de pedidos por segundo por instância ou o número máximo de pedidos por segundo de todo o grupo. O dimensionamento automático só funciona com a utilização máxima do back-end e o máximo de pedidos por segundo/instância, porque o valor destas definições pode ser controlado adicionando ou removendo instâncias. Por exemplo, se definir um back-end para processar 10 pedidos por segundo por instância e o escalador automático estiver configurado para manter 80% dessa taxa, o escalador automático pode adicionar ou remover instâncias quando os pedidos por segundo por instância mudam.

O dimensionamento automático não funciona com o número máximo de pedidos por grupo porque esta definição é independente do número de instâncias no grupo de instâncias. O balanceador de carga envia continuamente o número máximo de pedidos por grupo para o grupo de instâncias, independentemente do número de instâncias no grupo.

Por exemplo, se definir o back-end para processar um máximo de 100 pedidos por grupo por segundo, o balanceador de carga envia 100 pedidos por segundo para o grupo, quer o grupo tenha duas instâncias ou 100 instâncias. Uma vez que este valor não pode ser ajustado, o dimensionamento automático não funciona com uma configuração de equilíbrio de carga que use o número máximo de pedidos por segundo por grupo.

Ative a escala automática com base na capacidade de publicação do balanceamento de carga

Consola

  1. Aceda à página Grupos de instâncias na Trusted Cloud consola.

    Aceda a Grupos de instâncias

  2. Se tiver um grupo de instâncias, selecione-o e, de seguida, clique em Editar. Se não tiver um grupo de instâncias, clique em Criar grupo de instâncias.
  3. Clique em Tamanho do grupo e dimensionamento automático para expandir a secção.
  4. Na lista Modo de dimensionamento automático, certifique-se de que a opção Ativado: adicionar e remover instâncias do grupo está selecionada.
  5. Especifique os números mínimo e máximo de instâncias que quer que o escalador automático crie neste grupo.
  6. Na secção Sinais de ajuste automático de escala, clique em Adicionar um sinal.
  7. Defina o Tipo de sinal como Utilização do balanceamento de carga de HTTP.
  8. Introduza o valor da Utilização do balanceamento de carga HTTP de destino em percentagem. Por exemplo, para uma utilização de 60% do balanceamento de carga HTTP, introduza 60.

  9. Pode usar o campo Período de inicialização para definir o período de inicialização, que indica ao escalador automático quanto tempo a sua aplicação demora a inicializar. A especificação de um período de inicialização preciso melhora as decisões do escalador automático. Por exemplo, ao aumentar a escala, o escalador automático ignora os dados das VMs que ainda estão a ser inicializadas, porque essas VMs podem ainda não representar a utilização normal da sua aplicação. O período de inicialização predefinido é de 60 segundos.

  10. Guarde as alterações.

gcloud

Para ativar um escalador automático que dimensiona com base na capacidade de publicação, use o subcomando set-autoscaling. Por exemplo, o comando seguinte cria um escalador automático que dimensiona o grupo de instâncias gerido de destino para manter 60% da capacidade de publicação. Juntamente com o parâmetro --target-load-balancing-utilization, o parâmetro --max-num-replicas também é obrigatório quando cria um ajuste automático:

gcloud compute instance-groups managed set-autoscaling example-managed-instance-group \
    --max-num-replicas 20 \
    --target-load-balancing-utilization 0.6 \
    --cool-down-period 90

Pode usar a flag --cool-down-period para definir o período de inicialização, que indica ao escalador automático quanto tempo a sua aplicação demora a inicializar. A especificação de um período de inicialização preciso melhora as decisões do escalador automático. Por exemplo, ao aumentar a escala, o escalador automático ignora os dados das VMs que ainda estão a ser inicializadas, porque essas VMs podem ainda não representar a utilização normal da sua aplicação. O período de inicialização predefinido é de 60 segundos.

Pode verificar se o escalador automático foi criado com êxito através do subcomando instance-groups managed describe:

gcloud compute instance-groups managed describe example-managed-instance-group

Para ver uma lista dos gcloud comandos e flags disponíveis, consulte a gcloud referência.

REST

Para criar um escalador automático, use o método autoscalers.insert para um GIG zonal ou o método regionAutoscalers.insert para um GIG regional.

O exemplo seguinte cria um redimensionador automático para um MIG zonal:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers/

O corpo do pedido tem de conter os campos name, target e autoscalingPolicy. autoscalingPolicy tem de definir loadBalancingUtilization.

Pode usar o campo coolDownPeriodSec para definir o período de inicialização, que indica ao escalador automático quanto tempo a sua aplicação demora a inicializar. A especificação de um período de inicialização preciso melhora as decisões do escalador automático. Por exemplo, ao aumentar a escala, o escalador automático ignora os dados das VMs que ainda estão a ser inicializadas, porque essas VMs podem ainda não representar a utilização normal da sua aplicação. O período de inicialização predefinido é de 60 segundos.

{

 "name": "example-autoscaler",
 "target": "zones/us-central1-f/instanceGroupManagers/example-managed-instance-group",
 "autoscalingPolicy": {
    "maxNumReplicas": 20,
    "loadBalancingUtilization": {
       "utilizationTarget": 0.8
     },
    "coolDownPeriodSec": 90
  }
}

Para mais informações sobre como ativar a escala automática com base na capacidade de publicação do balanceamento de carga, conclua o tutorial Criação de uma escala automática global de um serviço Web no Compute Engine.

O que se segue?