Como criar grupos de instâncias gerenciadas

Um grupo de instâncias gerenciadas (MIG, na sigla em inglês) contém instâncias idênticas baseadas em um modelo. Os MIGs mantêm a alta disponibilidade dos apps mantendo suas instâncias disponíveis de maneira proativa, ou seja, no estado RUNNING.

Os grupos de instâncias gerenciadas são compatíveis com recuperação automática, balanceamento de carga, escalonamento automático e atualização automática.

É possível criar MIGs zonais (zona única) e regionais (multizona). Estes fornecem maior disponibilidade com instâncias espalhadas por várias zonas na mesma região.

Para saber mais sobre grupos de instâncias, leia a Visão geral de grupos de instâncias.

Antes de começar

Limitações

  • Cada grupo de instâncias gerenciadas pode conter até 1.000 instâncias de máquina virtual (VM).
  • Na atualização de um grupo de instâncias gerenciadas, é possível especificar no máximo 1.000 instâncias gerenciadas em uma única solicitação.

Como usar grupos de instâncias gerenciadas para apps sem estado

Grupos de instâncias gerenciadas são compatíveis com apps sem estado que não dependem do estado específico das instâncias de VM subjacentes para execução. Isso permite recursos como escalonamento automático e recuperação automática, em que o grupo de instâncias gerenciadas pode excluir e recriar instâncias automaticamente. Além disso, se uma instância for excluída do grupo de instâncias gerenciadas devido a uma ação do usuário, como parte da recuperação automática ou devido à manutenção de infraestrutura, e ela não estiver definida para migração em tempo real, o grupo de instâncias a recriará automaticamente com um novo disco permanente raiz.

Devido à natureza sem estado dos grupos de instâncias gerenciadas, é preciso projetar ou adaptar seu app para que não dependa de propriedades específicas da instância que não permanecem, como um endereço IP ou dados na memória. Da mesma maneira, o comportamento padrão dos discos permanentes de inicialização é excluí-las quando a instância de VM correspondente for excluída. Portanto, não dependa de discos de inicialização como dados permanentes em um grupo de instâncias gerenciadas.

Para manter os dados, a recomendação do Google é manter as imagens do SO atualizadas, usar scripts de inicialização e fazer backup dos dados em outro local centralizado, como o Google Cloud Storage.

Nos modelos de instância, especifique uma imagem de contêiner ou uma imagem personalizada e os scripts de inicialização relevantes para que, quando uma instância for recriada, ela tenha os apps necessários instalados e receba acesso aos dados exigidos. Para mais recomendações relacionadas à criação de modelos de instâncias, leia Modelos deterministas de instância.

Para salvar os discos associados aos grupos de instâncias gerenciadas, desative a opção disks.autoDelete para impedir a exclusão de discos permanentes. Se a instância que usa o disco for excluída (por exemplo, se o escalonador automático reduzir o grupo ou se você excluir manualmente a instância), será necessário limpar manualmente os discos restantes, se desejar.

Como criar um grupo de instâncias gerenciadas

Antes de criar um grupo de instâncias gerenciadas, crie um modelo de instância para especificar a imagem do sistema operacional ou do contêiner e as configurações de cada instância do grupo.

Depois de criar o modelo, crie o grupo de instâncias gerenciadas por meio do Console do Google Cloud, da ferramenta gcloud compute ou da API.

Console

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

    Acessar a página "Grupos de instâncias"

  2. Clique em Criar um grupo de instâncias.
  3. Digite um nome para o grupo de instâncias gerenciadas e selecione a zona em que você quer localizar o grupo.
  4. Em Tipo de grupo, selecione Grupo de instâncias gerenciadas.
  5. Em Modelo de instância, selecione um modelo de instância. Se nenhum modelo estiver disponível, crie um modelo de instância.
  6. Especifique o número de instâncias que você quer criar no grupo. Também é possível ativar o escalonamento automático para que o grupo adicione ou remova automaticamente as instâncias com base no uso ou ativar a recuperação automática para executar a verificação de integridade baseada em aplicativo nas instâncias do grupo.
  7. Clique em Criar para criar o novo grupo.

gcloud

Crie um grupo de instâncias com o subcomando instance-groups managed create:

gcloud compute instance-groups managed create instance-group-name \
    --base-instance-name base-name \
    --size size \
    --template instance-template \
    --zone zone

Substitua:

  • instance-group-name: o nome desse grupo de instâncias.
  • base-name: o nome a ser usado para instâncias criadas neste grupo de instâncias. Como essas instâncias são idênticas, elas recebem uma string aleatória como parte do nome de cada uma delas. O nome de base precede essa string aleatória. Por exemplo, se o nome de base era example, as instâncias têm nomes como example-yahs e example-qtyz. Se você precisar de nomes específicos, consulte Como criar instâncias com nomes específicos em MIGs.
  • size: o tamanho do grupo de instâncias.
  • instance-template: o nome do modelo de instância a ser usado para este grupo.
  • zone: uma das zonas disponíveis para o Compute Engine.

    Por exemplo, o comando a seguir cria um grupo de instâncias chamado example-group, que tem a instância de base chamada test. O grupo contém três instâncias:

    gcloud compute instance-groups managed create example-group \
      --base-instance-name test \
      --size 3 \
      --template an-instance-template

API

Na API, crie uma solicitação POST para o método instanceGroupManagers.insert ou regionInstanceGroupManagers.insert. No corpo da solicitação, inclua o nome e tamanho do grupo, o nome base das instâncias no grupo e o URL do modelo da instância.

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

{
  "baseInstanceName": "base-name",
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/instance-template"
    }
  ],
  "name": "instance-group-name",
  "targetSize": size
}

Substitua:

  • project-id: o ID do projeto para a solicitação.
  • zone: a zona da solicitação.
  • instance-group-name: o nome desse grupo de instâncias.
  • base-name: o nome a ser usado para instâncias criadas neste grupo. Como essas instâncias são idênticas, elas recebem uma string aleatória como parte do nome de cada uma delas. O nome de base precede essa string aleatória. Por exemplo, se o nome de base era example, as instâncias têm nomes como example-yahs e example-qtyz.
  • size: o tamanho do grupo de instâncias.
  • instance-template: o modelo de instância a ser usado para este grupo.

Dependendo de como você configura e age em um MIG, várias políticas e ações podem afetar as instâncias no grupo. Para determinar quais instâncias gerenciadas estão em execução, consulte Como verificar o status de instâncias gerenciadas.

Alteração do modelo de instância de um grupo de instâncias gerenciadas

Altere o modelo de instância de um grupo de instâncias gerenciadas sem aplicar nenhuma alteração às instâncias. O grupo de instâncias gerenciadas usa o novo modelo quando você faz uma solicitação para adicionar ou recriar instâncias, mas o modelo não atualiza automaticamente as instâncias no grupo. Isso permite que você controle exatamente quais instâncias são atualizadas, mas faz com que o grupo contenha instâncias diferentes.

Depois de criar um novo modelo de instância, altere o modelo de um grupo de instâncias.

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 em que você quer alterar o modelo.
  3. Clique em Editar grupo para modificar o grupo de instâncias gerenciadas.
  4. Em Modelo de instância, selecione o novo modelo de instância que quer usar neste grupo.
  5. Clique em Salvar para aplicar o novo modelo.

gcloud

Para usar o método set-instance-template para atualizar um modelo, passe o novo modelo ao subcomando instance-groups managed set-instance-template:

gcloud compute instance-groups managed set-instance-template instance-group-name \
    --template instance-template \
    --zone zone

API

Crie uma solicitação para o serviço instanceGroupManagers com o nome do grupo de instâncias gerenciado de destino. Inclua o URL do novo modelo de instância no corpo da solicitação:

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

{
 "instanceTemplate": "global/instanceTemplates/instance-template
}

Depois de alterar o modelo de instância, recrie instâncias individuais ou realize uma atualização gradual em todas as instâncias do grupo.

Como redimensionar um grupo de instâncias gerenciadas

Para adicionar ou remover instâncias em um MIG, você pode:

Como fazer o redimensionamento automático de um grupo de instâncias gerenciadas

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 você reduz os custos quando a necessidade de recursos de computação é menor. Para iniciar o escalonamento dos grupos de instâncias gerenciadas, consulte Como escalonar grupos de instâncias automaticamente.

Como definir manualmente o tamanho de um grupo de instâncias gerenciadas

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. Se você aumentar o tamanho, o grupo usará o modelo de instância atual para adicionar novas instâncias. Se você diminuir o tamanho, ele excluirá instâncias do grupo. O grupo exclui instâncias com currentAction de DELETING, CREATING e RECREATING antes de excluir instâncias em execução sem ações agendadas.

Se o grupo fizer parte de um serviço de back-end com diminuição de conexão ativada, pode levar até 60 segundos para que a instância de VM seja removida ou excluída após essa diminuição.

Você pode redimensionar um grupo de instâncias gerenciadas usando o Console do Google Cloud, a ferramenta gcloud compute 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 que você quer redimensionar.
  3. Clique em Editar grupo para modificar o grupo de instâncias gerenciadas.
  4. Em Número de instâncias, especifique o número de instâncias que você quer incluir no grupo. Se o escalonamento automático estiver ativado, o grupo vai adicionar ou remover instâncias automaticamente, conforme necessário. No entanto, é possível alterar os valores de número mínimo de instâncias e número máximo de instâncias para ajustar indiretamente o tamanho do grupo por meio do escalonador automático.
  5. Clique em Salvar para aplicar o novo modelo.

gcloud

Use o subcomando resize.

gcloud compute instance-groups managed resize instance-group-name \
    --size new-size \
    --zone zone

API

Crie uma solicitação para o método resize. Especifique o novo tamanho da instância como um parâmetro.

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/resize?size=new-size

Se o grupo for de instâncias gerenciadas por região, substitua zones/zone por regions/region.

Depois que você fizer uma solicitação para redimensionar um grupo de instâncias gerenciadas, as instâncias vão começar ou parar assim que o sistema puder provisioná-las ou excluí-las. Esse processo pode demorar bastante, dependendo do número de instâncias no grupo. Verifique o status das instâncias no grupo de instâncias gerenciadas.

Como desativar o modo de novas tentativas de criação durante o redimensionamento

Por padrão, se a criação inicial de uma instância de máquina virtual falhar, o grupo de instâncias gerenciadas tentará continuamente criar cada instância até que ela seja criada com êxito. No entanto, se você não quiser novas tentativas de criação automática, poderá desativar o modo de criação fornecendo a sinalização --nocreation-retries ao redimensionar o grupo de instâncias. Nesse modo, o grupo de instâncias gerenciadas tenta criar todas as instâncias apenas uma vez. Se houver um erro durante a criação, o grupo de instâncias gerenciadas não criará essa instância e diminuirá o tamanho de destino do grupo de instâncias gerenciadas.

Esse modo se aplica somente durante a primeira tentativa de criação de uma instância. Se uma instância for criada com êxito enquanto esse modo estiver ativado, ela se comportará da mesma forma que todas as outras criadas com uma solicitação de redimensionamento normal. Em particular, se uma instância em execução for desativada inesperadamente em um momento posterior e precisar ser recriada, esse modo não afetará o comportamento de recriação nesse cenário.

O modo "Desativar repetição de criação" é especialmente útil em cenários em que os sistemas criam grupos de instâncias automaticamente quando não é necessário um número exato de instâncias. Opte por estabilizar rapidamente o tamanho do grupo de instâncias gerenciadas e ser flexível quanto ao número de instâncias do grupo em vez de esperar indefinidamente até que todas as instâncias solicitadas sejam criadas. Isso pode ser adiado de maneira temporária ou permanente devido a erros de cotas ou outras questões não relacionadas.

Para redimensionar um grupo de instâncias gerenciadas no modo de novas tentativas de criação desativada, use a ferramenta gcloud compute ou a API.

gcloud

Use o subcomando resize com a sinalização --no-creation-retries:

gcloud beta compute instance-groups managed resize instance-group-name --size new-size \
    --nocreation-retries \
    --zone zone

API

Crie uma solicitação para o método resizeAdvanced. Especifique o novo tamanho da instância e o campo noCreationRetries no corpo da solicitação.

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

{
 "targetSize": size
 "noCreationRetries": true
}

Se o grupo for de instâncias gerenciadas por região, substitua zones/zone por regions/region.

É possível ver quais instâncias estão sendo criadas e em qual modo usando o método listManagedInstances. As instâncias que estão sendo criadas no modo de nova tentativa de criação desativada terão um currentAction de CREATING_WITHOUT_RETRIES.

Como criar instâncias com nomes específicos em MIGs (Beta)

Se você tiver um sistema que depende de nomes específicos, poderá criar instâncias com esses nomes. Os nomes que você atribuir a essas instâncias gerenciadas continuarão a existir, mesmo se a instância for recriada. Consulte Como adicionar instâncias com nomes específicos.

Como excluir instâncias específicas de um grupo

É possível excluir instâncias individuais 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.

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, desative ou exclua o escalonamento automático antes de tentar excluir as instâncias.

Se o grupo fizer parte de um serviço de back-end com diminuição de conexão ativada, pode levar até 60 segundos para que a instância de VM seja removida ou excluída após essa diminuição.

Para excluir instâncias de um grupo de instâncias gerenciadas use o Console do Google Cloud, a ferramenta gcloud compute 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

Use o subcomando instance-groups managed delete-instances:

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

API

Crie uma solicitação para o método instanceGroupManagers.deleteInstances. No corpo da solicitação, inclua os URLs para uma ou mais instâncias que você quer excluir.

POST https://www.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"
 ]
}

Se o grupo for de instâncias gerenciadas por região, substitua zones/zone por regions/region.

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 das instâncias no grupo de instâncias gerenciadas.

Como abandonar instâncias de um grupo

Separe uma instância 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 com diminuição de conexão ativada, pode levar até 60 segundos para que a instância de VM seja removida ou excluída após essa diminuição.

Para abandonar instâncias de um grupo de instâncias gerenciadas use o Console do Google Cloud, a ferramenta gcloud compute 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 excluí-la, use o subcomando abandon-instances.

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

API

Crie uma solicitação para o método instanceGroupManagers.abandonInstances. No corpo da solicitação, inclua os URLs para uma ou mais instâncias que você quer abandonar.

POST https://www.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"
 ]
}

Se o grupo for de instâncias gerenciadas por região, substitua zones/zone por regions/region.

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 das instâncias no grupo de instâncias gerenciadas.

Como recriar instâncias no grupo

Recriar a instância exclui as instâncias especificadas e cria novas usando o modelo atribuído ao grupo de instâncias gerenciadas.

Por esse método, é possível atualizar instâncias selecionadas para que elas usem o modelo mais recente. Se você precisar recriar todas as instâncias em um grupo de instâncias gerenciadas, inicie uma atualização gradual.

Se o grupo fizer parte de um serviço de back-end com diminuição de conexão ativada, pode levar até 60 segundos para que a instância de VM seja removida ou excluída após essa diminuição.

Recrie as instâncias selecionadas no grupo de instâncias gerenciadas usando a ferramenta gcloud compute 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 \
    --zone zone

API

Crie uma solicitação para o método instanceGroupManagers.recreateInstances. No corpo da solicitação, inclua os URLs para uma ou mais instâncias que você quer recriar.

POST https://www.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"
 ]
}

Se o grupo for de instâncias gerenciadas por região, substitua zones/zone por regions/region.

Depois que você fizer uma solicitação para recriar instâncias em um grupo de instâncias gerenciadas, as novas instâncias 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 das instâncias no grupo de instâncias gerenciadas.

Como excluir um grupo de instâncias gerenciadas

Quando você exclui um grupo de instâncias gerenciadas, todas as instâncias do grupo são excluídas. Se for preciso manter qualquer uma das instâncias no grupo, abandone as instâncias antes de removê-las do grupo. Em seguida, exclua o grupo de instâncias gerenciadas.

Quando você exclui um grupo de instâncias gerenciadas e as instâncias dele usando o Console do Google Cloud ou a ferramenta gcloud compute, todos os escalonadores automáticos anexados são excluídos automaticamente. Entretanto, se estiver usando a API, primeiro é necessário emitir solicitações separadas para excluir qualquer escalonador automático com autoscalers.delete ou regionAutoscalers.delete.

Console

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

    Acessar a página "Grupos de instâncias"

  2. Selecione um ou mais grupos na lista que você quer excluir.
  3. Clique em Excluir para excluir o grupo e todas as instâncias no grupo de instâncias gerenciadas.

gcloud

Use o subcomando instance-groups managed delete.

gcloud compute instance-groups managed delete instance-group-name \
    --zone zone

API

Crie uma solicitação para o método instanceGroupManagers.delete.

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

Se o grupo for de instâncias gerenciadas por região, substitua zones/zone por regions/region.

Como criar grupos de instâncias preemptivas

Use grupos de instâncias gerenciadas para criar rapidamente várias instâncias preemptivas, o que pode reduzir os custos das instâncias nos grupos de instâncias gerenciadas. Por exemplo, crie um grupo de instâncias preemptivas, use-o para executar uma tarefa de processamento em lote e depois exclua-o quando a tarefa estiver concluída.

Para criar um grupo de instâncias preemptivas, defina a opção preemptiva em um modelo de instância e depois use o modelo para criar o grupo de instâncias gerenciadas.

Console

  1. No Console do Cloud, acesse a página Modelos de instância.

    Acessar a página "Modelos de instância"

  2. Clique em Novo modelo de instância.
  3. Preencha as propriedades que você quer para o modelo de instância.
  4. Clique em Mostrar opções avançadas para expandir a seção Políticas de disponibilidade.
  5. Defina a Preempção como Ativada.
  6. Clique em Criar para criar o modelo.
  7. Use esse modelo para criar um grupo de instâncias gerenciadas.

gcloud

Em gcloud compute, crie um modelo de instância usando o comando instance-templates create. Inclui a sinalização --preemptible.

gcloud compute instance-templates create instance-template \
    --preemptible

Depois de criar o modelo de instância, use-o para criar um grupo de instâncias gerenciadas.

API

Use o método instanceTemplates().insert para criar um novo modelo de instância. Inclua a propriedade preemptible em scheduling e defina-a como true.

{
"name": "instance-template",
"properties": {
  "machineType": "zones/zone/machineTypes/machine-type",
  "networkInterfaces": [
    {
      "network": "global/networks/default",
      "accessConfigs":
      [
        {
          "name": "external-IP",
          "type": "ONE_TO_ONE_NAT"
        }
      ]
    }
  ],
  "scheduling":
  {
    "preemptible": true
  },
  "disks":
  [
    {
      "type": "PERSISTENT",
      "boot": true,
      "mode": "READ_WRITE",
      "initializeParams":
      {
        "sourceImage": "projects/debian-cloud/global/images/family/debian-9"
      }
    }
  ]
  }
}

Depois de criar o modelo de instância, use-o para criar um grupo de instâncias gerenciadas.

Noções básicas sobre os campos instanceTemplate e versions

Ao criar um grupo de instâncias gerenciadas, você fornece um modelo de instância que o grupo de instâncias gerenciadas usa para criar instâncias de VM individuais. Por padrão, o Compute Engine descreve o modelo de instância usado em duas propriedades distintas da API: a instanceTemplate de nível superior e a versions. Por exemplo, no seguinte grupo de instâncias gerenciadas, observe que os campos instanceTemplate e versions são preenchidos:

{

 "name": "example-group",
 "zone": "zones/us-central1-a",
 "instanceTemplate": "global/instanceTemplates/example-it",
 "versions": [
  {
   "name": "v3",
   "instanceTemplate": "global/instanceTemplates/example-it",
   "targetSize": {
    "calculated": 3
   }
  }
 ]...
}

O Compute Engine preenche automaticamente o campo instanceTemplate de nível superior e o campo versions para manter a compatibilidade com versões anteriores. É recomendável especificar o campo versions e omitir o campo instanceTemplates de nível superior sempre que possível. Porém, se o código de seu aplicativo definir atualmente o campo instanceTemplate, essa ainda será uma solicitação válida.

Para saber mais sobre o Managed Instance Group Updater, leia Como implementar atualizações em MIGs.

(Avançado) Como implementar modelos de instância canário com um grupo de instâncias gerenciadas

É possível criar um grupo de instâncias gerenciadas em que há dois grupos de VMs que usam modelos de instância diferentes. Por exemplo, é possível criar um grupo de instâncias gerenciadas que tenha 20 instâncias de VM. 10 VMs são executadas em uma imagem operacional específica, enquanto o restante é executado em uma imagem de sistema operacional diferente. Esse recurso permite comprar as duas versões diferentes de modelo de instância antes de decidir qual usar.

Na API, crie uma solicitação POST para o seguinte URL:

POST https://compute.googleapis.com/compute/beta/projects/project-id/zones/zone/instanceGroupManagers

No corpo da solicitação, omita o campo instanceTemplates de nível superior e mantenha a propriedade versions com dois modelos de instância definidos. Em cada objeto versions, você especifica um modelo de instância. Para um dos versions mas não ambos, você também tem que especificar o targetSize. Por exemplo, a solicitação a seguir cria um grupo de instâncias em que 50% das instâncias de VM usam o modelo example-template e o restante das instâncias de VM usam o modelo small-machine-type:

{
  "baseInstanceName": "example-instances",
  "name": "example-group",
  "targetSize": 5,
  "versions":
  [
    {
      "instanceTemplate": "global/instanceTemplates/example-template",
      "targetSize":
      {
        "percent": 50
      }
    },
   {
     "instanceTemplate": "global/instanceTemplates/small-machine-type"
   }
  ]
}

Grupos de instâncias gerenciadas e IAM

Todas as operações realizadas pelo Compute Engine como parte do grupo de instâncias gerenciadas são executadas com a conta de serviço das APIs do Google do projeto. Essa conta de serviço por projeto tem um endereço de e-mail como o seguinte, em que project-id é o ID numérico do projeto correspondente:

project-id@cloudservices.gserviceaccount.com

A conta de serviço das APIs do Google é diferente da conta de serviço padrão do Compute Engine.

Cabe a você garantir que a conta de serviço usada pelo grupo de instâncias gerenciadas tenha privilégios suficientes para criar instâncias de máquina virtual com base no modelo de instância. Em particular, isso significa que a conta de serviço precisa receber os papéis compute.instanceAdmin.v1 e, opcionalmente, serviceAccountUser, para criar e gerenciar instâncias no grupo de instâncias. O papel serviceAccountUser será obrigatório somente se o grupo de instâncias gerenciadas criar instâncias que possam ser executadas como uma conta de serviço. Lembre-se de que essa conta também é usada por outros processos, incluindo o Deployment Manager.

Ao criar um grupo de instâncias gerenciadas ou atualizar um modelo de instância, o Compute Engine confirma que a conta de serviço das APIs do Google:

  • tem o papel serviceAccountUser. Importante se você planeja criar instâncias que podem ser executadas como uma conta de serviço;
  • tem permissões para todos os recursos referenciados nos modelos de instância, como imagens, discos, redes VPC e sub-redes.

Para saber mais sobre contas de serviço, leia a visão geral das contas de serviço.

Como atualizar todas as instâncias em um grupo de instâncias gerenciadas

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

Solução de problemas

Meu grupo de instâncias gerenciadas não consegue criar uma instância. Qual é o problema?

Há vários problemas que podem impedir que o grupo de instâncias crie ou recrie uma instância. Veja a seguir alguns problemas comuns:

  • O grupo de instâncias gerenciadas está tentando criar ou recriar a instância e o disco permanente de inicialização, mas o disco já existe. Por padrão, a criação de novos discos permanentes de inicialização ocorre quando instâncias novas são criadas. Esses discos recebem o nome da instância. Se uma instância tiver o nome my-awesome-instance, o disco também será chamado de my-awesome-instance. Se já existir um disco permanente com esse nome, haverá uma falha na solicitação. Exclua o disco permanente para resolver esse problema.

  • O modelo de instância definiu a opção disks.autoDelete como false para discos permanentes de inicialização, de modo que, quando uma instância for excluída (por causa da recuperação automática, por exemplo), o disco permanente não será excluído. Quando o grupo de instâncias gerenciadas tentou recriar a instância, teve o mesmo problema de já haver um disco permanente com um nome igual ao dela. Exclua o disco permanente para resolver o problema imediato e atualize o modelo de instância para definir disks.autoDelete como true, caso queira que os discos permanentes de inicialização sejam excluídos com a instância.

  • O modelo de instância pode ser inválido. Se você atualizou o modelo de instância recentemente, pode haver uma propriedade inválida que faz com que o grupo de instâncias gerenciadas não consiga criar a instância. Alguns exemplos de propriedades inválidas:

    • Você especificou um recurso que não existe, como uma imagem de origem.
    • Você escreveu um nome de recurso incorretamente.
    • Você tentou anexar discos permanentes que não são de inicialização no modo de leitura e gravação. Como os grupos de instâncias contêm várias instâncias, os discos adicionais que você quer compartilhar entre todas as instâncias do grupo só podem ser anexados no modo somente leitura.

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Compute Engine