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 selecionando uma das seguintes opções:
Select the tab for how you plan to use the samples on this page:
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
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
Configure as VMs em um MIG usando os 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 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.
Seletivo (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.
Permissões exigidas para a tarefa
Para executar esta tarefa, é necessário ter as seguintes permissões:
- Para MIGs zonais, todas as permissões necessárias para chamar o método
instanceGroupManagers.patch
- Para MIGs regionais, todas as permissões necessárias para chamar o método
regionInstanceGroupManagers.patch
No Console do Google Cloud, acesse a página Grupos de instâncias.
Selecione o MIG que você quer atualizar.
Na parte superior da página, clique em Atualizar VMs.
Para definir um modelo diferente para o grupo, em Novo modelo, selecione o modelo de instância que você quer usar.
Em Atualizar configuração, escolha a atualização automática ou seletiva.
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-updateINSTANCE_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 updateINSTANCE_GROUP_NAME \ --update-policy-type=TYPE
Substitua:
INSTANCE_GROUP_NAME
: o nome do grupo;NEW_TEMPLATE
: o nome do novo modelo do grupoTYPE
: o tipo de atualização,opportunistic
ouproactive
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, substituaregions/REGION
porzones/ZONE
.INSTANCE_GROUP_NAME
: o nome do grupo;NEW_TEMPLATE
: o nome do novo modelo do grupo.TYPE
: o tipo de atualização,OPPORTUNISTIC
ouPROACTIVE
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:
- Aplicar automaticamente as atualizações de configuração de VM em um MIG
- Aplicar seletivamente as atualizações de configuração da VM em um MIG
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.
Use o
comando describe
e inclua a sinalização --format
para listar apenas as configurações de updatePolicy
.
gcloud beta compute instance-groups managed describeINSTANCE_GROUP_NAME \ --format="(updatePolicy)"
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:
- VMs em execução, suspensas e interrompidas
- VMs com status
SUSPENDING
ouSTOPPING
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:
- Exclui as VMs suspensas e interrompidas.
- Cria novas VMs com o novo modelo de instância.
- Executa o processo de inicialização.
- 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:
- Retoma ou inicia as VMs.
- Executa a atualização nas VMs quando elas estão em execução.
- Executa o processo de inicialização.
- 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
eversions
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
- Saiba mais sobre como implantar automaticamente um novo modelo de instância em um MIG.
- Saiba mais sobre como atualizar seletivamente instâncias em um MIG.
- Veja informações sobre o MIG e as VMs dele.