Aplicar novas configurações de VM em um MIG


Nesta página, explicamos como configurar as instâncias de máquina virtual (VM) em um grupo de instâncias gerenciadas (MIG) e os métodos que podem ser usados para aplicar a configuração às VMs no grupo.

Especifique a configuração pretendida para as VMs em um MIG usando os seguintes componentes de configuração de VM:

  • Obrigatório: modelo de instância
  • Opcional: configuração de todas as instâncias
  • Opcional: configuração com estado

Sempre que você atualiza a configuração pretendida usando esses componentes, o Compute Engine aplica automaticamente sua configuração atualizada a novas VMs adicionadas ao grupo.

Para aplicar uma configuração atualizada às VMs atuais, use os métodos descritos nesta página:

  • Lançamentos automáticos com um orçamento de interrupção e atualizações canário opcionais de novos modelos
  • Atualizações manuais seletivas para VMs específicas para minimizar as interrupções
  • Recriação de VMs específicas

Também é possível configurar seu MIG para aplicar a configuração mais recente disponível às VMs durante os reparos da VM. Para mais informações, consulte Aplicar atualizações de configuração durante reparos.

Se você só precisar redimensionar um MIG, consulte a documentação sobre como adicionar ou remover VMs em um MIG. Se você quiser saber mais sobre como configurar recursos do MIG, consulte os documentos de escalonamento automático, recuperação automática e balanceamento de carga e cargas de trabalho com estado.

Antes de começar

  • Configure a autenticação, caso ainda não tenha feito isso. A autenticação é o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud. Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no Compute Engine da seguinte maneira.

    Selecione a guia para como planeja usar as amostras nesta página:

    Console

    Quando você usa o console do Google Cloud para acessar os serviços e as APIs do Google Cloud, não é necessário configurar a autenticação.

    gcloud

    1. Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init
    2. Defina uma região e uma zona padrão.

    REST

    Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI gcloud.

      Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init

Componentes de configuração para VMs em um MIG

Configure as VMs em um MIG usando os seguintes componentes:

ComponentePropriedadesCaso de uso
Modelo de instância Tipo de máquina, imagem do disco de inicialização, rótulos, script de inicialização e outras propriedades da VM Obrigatório: use um modelo de instância para definir propriedades de instância obrigatórias e opcionais para todas as VMs no grupo.

Opcional: para testar uma segunda configuração de VM canário, adicione um segundo modelo de instância ao grupo e aplique-o a um subconjunto de VMs em o grupo.
Configuração de todas as instâncias Rótulos e metadados Opcional: use uma configuração em todas as instâncias para substituir rapidamente as propriedades de modelo de instância em todas as VMs do grupo.
Configuração com estado Stateful disks, IP addresses, and metadata Opcional: se você precisar oferecer suporte a uma carga de trabalho com estado, adicione a configuração com estado às VMs no grupo.

Se você atualizar qualquer configuração do grupo usando esses componentes, será preciso aplicar a configuração atualizada às VMs atuais no grupo para tornar a configuração atualizada eficaz.

Métodos para aplicar uma nova configuração às VMs atuais

Depois de atualizar a configuração de VM de um MIG, é possível aplicar a nova configuraça a VMs atuais no grupo usando os seguintes métodos:

  • Automático (proativo): use esse método se quiser que o MIG aplique automaticamente novas configurações a todas ou a um subconjunto de VMs atuais no grupo. O nível de interrupção na execução de instâncias depende da política de atualização configurada. Use esse método para atualizar canário novos modelos de instância. Para usar esse método, defina o tipo de atualização fo MIG como "proativo".
  • Seletivo (oportunista): use essr método se quiser aplicar a atualização manualmente ou se quiser atualizar todas as VMs do grupo de uma só vez. Você quer segmentar uma ou todas as VMs a serem atualizadas para a configuração mais recente. Para usar esse método, defina o tipo de atualização do MIG como "oportunista".
  • Recriação de VMs: para aplicar novas configurações, recrie VMs específicas.

Para mais informações sobre como configurar o tipo de atualização de um MIG, consulte Configurar uma atualização proativa ou oportunista.

Automático (proativo)

Um tipo de atualização automática também é conhecido como tipo de atualização proativa. Quando você define o tipo de atualização do MIG como proativo, ele aplica automaticamente as configurações atualizadas às VMs, conforme necessário.

Definir o tipo de atualização do MIG como oferece duas vantagens principais:

  • O lançamento de uma atualização acontece automaticamente de acordo com suas especificações, sem a necessidade de contribuição adicional após a solicitação inicial. Você pode especificar a velocidade da implantação, o nível de interrupção do serviço e o escopo da atualização.
  • É possível fazer lançamentos parciais que permitem teste canário.

Para saber como definir o tipo de atualização do MIG, consulte Configurar uma atualização proativa ou oportunista.

Para mais informações sobre lançamentos automáticos, consulte Aplicar automaticamente as atualizações de configuração de VM em um MIG.

Seletiva (oportunista)

Um tipo de atualização seletiva também é conhecido como um tipo de atualização oportunista. Quando você define o tipo de atualização do MIG como oportunista, ele aplica novas configurações a VMs atuais somente quando você seleciona seletivamente VMs a serem atualizadas.

Definir o tipo de atualização do MIG como oportunista oferece as seguintes vantagens:

  • É possível selecionar as instâncias que você quer atualizar.
  • É possível controlar o tempo e a sequência das atualizações.
  • É possível usar a CLI gcloud ou a REST para atualizar todas as instâncias imediatamente.

Em determinados cenários, um tipo de atualização seletiva é útil porque você não quer instabilidade no sistema, se puder ser evitado. Por exemplo, considere o seguinte:

  • Uma das VMs no seu MIG fica inativa e precisa ser reparada, mas você não quer que a configuração dela seja alterada. Se você definir o tipo de atualização do MIG como oportunista e não aplicar à força atualizações durante os reparos, o Compute Engine reparará a VM usando a mesma configuração que foi usada para criar essa VM, mesmo que o modelo de instância original não exista mais.

  • Você tem um MIG com escalonamento automático e quer aplicar uma atualização que não é crítica sem urgência. Para garantir que o Compute Engine não desmonte suas VMs para aplicar a atualização, defina o tipo de atualização do MIG como oportunista. Ao escalonar verticalmente, o escalonador automático encerra preferencialmente as VMs com a configuração antiga. Quando o grupo é escalonado verticalmente, ele cria VMs com a configuração mais recente.

Para saber como definir o tipo de atualização do MIG, consulte Configurar uma atualização proativa ou oportunista.

Para mais informações sobre como atualizar VMs seletivamente, consulte Aplicar atualizações de configuração seletivamente em um MIG.

Recriação de VMs

É possível recriar qualquer VM em um MIG. Ao fazer isso, o MIG aplica qualquer configuração atualizada que ainda não tenha sido aplicada a essa VM. Para mais informações, consulte Como recriar VMs em um MIG.

Configurar uma atualização proativa ou oportunista

Para aplicar novas configurações às VMs atuais, defina o tipo de atualização do MIG como "proativo". Para aplicar novas configurações às VMs atuais somente quando você selecionar uma VM a ser atualizada, defina o tipo de atualização do MIG como "oportunista".

Use o console do Google Cloud, a Google Cloud CLI ou a REST.

Console

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

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

  2. Selecione o MIG que você quer atualizar.

  3. Na parte superior da página, clique em Atualizar VMs.

  4. Para definir um modelo diferente para o grupo, em Novo modelo, selecione o modelo de instância que você quer usar.

  5. Em Atualizar configuração, escolha a atualização automática ou seletiva.

gcloud

Use o comando rolling-action start-update e defina a sinalização --type como opportunistic ou proactive.

gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \
    --version=template=NEW_TEMPLATE \
    --type=TYPE

Também é possível usar o comando Beta update e incluir a sinalização --update-policy-type.

gcloud beta compute instance-groups managed update INSTANCE_GROUP_NAME \
    --update-policy-type=TYPE

Substitua:

  • INSTANCE_GROUP_NAME: o nome do grupo;
  • NEW_TEMPLATE: o nome do novo modelo do grupo
  • TYPE: o tipo de atualização, opportunistic ou proactive

REST

Chame o método patch em um recurso MIG zonal ou regional.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

{
  "updatePolicy": {
    "type": "TYPE" # Choose an opportunistic or proactive update
  },
  "versions": [{
    "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE",
    }]
}

Substitua:

  • PROJECT_ID: o projeto em que o MIG existe.
  • REGION: a região em que o MIG está localizado. Para um MIG zonal, substitua regions/REGION por zones/ZONE.
  • INSTANCE_GROUP_NAME: o nome do grupo;
  • NEW_TEMPLATE: o nome do novo modelo do grupo.
  • TYPE: o tipo de atualização, OPPORTUNISTIC ou PROACTIVE

Para saber mais sobre como configurar um novo modelo e aplicá-lo a instâncias novas e atuais em um MIG, consulte as seguintes páginas:

Verificar o tipo de política de atualização do seu grupo

É possível ver o tipo de política de atualização configurado atualmente do MIG ("oportunista" ou "proativo") e outras configurações de política de atualização usando a CLI gcloud ou REST.

gcloud

Use o comando describe e inclua a sinalização --format para listar apenas as configurações de updatePolicy.

gcloud beta compute instance-groups managed describe INSTANCE_GROUP_NAME \
    --format="(updatePolicy)"

REST

Faça uma solicitação GET em um MIG zonal ou regional e verifique o campo updatePolicy.

GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

Para alterar o tipo de política, consulte Configurar uma atualização proativa ou oportunista.

Atualizações para VMs suspensas e interrompidas

Se você tiver suspenso e interrompido pools de VMs em um MIG, será possível atualizar seletivamente (oportunistas) VMs suspensas ou interrompidas da mesma forma que atualiza outras VMs em execução. Se você configurar as atualizações automáticas (proativas), o MIG vai atualizar as VMs na seguinte ordem:

  1. VMs em execução, suspensas e interrompidas
  2. VMs com status SUSPENDING ou STOPPING

Para uma atualização automática, o MIG calcula o máximo de sobretensão e o máximo indisponível com base no número de destino apenas de VMs em execução. não considere as VMs no pool em espera.

Se a atualização automática exigir a substituição das VMs no grupo, o MIG fará o seguinte:

  1. Exclui as VMs suspensas e interrompidas.
  2. Cria novas VMs com o novo modelo de instância.
  3. Executa o processo de inicialização.
  4. Suspende ou interrompe as VMs.

Se a atualização automática exigir apenas a atualização ou a reinicialização das VMs no grupo, o MIG fará o seguinte:

  1. Retoma ou inicia as VMs.
  2. Executa a atualização nas VMs quando elas estão em execução.
  3. Executa o processo de inicialização.
  4. Suspende ou interrompe as VMs.

Atualizações Canário

Se você quiser iniciar atualizações canário em um MIG que tenha suspenso ou interrompido VMs, o seguinte se aplicará:

  • No modo de política de espera manual, o MIG atualiza apenas as VMs em execução com base no número ou na porcentagem de VMs em que você quer aplicar a atualização. As VMs suspensas e interrompidas permanecem nas versões anteriores.
  • No modo de política de espera scale-out-pool, não é possível iniciar uma atualização canário no MIG.

Relação entre campos versions e instanceTemplate

Se você usar REST, recomendamos utilizar os campos instanceGroupManagers.versions e regionInstanceGroupManagers.versions para configurar modelos de instância para MIGs zonais e regionais.

O campo legado instanceTemplate se sobrepõe à funcionalidade com o campo versions porque ambos os campos permitem que você especifique qual modelo de instância o MIG usa para criar instâncias. No entanto, somente o campo versions permite especificar uma configuração avançada de dois modelos (canário).

Para compatibilidade com versões anteriores, os MIGs ainda são compatíveis com a configuração do campo instanceTemplate de nível superior, embora seja recomendável passar a usar apenas o campo versions. O uso do campo instanceTemplate de nível superior e do campo versions ao mesmo tempo pode gerar ambiguidade e confusão.

Se você especificar o campo instanceTemplate e o campo versions ao chamar o método update() ou patch(), há três resultados possíveis:

  • Você define ambos os campos com o mesmo valor.

    Essa é uma solicitação válida. Nesse caso, ele não gera ambiguidade e o novo modelo de instância é aplicado ao MIG.

    Por exemplo, na solicitação a seguir, os campos de nível superior instanceTemplate e versions especificam o mesmo modelo de instância que é diferente do modelo atual. Portanto, o MIG é atualizado para o novo modelo de instância:

    {
     "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE",
     "versions": [
      {
       "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE"
      }
     ],
     "updatePolicy": {
       "type": "PROACTIVE"
     }
    }
    
  • Você define ambos os campos com valores que não correspondem, mas apenas um valor é diferente do modelo de instância atual no MIG.

    Essa é uma solicitação válida. O campo que é diferente da configuração atual é usado como o valor pretendido. Por exemplo, você chama o método update() e fornece os dois campos, mas apenas um campo é atualizado:

    {
     "instanceTemplate": "global/instanceTemplates/CURRENT_TEMPLATE",
     "versions": [
      {
       "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE"
      }
     ],
     "updatePolicy": {
       "type": "PROACTIVE"
     }
    }
    
  • Você define ambos os campos com valores que não correspondem, e os dois valores são diferentes do modelo de instância atual no MIG.

    Esta configuração é inválida e retorna um erro, porque não há uma intent clara.

    {
     "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE",
     "versions": [
      {
       "instanceTemplate": "global/instanceTemplates/A_DIFFERENT_NEW_TEMPLATE"
      }
     ],
     "updatePolicy": {
       "type": "PROACTIVE"
     }
    }
    

Os campos versions e instanceTemplate e o método get()

Se você especificar somente um modelo de instância, seja por meio do campo instanceTemplate de nível superior, do campo versions ou de ambos, o método get() retornará os dois campos na resposta. Isso torna o novo campo versions compatível com versões anteriores. Desde que você especifique um modelo de instância único em um desses campos, não haverá alteração no que o método get() retorna no campo instanceTemplate.

Se forem especificados dois modelos de instância no campo versions, o método get() retornará um campo instanceTemplate de nível superior vazio. Não há como expressar sem ambiguidade uma configuração de modelo canário de duas instâncias no campo instanceTemplate de nível superior. Portanto, o campo não é usado durante uma atualização canário.

O campo versions e o método setInstanceTemplate()

Para compatibilidade com versões anteriores, o método setInstanceTemplate() se comporta como anteriormente, permitindo alterar o modelo usado pelo MIG para criar instâncias. Quando você chama este método, o campo versions é substituído pelo modelo de instância especificado pelo método setInstanceTemplate().

O método setInstanceTemplate() também define a updatePolicy como OPPORTUNISTIC. Isso impede que o MIG implante ativamente um modelo de instância que não esteja explicitamente especificado no campo versions.

A seguir