Como trabalhar com instâncias gerenciadas

Um grupo de instâncias gerenciadas (MIG, na sigla em inglês) e as instâncias de máquina virtual (VM) desse grupo são gerenciados como uma única entidade. Por exemplo, é possível definir políticas de recuperação, escalonamento e atualização automáticos no grupo. Com base em suas especificações, o MIG age automaticamente em suas instâncias para atingir o estado desejado.

Caso seja necessário agir em instâncias gerenciadas específicas em um MIG, por exemplo, para criar ou excluir instâncias com nomes específicos, ainda será preciso agir de acordo com essas instâncias por meio da entidade do grupo. Use os métodos nesta página, por exemplo, os métodos de API instanceGroupManager ou regionInstanceGroupManager.

Se você agir em instâncias gerenciadas usando métodos além daqueles do grupo, suas ações poderão entrar em conflito com as ações do grupo. Por exemplo, se você excluir uma instância que pertence a um grupo, mas não usar os métodos de exclusão da instância do grupo, o MIG poderá recriá-la automaticamente de acordo com as especificações do grupo.

Antes de começar

O que é uma instância gerenciada?

Uma instância gerenciada é uma entidade de dados dentro de uma MIG que contém o status atual e o estado pretendido de uma instância de VM real. Em especial:

  • O status atual inclui:
    • Status ciclo de vida da instância, por exemplo, RUNNING e STOPPING.
    • Ação atual realizada pelo MIG em uma instância, por exemplo: RESTARTING, VERIFYING e NONE.
    • Estado de integridade da instância, por exemplo, HEALTHY e UNHEALTHY.
  • O estado desejado inclui:
    • Versão pretendida, ou seja, o nome da versão e o modelo de instância a serem usados para a instância.
    • Estado preservado, de itens (discos e metadados) a serem preservados.

Para cada instância gerenciada no MIG, o grupo mantém uma VM real funcionando de acordo com a especificação da instância gerenciada.

Para visualizar as especificações de uma instância gerenciada, consulte Como obter informações sobre as VMs gerenciadas em um MIG.

Como adicionar instâncias a um MIG

Para adicionar mais instâncias a um MIG, é possível:

Para verificar se as instâncias adicionadas recentemente estão em execução, verifique o status do grupo ou das instâncias gerenciadas.

Redimensionamento manual

Se um grupo de instâncias gerenciadas ainda não estiver definido para escalonar automaticamente, é possível redimensioná-lo manualmente para alterar o número de instâncias no grupo. Consulte Como redimensionar manualmente um MIG.

Escalonamento automático

Configure grupos de instâncias gerenciadas para adicionar ou remover instâncias automaticamente com base nas cargas de trabalho delas. Os aplicativos lidam de maneira suave com aumentos no tráfego, e é possível reduzir os custos quando a necessidade de recursos de computação for menor. Para escalonar automaticamente seu MIG, consulte Como fazer o escalonamento automático de grupos de instâncias.

Como criar instâncias com nomes específicos

Se você tiver um sistema que depende de nomes específicos, use a ferramenta gcloud ou a API para adicionar VMs com nomes específicos a um MIG existente.

Os nomes que você atribuir a essas instâncias gerenciadas persistirão se o MIG recriar a VM. Para ver mais informações sobre como preservar o estado de instâncias de MIG, consulte MIGs com estado.

Limitações

Se você criar instâncias com nomes específicos, observe o seguinte:

  • Desative o escalonamento automático durante o processo de criação da instância.
  • Defina a política de atualização do MIG como oportunista.
  • Se você estiver atualizando um MIG regional, observe o seguinte:
  • Não será possível usar nomes de instância de VM duplicados no mesmo projeto.

gcloud

Use o subcomando create-instances:

gcloud compute instance-groups managed create-instance instance-group-name \
    --instance managed-instance-name \
    [--region region | --zone zone]

Substitua estes itens:

  • instance-group-name é o nome do MIG regional ou por zona que receberá uma nova instância.
  • managed-instance-name é o nome que você quer atribuir à nova instância.

API

Na API, faça uma solicitação POST para o método regionInstanceGroupManagers.createInstances. Para grupos de instâncias gerenciadas zonais, use o método instanceGroupManagers.createInstances. No corpo da solicitação, inclua o campo instances com os nomes de uma ou mais instâncias.

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/createInstances
{
  "instances": [
    {
      "name": "instance-name-1"
    },
    {
      "name": "instance-name-2"
    }
  ]
}

Como atualizar instâncias selecionadas em um grupo

Veja Como lançar atualizações para MIGs.

Como excluir instâncias de um MIG

Quando você exclui instâncias gerenciadas, o MIG reduz o targetSize do grupo e exclui as instâncias de VM correspondentes. O MIG remove as instâncias dos pools de destino que as contêm.

A exclusão de instâncias de um grupo de instâncias gerenciadas não altera as configurações especificadas do escalonador automático. Se você excluir instâncias de um grupo de instâncias gerenciadas, o escalonador automático poderá detectar um aumento na carga de trabalho nas outras instâncias do grupo e aumentar o tamanho dele para o nível anterior. Para evitar isso, interrompa o escalonador automático antes de tentar excluir as instâncias.

Se o grupo fizer parte de um serviço de back-end que tenha ativado a diminuição da conexão, poderá levar até 60 segundos após a duração da diminuição da conexão antes que a instância de VM seja removida ou excluída.

Para excluir uma instância gerenciada e, portanto, remover também a respectiva instância de VM, basta executar as ações a seguir:

Como excluir instâncias específicas

É possível excluir instâncias específicas em um grupo de instâncias gerenciadas. A exclusão de instâncias reduz o targetSize especificado do grupo de instâncias e remove as instâncias de todos os pools de destino de que façam parte. Se você configurar um MIG com estado, o grupo também excluirá as configurações de estado preservadas das instâncias.

A exclusão de instâncias de um grupo de instâncias gerenciadas não altera as configurações especificadas do escalonador automático. Se você excluir instâncias de um grupo de instâncias gerenciadas, o escalonador automático poderá detectar um aumento na carga de trabalho nas outras instâncias do grupo e aumentar o tamanho dele para o nível anterior. Para evitar isso, interrompa o escalonador automático antes de tentar excluir as instâncias.

Se o grupo fizer parte de um serviço de back-end que tenha ativado a diminuição da conexão, poderá levar até 60 segundos após a duração da diminuição da conexão antes que a instância de VM seja removida ou excluída.

Para excluir instâncias de um grupo de instâncias gerenciadas, use o Console do Google Cloud, a ferramenta de linha de comando da gcloud ou a API.

Console

  1. No Console do Cloud, acesse a página Grupos de instâncias.

    Acessar a página Grupos de instâncias

  2. Na coluna Nome da lista, clique no nome do grupo de instâncias de que você quer excluir instâncias individuais. Uma página é aberta com as propriedades do grupo e uma lista de instâncias incluídas nele.
  3. Selecione na lista uma ou mais instâncias que você quer excluir.
  4. Clique em Excluir. As instâncias selecionadas são excluídas.

gcloud

Para excluir uma instância com a ferramenta gcloud, use o subcomando instance-groups managed delete-instances:

gcloud compute instance-groups managed delete-instances instance-group-name \
    --instances example-i3n2,example-z2x9 \
    [--region region | --zone zone]

API

Na API, faça uma solicitação POST para o método regionInstanceGroupManagers.deleteInstances (em inglês). Para grupos de instâncias gerenciadas zonais, use o método instanceGroupManagers.deleteInstances.

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/deleteInstances

{
 "instances": [
  "zones/zone/instances/example-instance-i3n2",
  "zones/zone/instances/example-instance-l6n1"
 ]
}

Depois que você fizer uma solicitação para excluir instâncias em um grupo de instâncias gerenciadas, as instâncias vão parar assim que o sistema puder excluí-las. Esse processo poderá durar uma quantidade significativa de tempo, dependendo do número de instâncias que você excluir do grupo. Verifique o status do grupo ou das instâncias gerenciadas.

Como abandonar instâncias de um MIG

Separe uma instância de VM de um grupo de instâncias gerenciadas para depurar problemas com instâncias individuais mais facilmente sem afetar o grupo como um todo. Abandonar uma instância de um grupo também remove a instância dos balanceadores de carga que foram atribuídos ao grupo de instâncias gerenciadas. Os pools de destino que foram atribuídos manualmente a instâncias individuais específicas não são removidos.

O abandono de instâncias reduz o targetSize do grupo de instâncias, mas não altera as configurações especificadas do escalonador automático. Grupos de instâncias gerenciadas com um escalonador automático continuam a adicionar ou remover instâncias automaticamente conforme necessário.

Se o grupo fizer parte de um serviço de back-end que tenha ativado a diminuição da conexão, poderá levar até 60 segundos após a duração da diminuição da conexão antes que a instância de VM seja removida ou excluída.

Para abandonar instâncias de um grupo de instâncias gerenciadas use o Console do Google Cloud, a ferramenta gcloud ou a API.

Console

  1. No Console do Cloud, acesse a página Grupos de instâncias.

    Acessar a página Grupos de instâncias

  2. Na coluna Nome da lista, clique no nome do grupo com as instâncias que você quer remover. Uma página é aberta com as propriedades do grupo e uma lista de instâncias incluídas nele.
  3. Na lista de instâncias, selecione as que você quer remover do grupo.
  4. Clique em Remover do grupo. As instâncias selecionadas deixam o grupo, mas continuam a ser executadas fora dele.

gcloud

Para remover uma instância do grupo sem excluir a VM, use o subcomando abandon-instances.

gcloud compute instance-groups managed abandon-instances instance-group-name \
    --instances example-i3n2,example-z2x9 \
    [--region region | --zone zone]

API

Na API, faça uma solicitação POST para o método regionInstanceGroupManagers.abandonInstances (em inglês). Para grupos de instâncias gerenciadas zonais, use o método instanceGroupManagers.abandonInstances.

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/abandonInstances

{
 "instances": [
  "zones/zone/instances/example-instance-i3n2",
  "zones/zone/instances/example-instance-l6n1"
 ]
}

Depois que você fizer uma solicitação para abandonar instâncias de um grupo de instâncias gerenciadas, o grupo removerá as instâncias o mais rápido possível. Verifique o status do grupo ou das instâncias gerenciadas.

Como recriar instâncias em um MIG

A recriação de uma instância exclui a VM especificada e cria uma nova VM usando a configuração que é atribuída à instância gerenciada.

Use esse método para atualizar as VMs selecionadas para que elas usem o modelo de instância mais recente e a configuração com estado, se houver. Se você precisar recriar todas as VMs em um grupo de instâncias gerenciadas, inicie uma atualização contínua.

Se o grupo fizer parte de um serviço de back-end que tenha ativado a diminuição da conexão, poderá levar até 60 segundos após a duração da diminuição da conexão antes que a instância de VM seja removida ou excluída.

Recrie as instâncias de VM selecionadas no grupo de instâncias gerenciadas usando a ferramenta gcloud ou a API.

gcloud

Use o subcomando instance-groups managed recreate-instances.

gcloud compute instance-groups managed recreate-instances instance-group-name \
    --instances example-i3n2,example-z2x9 \
    [--region region | --zone zone]

API

Na API, faça uma solicitação POST para o método regionInstanceGroupManagers.recreateInstances (em inglês). Para grupos de instâncias gerenciadas zonais, use o método instanceGroupManagers.recreateInstances.

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/recreateInstances

{
 "instances": [
  "zones/zone/instances/example-instance-i3n2",
  "zones/zone/instances/example-instance-l6n1"
 ]
}

Depois que você fizer uma solicitação para recriar instâncias de VM em um grupo de instâncias gerenciadas, as novas VMs serão iniciadas assim que o sistema puder provisioná-las. Esse processo pode demorar significativamente dependendo do número de instâncias recriadas. Verifique o status do grupo ou das instâncias gerenciadas.

Como ver informações sobre instâncias em um MIG

Consulte Como ver informações sobre as instâncias gerenciadas em um MIG.

A seguir