Aplicar novas configurações de VM em um MIG


Esta página explica como você pode configurar as instâncias de máquina virtual (VM) em um grupo de instâncias gerenciadas (MIG) e os métodos que você pode usar para aplicar a configuração às VMs existentes no grupo.

Você especifica 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ê atualizar a configuração pretendida usando esses componentes, o Compute Engine aplicará automaticamente a configuração atualizada às novas VMs adicionadas ao grupo.

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

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

Você também pode configurar seu MIG para aplicar a configuração mais recente disponível às VMs durante os reparos de VMs. Para obter mais informações, consulte Aplicar atualizações de configuração durante reparos .

Se você precisar apenas 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 MIG, consulte a documentação sobre escalonamento automático , recuperação automática , balanceamento de carga e cargas de trabalho com estado .

Antes de começar

  • Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar 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 Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.
    3. REST

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

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

Componentes de configuração para VMs em um MIG

Você configura as VMs em um MIG por meio dos seguintes componentes:

Componente Propriedades Caso 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 do grupo.

Opcional: se desejar testar canário uma segunda configuração de VM, você poderá adicionar um segundo modelo de instância ao grupo e aplicá-lo a um subconjunto de VMs no grupo.
Configuração de todas as instâncias Rótulos e metadados Opcional: Use uma configuração de todas as instâncias para substituir rapidamente as propriedades do modelo de instância para todas as VMs do grupo.
Configuração com estado Discos com estado, endereços IP e metadados Opcional: se você precisar oferecer suporte a uma carga de trabalho com estado , adicione configuração com estado às VMs do grupo.

Se você atualizar qualquer configuração do grupo por meio desses componentes, deverá aplicar a configuração atualizada às VMs existentes no grupo para tornar a configuração atualizada efetiva.

Métodos para aplicar uma nova configuração a VMs existentes

Depois de atualizar a configuração de VM de um MIG, você poderá aplicar a nova configuração às VMs existentes no grupo usando os seguintes métodos:

  • Automático (proativo) : use este método se desejar que o MIG aplique automaticamente novas configurações a todas ou a um subconjunto de VMs existentes no grupo. O nível de interrupção nas VMs em execução depende da política de atualização que você configura. Você pode usar este método para atualizar novos modelos de instância. Para usar este método, defina o tipo de atualização do MIG como “proativo”.
  • Seletivo (oportunista) : use este método se quiser aplicar a atualização manualmente ou se quiser atualizar todas as VMs existentes no grupo de uma só vez. Você direciona uma ou todas as VMs para serem atualizadas para a configuração mais recente. Para usar este método, defina o tipo de atualização do MIG como “oportunista”.
  • Recriação de VMs : aplique novas configurações recriando VMs específicas.

Para obter 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, o MIG aplica automaticamente configurações atualizadas às VMs conforme necessário.

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

  • A implementação de uma atualização ocorre automaticamente de acordo com suas especificações, sem a necessidade de informações adicionais após a solicitação inicial. Você pode especificar a velocidade de implantação, o nível de interrupção do seu serviço e o escopo da atualização.
  • Você pode automatizar implementações parciais, o que permite testes canário.

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

Para obter mais informações sobre implementações automáticas, consulte Aplicar automaticamente atualizações de configuração de VM em um MIG .

Seletivo (oportunista)

Um tipo de atualização seletiva também é conhecido como tipo de atualização oportunista . Quando você define o tipo de atualização do MIG como oportunista, o MIG aplica novas configurações às VMs existentes somente quando você direciona seletivamente VMs específicas a serem atualizadas.

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

  • Você pode selecionar as VMs que deseja atualizar.
  • Você pode controlar o tempo e a sequência das atualizações.
  • Você pode usar a CLI gcloud ou REST para atualizar todas as instâncias imediatamente.

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

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

  • Você tem um MIG com escalonamento automático e deseja aplicar uma atualização não crítica sem qualquer urgência. Para garantir que o Compute Engine não destrua as VMs existentes para aplicar a atualização, defina o tipo de atualização do MIG como oportunista. Ao aumentar, o escalonador automático encerra preferencialmente as VMs com a configuração antiga. Quando o grupo aumenta, 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 obter mais informações sobre a atualização seletiva de VMs, consulte Aplicar seletivamente atualizações de configuração de VM em um MIG .

Recriação de VMs

Você pode 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 obter mais informações, consulte Recriando VMs em um MIG .

Configure uma atualização proativa ou oportunista

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

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

Console

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

    Vá para a página Grupos de instâncias

  2. Selecione o MIG que você deseja 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 deseja usar.

  5. Em Configuração de atualização , escolha atualização automática ou seletiva.

gcloud

Use o comando rolling-action start-update e defina o sinalizador --type como opportunistic ou proactive .

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

Você também pode usar o comando beta update e incluir o sinalizador --update-policy-type .

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

Substitua o seguinte:

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

DESCANSAR

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 o seguinte:

  • PROJECT_ID : o projeto no qual o MIG existe.
  • REGION : a região onde seu 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 template do grupo.
  • TYPE : o tipo de atualização, OPPORTUNISTIC ou PROACTIVE .

Para saber mais sobre como configurar um novo modelo e depois aplicá-lo a VMs novas e existentes em um MIG, consulte as páginas a seguir:

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

Você pode visualizar o tipo de política de atualização atualmente configurado do seu 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 o sinalizador --format para listar apenas as configurações updatePolicy .

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

DESCANSAR

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ê suspendeu e interrompeu pools de VMs em um MIG, poderá atualizar seletivamente (oportunistamente) as VMs suspensas ou interrompidas, assim como atualiza outras VMs em execução. Se você configurar atualizações automáticas (proativas), o MIG 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 pico máximo e o máximo indisponível com base apenas no número alvo de VMs em execução e não considera as VMs no pool de espera.

Se a atualização automática exigir a substituição de 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 reinicialização das VMs do 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 suspendeu ou interrompeu VMs, aplica-se o seguinte:

  • No modo de política de espera manual , o MIG atualiza apenas as VMs em execução com base no número ou porcentagem de VMs às quais você deseja aplicar a atualização. As VMs suspensas e paradas 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.

Relacionamento entre versions e campos instanceTemplate

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

O campo instanceTemplate herdado se sobrepõe em funcionalidade ao campo versions porque ambos os campos permitem especificar qual modelo de instância o MIG usa para criar VMs. No entanto, apenas o campo versions permite especificar uma configuração avançada de dois modelos (canário).

Para compatibilidade com versões anteriores, os MIGs continuam a oferecer suporte à configuração do campo instanceTemplate de nível superior, embora recomendamos que você passe a usar apenas o campo versions . Usar o campo instanceTemplate de nível superior e o campo versions ao mesmo tempo pode causar ambiguidade e confusão.

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

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

    Este é um pedido válido. Neste caso, não cria ambiguidade e o novo modelo de instância é aplicado ao MIG.

    Por exemplo, na solicitação a seguir, o instanceTemplate de nível superior e o campo versions especificam o mesmo modelo de instância que é diferente do modelo atual existente, de modo que 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 difere do modelo de instância atual no MIG.

    Este é um pedido válido. O campo diferente da configuração atual é considerado o valor pretendido. Por exemplo, você chama o método update() e fornece ambos os 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 ambos os valores diferem do modelo de instância atual no MIG.

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

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

O campo versions , o campo instanceTemplate e o método get()

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

Se o campo versions tiver dois modelos de instância especificados, o método get() retornará um campo instanceTemplate de nível superior vazio. Não há como expressar inequivocamente 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 antes, permitindo alterar o modelo que o MIG usa para criar VMs. Ao chamar esse método, o campo versions é substituído pelo modelo de instância especificado pelo método setInstanceTemplate() .

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

O que vem a seguir