Neste documento, descrevemos os procedimentos específicos para criar e gerenciar grupos de instâncias gerenciadas regionais (MIGs regionais). Para informações gerais sobre a criação de MIGs, consulte Como criar grupos de instâncias gerenciadas.
Um MIG regional distribui as instâncias em várias zonas em uma região, o que aumenta a resiliência das cargas de trabalho baseadas em MIG. O uso de várias zonas protege você contra casos extremos em que todas as instâncias de uma única zona falham.
Para mais informações sobre MIGs regionais, incluindo por que escolhê-los, as opções de configuração adicionais e como eles são diferentes dos MIGs zonais, consulte a Visão geral do MIG regional.
Antes de começar
- Para usar os exemplos da API deste guia, configure o acesso a ela.
- Para usar os exemplos de linha de comando deste guia, instale a ferramenta de linha de comando
gcloud
. - Crie um modelo de instância, que é um elemento básico para um grupo gerenciado de instâncias.
- Leia sobre regiões e zonas, que contêm recursos como CPUs, GPUs e discos.
Limitações
- Com um MIG regional, é possível criar até 2.000 VMs em uma região, com um máximo de 1.000 VMs por zona. Com um MIG zonal, é possível criar até 1.000 VMs. Se você precisar de mais VMs, entre em contato com o suporte.
- Ao atualizar um MIG, é possível especificar até 1.000 VMs em uma única solicitação.
Para um MIG com estado, analise as limitações desse tipo de MIG.
Para usar o balanceamento de carga com um MIG regional, as seguintes limitações se aplicam:
- Não é possível usar o modo de balanceamento
maxRate
. - Se você usa um esquema de balanceamento de carga HTTP(S) com um MIG regional, é necessário
escolher o modo de balanceamento
maxRatePerInstance
oumaxUtilization
.
- Não é possível usar o modo de balanceamento
Para escalonar automaticamente um MIG regional, as seguintes limitações se aplicam:
- Para aumentar e reduzir o escalonamento horizontal, é preciso ativar a redistribuição proativa de instâncias. Se você definir o modo do escalonador automático apenas para escalonamento horizontal, não será necessário ativar a distribuição proativa de instâncias.
Para fazer escalonamento automático de um MIG regional com base nas métricas do Cloud Monitoring, as seguintes limitações se aplicarão:
- Não é possível usar métricas por grupo.
- Não é possível aplicar filtros a métricas por instância.
Como criar um MIG regional
Use o Console do Cloud, a
ferramenta gcloud
ou a API Compute Engine.
Se não houver capacidade suficiente em cada zona para aceitar as VMs do grupo, o Compute Engine criará o máximo de VMs possível e continuará a criar as outras restantes quando houver capacidade extra disponível.
Como você está criando um MIG regional, lembre-se de que determinados recursos são zonais, como discos permanentes. Se você estiver especificando recursos por zona no modelo de instância, como discos permanentes extras, o disco precisará estar presente em todas as zonas para que possa ser anexado às VMs criadas por esse MIG regional.
Por padrão, se você não especificar explicitamente zonas individuais na solicitação, o Compute Engine escolherá automaticamente três zonas para criar VMs. Se precisar criar VMs em mais de ou menos de três zonas ou se quiser escolher quais zonas serão usadas, forneça uma lista de zonas em sua solicitação. Para mais informações, consulte Seleção de zona.
Por padrão, a redistribuição proativa de instâncias está ativada. Se você precisar gerenciar manualmente o número de VMs em cada zona, desative a redistribuição proativa de instâncias e não configure o escalonamento automático.
Console
- No Console do Cloud, acesse a página Grupos de instâncias.
- Clique em Criar grupo de instâncias para criar um novo grupo.
- Em Localização, selecione Várias zonas.
- Escolha a região desejada.
- Se você quiser escolher zonas específicas, clique em Configurar zonas para selecionar quais usar.
- Se você quiser desativar a redistribuição proativa de instâncias, siga estas etapas:
- Verifique se o Modo de escalonamento automático está definido como Não fazer escalonamento automático.
- Defina a Redistribuição da instância como Desativado.
- Selecione um modelo de instância para o grupo ou crie um modelo novo.
- Especifique o número de VMs para este grupo. Lembre-se de provisionar VMs suficientes para dar suporte ao aplicativo se ocorrer uma falha de zona.
- Continue com o restante do processo de criação do MIG.
gcloud
Todos os MIGs exigem um modelo de instância. Caso ainda não tenha um, crie um modelo de instância. Por exemplo, o comando a seguir cria um modelo básico de instância com propriedades padrão:
gcloud compute instance-templates create example-template
Em seguida, use o
comando instance-groups managed create
com a sinalização --region
. Por exemplo, o comando a seguir cria um
MIG regional em três zonas dentro da região us-east1
:
gcloud compute instance-groups managed create example-rmig \ --template example-template \ --size 30 \ --region us-east1
Para selecionar zonas específicas
que o grupo usará, especifique a sinalização --zones
:
gcloud compute instance-groups managed create example-rmig \ --template example-template \ --size 30 \ --zones us-east1-b,us-east1-c
Para desativar a redistribuição proativa de instâncias,
defina a sinalização --instance-redistribution-type
como NONE
. Não é possível desativar
a redistribuição proativa de instâncias se o escalonamento automático estiver ativado.
gcloud compute instance-groups managed create example-rmig \ --template example-template \ --size 30 \ --instance-redistribution-type NONE \ --region us-east1
API
Todos os MIGs exigem um modelo de instância. Caso ainda não tenha um, crie um modelo de instância.
Em seguida, crie uma solicitação POST
para o
método regionInstanceGroupManagers.insert
.
No corpo da solicitação, especifique o nome e o tamanho do grupo e o URL
do modelo de instância. Opcionalmente, especifique outros campos, como o nome de base
das instâncias no grupo.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers { "baseInstanceName": "BASE_INSTANCE_NAME", "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME", "name": "INSTANCE_GROUP_NAME", "targetSize": "TARGET_SIZE" }
Substitua:
PROJECT_ID
: o ID do projeto desta solicitação;REGION
: a região do grupo;BASE_INSTANCE_NAME
: o nome da instância de cada instância de VM criada como parte do grupo. Por exemplo, o nome de instância de baseexample-instance
cria instâncias com nomes comoexample-instance-[RANDOM_STRING]
, em que[RANDOM_STRING]
é gerado pelo servidor;INSTANCE_TEMPLATE_NAME
: o modelo de instância a ser usado;INSTANCE_GROUP_NAME
: o nome do MIG;TARGET_SIZE
: o número pretendido de VMs para o grupo.
Se você quiser
selecionar zonas específicas
ou criar VMs em uma região com menos ou mais de três
zonas, inclua a propriedade distributionPolicy
na solicitação e forneça uma
lista de zonas. Substitua ZONE
pelo nome de uma
zona onde criar VMs.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers { "baseInstanceName": "BASE_INSTANCE_NAME", "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME", "name": "INSTANCE_GROUP_NAME", "targetSize": "TARGET_SIZE", "distributionPolicy": { "zones": [ {"zone": "zones/ZONE"}, {"zone": "zones/ZONE"} ] } }
Por exemplo, o seguinte cria um MIG regional chamado example-rmig
com 10 instâncias gerenciadas distribuídas entre as zonas us-east1-b
e
us-east1-c
:
POST https://compute.googleapis.com/compute/v1/projects/myproject/regions/us-east1/instanceGroupManagers { "instanceTemplate": "global/instanceTemplates/example-instance", "name": "example-rmig", "targetSize": 10, "distributionPolicy": { "zones": [ {"zone": "zones/us-east1-b"}, {"zone": "zones/us-east1-c"} ] } }
Como trabalhar com instâncias gerenciadas em um MIG regional
Se você precisar agir em instâncias gerenciadas específicas em um MIG, por exemplo, para criar ou excluir instâncias com nomes específicos, o processo será o mesmo para MIGs regionais e zonais. Consulte Como trabalhar com instâncias gerenciadas.
Como receber informações sobre MIGs regionais e instâncias gerenciadas
Se você quiser receber informações sobre seu MIG, por exemplo, para ver sua configuração ou inspecionar seu status ou se quiser informações sobre as instâncias gerenciadas em um MIG, o processo será o mesmo para regional e MIGs zonais. Consulte Como receber informações sobre MIGs e instâncias gerenciadas.
Como atualizar um grupo regional de instâncias gerenciadas
É possível aplicar um novo modelo de instância a um MIG regional usando o recurso Updater. Para mais informações, consulte Como atualizar um MIG regional.
Se você quiser adicionar ou remover instâncias em um MIG, consulte Como trabalhar com instâncias gerenciadas.
Se você quiser usar ou atualizar recursos do MIG, consulte a documentação de recuperação automática, balanceamento de carga, escalonamento automático, atualização automática e cargas de trabalho com estado.
Como desativar e reativar a redistribuição proativa de instâncias
A redistribuição proativa de instâncias mantém um número igual de VMs nas zonas selecionadas na região. Essa configuração maximiza a disponibilidade do aplicativo no caso de uma falha no nível da zona.
A redistribuição proativa de instâncias é ativada por padrão para MIGs regionais, mas é possível desativá-la para MIGs não escalonadas automaticamente. Quando a redistribuição proativa de instâncias é desativada, o grupo não tenta redistribuir proativamente as VMs entre as zonas. Isso é útil quando você precisa:
- Excluir ou abandonar manualmente as instâncias gerenciadas do grupo sem afetar outras VMs em execução.
- Excluir automaticamente uma VM de worker em lote após a conclusão do job sem afetar outros workers.
- Proteger as VMs com aplicativos com estado contra exclusão automática não intencional por redistribuição proativa de instâncias.
Use o Console do Cloud, a
ferramenta gcloud
ou a API Compute Engine
para criar uma região regional MIG com
redistribuição proativa de instâncias desativada
ou para ativar ou desativar a redistribuição de instâncias de um grupo atual.
Como criar um grupo com a redistribuição proativa de instâncias desativada
Console
- No Console do Cloud, acesse a página Grupos de instâncias.
- Clique em Criar grupo de instâncias para criar um novo grupo.
- Em Localização, selecione Várias zonas.
- Escolha a região desejada.
- Se você quiser escolher zonas específicas, clique em Configurar zonas para selecionar quais usar.
- Para desativar a redistribuição proativa de instâncias, siga estas etapas:
- Verifique se o Modo de escalonamento automático está definido como Não fazer escalonamento automático.
- Defina Redistribuição de instâncias como Desativada.
- Escolha um modelo de instância para o grupo ou crie um novo.
- Especifique o número de VMs para este grupo. Lembre-se de provisionar VMs suficientes para dar suporte ao aplicativo se ocorrer uma falha de zona.
- Continue com o restante do processo de criação do MIG.
gcloud
Para criar um novo MIG regional sem redistribuição proativa de instâncias,
use o comando
gcloud compute instance-groups managed create
com a sinalização --instance-redistribution-type
definida como NONE
.
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \ --template INSTANCE_TEMPLATE_NAME \ --size TARGET_SIZE \ --zones ZONES \ --instance-redistribution-type NONE
Substitua:
INSTANCE_GROUP_NAME
: o nome do MIG;INSTANCE_TEMPLATE_NAME
: o nome do modelo de instância a ser usado para o grupo;TARGET_SIZE
: o tamanho de destino do grupo;ZONES
: a lista de zonas em uma única região em que você precisa implantar VMs.
Exemplo:
gcloud compute instance-groups managed create example-rmig \ --template example-template \ --size 30 \ --zones us-east1-b,us-east1-c \ --instance-redistribution-type NONE
API
Para criar um MIG regional, sem escalonamento automático e sem redistribuição proativa de instâncias,
faça uma solicitação POST
ao método regionInstanceGroupManagers.insert
. No corpo da solicitação, inclua a propriedade updatePolicy
e defina o respectivo campo
instanceRedistributionType
como NONE
.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME { "name": "INSTANCE_GROUP_NAME", "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME", "targetSize": "TARGET_SIZE", "distributionPolicy": { "zones": [ {"zone": "zones/ZONE"}, {"zone": "zones/ZONE"} ] }, "updatePolicy": { "instanceRedistributionType": "NONE" } }
Substitua:
PROJECT_ID
: o ID do projeto desta solicitação;REGION
: a região do grupo de instâncias;INSTANCE_GROUP_NAME
: o nome do MIG;INSTANCE_TEMPLATE_NAME
: o nome do modelo de instância a ser usado para o grupo;TARGET_SIZE
: o tamanho de destino do grupo de instâncias;ZONE
: o nome de uma zona na única região em que você precisa implantar as VMs.
Como desativar a redistribuição proativa de instâncias
Antes de desativar a redistribuição proativa de instâncias, é preciso definir o modo do escalonador automático para desativar o escalonamento automático ou restringi-lo apenas para escalonamento horizontal.
Console
- No Console do Cloud, acesse a página Grupos de instâncias.
- Selecione o MIG a ser atualizado e clique em Editar grupo.
- Se houver alguma configuração de escalonamento automático, verifique se o Modo de escalonamento automático está definido como Não fazer escalonamento automático.
- Defina Redistribuição de instâncias como Desativado para desativar a redistribuição automática.
- Clique em Salvar.
gcloud
Para desativar a redistribuição proativa de instâncias para um MIG
regional não escalonado automaticamente, use o comando
compute instance-groups managed update
com a sinalização --instance-redistribution-type
definida como NONE
.
gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \ --instance-redistribution-type NONE \ --region REGION
Substitua:
INSTANCE_GROUP_NAME
: o nome do MIG.REGION
: a região do grupo de instâncias.
API
Para desativar a redistribuição proativa de instâncias para um MIG regional sem escalonamento
automático, faça uma solicitação PATCH
para o
método regionInstanceGroupManagers.patch
.
No corpo da solicitação, inclua a propriedade updatePolicy
e defina o respectivo campo
instanceRedistributionType
como NONE
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/[INSTANCE_GROUP_NAME { "updatePolicy": { "instanceRedistributionType": "NONE" } }
Substitua:
PROJECT_ID
: o ID do projeto desta solicitação;REGION
: a região do grupo de instâncias;INSTANCE_GROUP_NAME
: o nome de um MIG sem escalonamento automático.
Como ativar a distribuição proativa de instâncias
Para ativar a distribuição proativa de instâncias, use um comando semelhante ao visto em Como desativar a redistribuição proativa de instâncias, mas defina o tipo de redistribuição de instâncias como PROACTIVE
.
Se você tiver excluído ou abandonado manualmente algumas instâncias gerenciadas que resultam em uma distribuição desigual de VMs na região, antes de reativar a redistribuição proativa de instâncias, será necessário reequilibrar manualmente o grupo. A diferença no número de VMs entre duas zonas não pode exceder uma VM.
Um MIG regional não permite ativar a redistribuição proativa de instâncias quando as VMs são distribuídas de maneira uniforme entre as zonas (a diferença no número de VMs entre duas zonas é de duas ou mais VMs). Isso evita uma exclusão automática não intencional de VMs de zonas com mais VMs, o que seria acionado para atingir a distribuição uniforme.
Como reequilibrar manualmente um MIG regional
O MIG não será equilibrado se a diferença no número de VMs entre duas zonas for de duas ou mais VMs. Um MIG poderá não balancear se você desativar a redistribuição proativa de instâncias e, em seguida, excluir ou abandonar instâncias para causar uma distribuição desigual entre as zonas.
É possível conseguir manualmente uma distribuição uniforme de instâncias entre zonas excluindo VMs das zonas com mais instâncias ou redimensionando para adicionar instâncias para zonas com menos VMs até que a distribuição esteja uniforme.
Quando você redimensiona um MIG com a redistribuição proativa de instâncias desativada, o grupo ainda converge de forma oportunista para o equilíbrio, tratando cada operação de redimensionamento como uma oportunidade para equilibrar o grupo:
- Quando o grupo cresce, o grupo sempre tenta adicionar VMs às zonas com o menor número de VMs.
- Quando o grupo diminui, o grupo sempre remove as VMs das zonas com o maior número de VMs.
Como simular uma falha de zona em um MIG regional
Para testar se o MIG regional está sendo provisionado em excesso e sobreviva a uma interrupção de zona, use o exemplo a seguir para simular uma falha zonal.
Neste script, o Apache é interrompido e iniciado como o cenário padrão. Caso isso não se aplique ao aplicativo, substitua os comandos que interrompem e iniciam o Apache pelo seu próprio cenário de falha e recuperação.
Implante e execute esse script continuamente em todas as VMs do grupo. Para fazer isso, adicione o script ao modelo da instância ou inclua esse script a uma imagem personalizada e use essa imagem no modelo.
Simule uma falha de zona definindo estes dois campos de metadados do projeto:
failed_zone
: define a zona em que simular a falha (limite a falha a apenas uma zona);failed_instance_names
: escolha as VMs que ficarão off-line por nome (para limitar a falha apenas a nomes de VM que contenham essa string).
É possível definir esses metadados usando a ferramenta
gcloud
. Por exemplo, o comando a seguir define a interrupção da zona como a zonaeurope-west1-b
e afeta as VMs que têm nomes que começam combase-instance-name
:gcloud compute project-info add-metadata --metadata failed_zone='europe-west1-b',failed_instance_names='base-instance-name-'
Depois de simular a falha, execute a recuperação removendo as chaves de metadados:
gcloud compute project-info remove-metadata --keys failed_zone,failed_instance_names
Aqui estão algumas ideias de cenários de falha que podem ser executados com esse script:
- Interrompa seu aplicativo completamente para ver como o MIG responde.
- Faça com que suas VMs retornem como "não íntegras" nas verificações de integridade de balanceamento de carga.
- Modifique o iptables para bloquear parte do tráfego de e para a VM.
- Encerre as VMs. Por padrão, ele será recriado pelo MIG regional logo após, mas a nova encarnação será encerrada imediatamente assim que o script for executado e enquanto os valores de metadados forem definidos. Isso acarreta um loop de falha.
A seguir
- Crie um modelo de instância para usar em um grupo de instâncias gerenciadas.
- Escolha um balanceador de carga ou adicione um grupo de instâncias a um balanceador de carga.
- Ative a recuperação automática do grupo de instâncias gerenciadas.
- Ative o escalonamento automático do grupo de instâncias gerenciadas.
- Use o atualizador automático para atualizar suas instâncias gerenciadas com um novo modelo.