Este documento descreve como aplicar automaticamente atualizações de configuração às instâncias de máquina virtual (VM) em um grupo de instâncias gerenciadas (MIG) .
O Compute Engine mantém as VMs em um MIG com base nos componentes de configuração que você usa: modelo de instância, configuração opcional de todas as instâncias e configuração opcional com estado.
Sempre que você atualiza a configuração da VM de um MIG alterando esses componentes, o Compute Engine aplica automaticamente a configuração atualizada às novas VMs adicionadas ao grupo.
Para aplicar uma configuração atualizada às VMs existentes, você pode configurar uma atualização automática, também conhecida como tipo de atualização proativa . O MIG distribui automaticamente atualizações de configuração para todas ou para um subconjunto das VMs do grupo. Você pode controlar a velocidade de implantação, o nível de interrupção do serviço e, usando uma atualização canário, o número de instâncias que o MIG atualiza com a nova configuração. Depois de especificar a nova configuração, não será necessário fornecer informações adicionais e a atualização será concluída sozinha.
Como alternativa, se você quiser aplicar seletivamente uma nova configuração apenas a instâncias novas ou específicas em um MIG, consulte Aplicar seletivamente atualizações de configuração de VM em um MIG . Para ajudá-lo a decidir, consulte Métodos para aplicar uma nova configuração a VMs existentes .
Antes de começar
- Se você estiver atualizando um MIG com estado, revise Aplicar, visualizar e remover configurações com estado em MIGs .
- 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
-
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.
- Set a default region and zone.
- Se você tiver um MIG com estado e quiser usar atualizações contínuas automatizadas, deverá manter os nomes das instâncias ao substituir as instâncias ou, de forma equivalente, definir o método de substituição como
RECREATE
. As atualizações são baseadas em intenções. Quando você faz a solicitação de atualização inicial, a API Compute Engine retorna uma resposta bem-sucedida para confirmar que a solicitação é válida, mas isso não indica que a atualização foi bem-sucedida. Você deve verificar o status do grupo para determinar se a atualização foi implantada com êxito.
A API Instance Group Updater é uma API declarativa. A API espera uma solicitação para especificar a configuração pós-atualização desejada do MIG, em vez de uma chamada de função explícita.
As atualizações automatizadas suportam até duas versões de modelo de instância no seu MIG. Isso significa que você pode especificar duas versões diferentes do modelo de instância para o seu grupo, o que é útil para realizar atualizações canário .
No console do Google Cloud, acesse a página Grupos de instâncias .
Selecione o MIG que você deseja atualizar.
Clique em Atualizar VMs .
Em Novo modelo , clique na lista suspensa e selecione o novo modelo para atualizar. O tamanho alvo é automaticamente definido como 100% , indicando que todas as suas instâncias serão atualizadas.
Em Configuração de atualização , expanda o menu de seleção e selecione Automático como Tipo de atualização . Deixe os valores padrão para as outras opções.
Clique em Atualizar VMs para iniciar a atualização.
-
INSTANCE_GROUP_NAME
: o nome do MIG -
INSTANCE_TEMPLATE_NAME
: o novo modelo de instância -
ZONE
: para MIGs zonais, forneça a zona -
REGION
: para MIGs regionais, forneça a região - Atualizações automáticas ou proativas
- Atualizações seletivas ou oportunistas
- O status da instância é
RUNNING
. - Se a verificação de integridade estiver habilitada, quando a verificação de integridade retornar
HEALTHY
. - Aguarda até o período especificado pelo valor
autohealingPolicies.initialDelaySec
do MIG para que a verificação de integridade retorne comoHEALTHY
. - Em seguida, aguarda o período de tempo especificado por
minReadySec
. SUBSTITUTE
(padrão). Substitui instâncias de VM mais rapidamente durante as atualizações porque novas VMs são criadas antes que as antigas sejam desligadas. No entanto, os nomes das instâncias não são preservados porque ainda estão em uso pelas instâncias antigas.RECREATE
. Preserva nomes de instâncias por meio de uma atualização. O Compute Engine libera o nome da instância quando a VM antiga é encerrada. Em seguida, o Compute Engine cria uma nova instância usando o mesmo nome. Para usar este modo, você deve definirmaxSurge
como0
.- No console do Google Cloud, acesse a página Grupos de instâncias .
- Selecione o grupo gerenciado de instâncias que você deseja atualizar.
- Clique em Atualizar VMs .
- Clique em Adicionar um segundo modelo e escolha o novo modelo de instância para canário.
- Em Target size , insira a porcentagem ou o número fixo de instâncias que você deseja usar para canary o novo modelo de instância.
- Se desejar, você pode configurar outras opções de atualização.
- Clique em Atualizar VMs para iniciar a atualização.
-
INSTANCE_GROUP_NAME
: o nome do grupo de instâncias. -
CURRENT_INSTANCE_TEMPLATE_NAME
: o modelo de instância que o grupo de instâncias está executando atualmente. -
NEW_TEMPLATE
: o novo modelo que você deseja canário. -
SIZE
: o número ou porcentagem de instâncias às quais você deseja aplicar esta atualização. Você deve aplicar a propriedadetarget-size
ao modelo--canary-version
. Você só poderá definir uma porcentagem se o grupo contiver 10 ou mais instâncias. -
ZONE
: para MIGs zonais, forneça a zona . -
REGION
: para MIGs regionais, forneça a região. -
NEW_TEMPLATE
: o nome do novo modelo que você deseja canário. -
NUMBER|PERCENTAGE
: o número fixo ou porcentagem de instâncias para canary esta atualização. Você só poderá definir uma porcentagem se o grupo contiver 10 ou mais instâncias. Caso contrário, forneça um número fixo. -
CURRENT_INSTANCE_TEMPLATE_NAME
: o nome do modelo de instância atual que o grupo está executando. - No console do Google Cloud, acesse a página Grupos de instâncias .
- Selecione o grupo gerenciado de instâncias que você deseja atualizar.
- Clique em Atualizar VMs .
- Em New template , atualize o tamanho alvo do modelo canário para 100% para repassar o modelo para todas as suas instâncias. Como alternativa, você pode substituir o modelo primário pelo modelo canário e remover o segundo campo do modelo.
- Clique em Atualizar VMs para iniciar a atualização.
- Para verificar se todas as VMs atingiram a versão do modelo de destino, visualize o status do grupo .
- Para verificar se VMs específicas atingiram a versão do modelo de destino, visualize as ações atuais nas instâncias .
- Para MIGs com estado, consulte também Verificando se as configurações por instância foram aplicadas .
- No console do Google Cloud, acesse a página Grupos de instâncias .
- Selecione o grupo de instâncias gerenciadas que você deseja monitorar. A página de visão geral do grupo mostra o modelo que cada instância está usando.
- Para visualizar os detalhes, clique na guia Detalhes .
- Em Modelo de instância , você pode ver o número atual e de destino de instâncias para cada modelo de instância, bem como os parâmetros de atualização.
status.versionTarget.isReached
definido comotrue
indica que todas as instâncias de VM foram ou estão sendo criadas usando a versão de destino.status.versionTarget.isReached
definido comofalse
indica que pelo menos uma VM ainda não está usando a versão de destino. Ou, no caso de uma atualização canário,false
indica que o número de VMs que usam uma versão de destino não corresponde ao tamanho do destino.- Nenhuma das instâncias do MIG está passando por qualquer tipo de alteração e a
currentAction
para todas as instâncias éNONE
. - Não há alterações pendentes para instâncias do MIG.
- O MIG em si não está sendo modificado.
- Você faz uma solicitação para implementar um novo modelo de instância.
- Você faz uma solicitação para criar, excluir, redimensionar ou atualizar instâncias no MIG.
- Um escalonador automático solicita o redimensionamento do MIG.
- Um recurso de recuperação automática está substituindo uma ou mais instâncias não íntegras no MIG.
- Num MIG regional, algumas das instâncias estão sendo redistribuídas .
-
ABANDONING
. A instância está sendo removida do MIG. -
CREATING
. A instância está em processo de criação. -
CREATING_WITHOUT_RETRIES
. A instância está sendo criada sem novas tentativas; se a instância não for criada na primeira tentativa, o MIG não tentará substituí-la novamente. -
DELETING
. A instância está em processo de exclusão. -
RECREATING
. A instância está sendo substituída. -
REFRESHING
. A instância está sendo removida de seus pools de destino atuais e sendo readicionada à lista de pools de destino atuais (essa lista pode ser igual ou diferente dos pools de destino existentes). -
RESTARTING
. A instância está sendo reiniciada usando os métodosstop
estart
. -
RESUMING
. A instância está em processo de retomada após ser suspensa. -
STARTING
. A instância está em processo de inicialização após ser interrompida. -
STOPPING
. A instância está sendo interrompida. -
SUSPENDING
. A instância está sendo suspensa. -
VERIFYING
. A instância foi criada e está em processo de verificação. -
NONE
. Nenhuma ação está sendo executada na instância. Faça uma solicitação para determinar quantas instâncias foram atualizadas:
gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \ [--zone=ZONE | --region=REGION]
A CLI gcloud retorna uma resposta que inclui uma lista de instâncias no grupo e seus status atuais:
NAME ZONE STATUS HEALTH_STATE ACTION INSTANCE_TEMPLATE VERSION_NAME LAST_ERROR vm-instances-9pk4 us-central1-f RUNNING HEALTHY NONE example-new-template vm-instances-j1h8 us-central1-f RUNNING HEALTHY NONE example-old-template vm-instances-ngod us-central1-f STAGING UNKNOWN CREATING example-new-template
Neste exemplo, duas instâncias já foram atualizadas.
Em seguida, faça uma solicitação para realizar uma nova atualização, mas passe o número de instâncias que já foram atualizadas como tamanho alvo:
gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \ --version template=OLD_INSTANCE_TEMPLATE_NAME \ --canary-version template=NEW_INSTANCE_TEMPLATE_NAME,target-size=2 \ [--zone=ZONE | --region=REGION]
Para o Atualizador, esta atualização parece concluída, portanto nenhuma outra instância é atualizada, interrompendo efetivamente a atualização.
- Inicie uma atualização canário em vez de uma atualização completa.
- Defina um valor
minReadySec
grande. Definir esse valor faz com que o atualizador aguarde esse número de segundos antes de considerar a instância atualizada com êxito e prosseguir para a próxima instância. - Habilite a verificação de integridade para fazer com que o atualizador aguarde o início do seu aplicativo e relate um sinal íntegro antes de considerar a instância atualizada com êxito e prosseguir para a próxima instância.
- Defina valores baixos
maxUnavailable
emaxSurge
. Isso garante que apenas um número mínimo de instâncias seja atualizado por vez. - Atualize seletivamente as instâncias em um MIG em vez de usar uma atualização automatizada.
Ação mínima : Use esta opção para minimizar ao máximo a interrupção ou para aplicar uma ação mais perturbadora do que o necessário.
- Para limitar ao máximo a interrupção, defina a ação mínima como
REFRESH
. Se a atualização exigir uma ação mais disruptiva, o Compute Engine executará a ação necessária para executar a atualização. - Para aplicar uma ação mais perturbadora do que o estritamente necessário, defina a ação mínima como
RESTART
ouREPLACE
. Por exemplo, o Compute Engine não precisa reiniciar uma VM para alterar seus metadados. Mas se seu aplicativo ler metadados de instância somente quando uma VM for reiniciada, você poderá definir a ação mínima comoRESTART
para captar alterações de metadados.
- Para limitar ao máximo a interrupção, defina a ação mínima como
Ação permitida mais perturbadora : use esta opção para evitar uma atualização se ela exigir mais interrupções do que você pode pagar. Se a sua atualização exigir uma ação mais perturbadora do que a definida com esse sinalizador, a solicitação de atualização falhará. Por exemplo, se você definir a ação permitida mais perturbadora como
RESTART
, uma tentativa de atualizar a imagem do disco de inicialização falhará porque essa atualização requer a substituição da instância, uma ação mais perturbadora do que uma reinicialização.- A ação mínima padrão é
REPLACE
. Se quiser evitar interrupções desnecessárias, defina a ação mínima para ser menos perturbadora. - A ação padrão mais perturbadora permitida é
REPLACE
. Se você não puder tolerar tal interrupção, defina a ação permitida mais perturbadora para ser menos perturbadora. - Limpe os vazamentos de memória.
- Reinicie seu aplicativo para que ele possa funcionar de uma máquina fresca.
- Aplique uma substituição periódica como uma prática recomendada para testar suas VMs.
- Atualize a imagem do sistema operacional da sua VM ou os scripts de inicialização executada para atualizar seu software.
- Na página do Google Cloud Console, vá para a página Grupos de instância .
- Selecione o grupo de instância gerenciado com as VMs que você deseja reiniciar ou substituir.
- Clique em reiniciar/substituir VMs .
- Em operação , selecione Reiniciar ou substituir .
- Se você selecionar reiniciar , alterne os seguintes parâmetros:
- Se você selecionar substituir , faça o seguinte:
- Escolha se deseja manter os nomes das instâncias ao substituir instâncias.
- Alternar os seguintes parâmetros:
- Para iniciar a operação, clique em reiniciar VMs ou substituir VMs .
-
maxUnavailable= NUMBER_OF_ZONES
-
maxSurge= NUMBER_OF_ZONES
Se você especificar uma porcentagem de instâncias da VM para uma atualização do Canary, o atualizador tenta distribuir as instâncias uniformemente através das zonas. O restante é arredondado para cima ou para baixo em cada zona, mas a diferença total não é superior a uma instância de 1 VM por grupo. Por exemplo, para um MIG com 10 instâncias e uma porcentagem de tamanho de alvo de 25%, a atualização é lançada para 2 a 3 instâncias de VM.
Se você especificar uma porcentagem para opções de atualização como
maxSurge
emaxUnavailable
, as porcentagens serão arredondadas de forma independente por zona.- Aprenda sobre a visualização de informações sobre MIGs e instâncias gerenciadas .
- Aprenda sobre a criação de modelos de instância .
- Aprenda a usar as famílias de imagens e um Rolling Substituir para atualizar a imagem do sistema operacional em todas as VMs em um MIG.
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.
Limitações
Iniciando uma atualização contínua básica
Uma atualização contínua básica é uma atualização aplicada gradualmente a todas as instâncias em um MIG até que todas as instâncias tenham sido atualizadas para a configuração pretendida mais recente. A atualização contínua ignora automaticamente as instâncias que já estão na configuração mais recente.
Você pode controlar vários aspectos de uma atualização contínua, como quantas instâncias podem ser colocadas off-line para a atualização, quanto tempo esperar entre a atualização das instâncias, se o novo modelo afeta todas ou apenas uma parte das instâncias e assim por diante.
Aqui estão algumas coisas que você deve ter em mente ao fazer uma atualização contínua:
Para iniciar uma atualização contínua básica em que a atualização é aplicada a todas as instâncias do grupo, siga as instruções abaixo.
Console
gcloud
Use o comando
rolling-action start-update
.gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \ --version=template=INSTANCE_TEMPLATE_NAME [--zone=ZONE | --region=REGION]
Substitua o seguinte:
DESCANSAR
Chame o método
patch
em um recurso MIG regional ou zonal .Por exemplo, para um MIG regional, a solicitação a seguir mostra a configuração mínima necessária para atualizar automaticamente 100% das instâncias para o novo modelo de instância.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME { "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE", "updatePolicy": { "type": "PROACTIVE" } }
Depois de fazer uma solicitação, você poderá monitorar a atualização para saber quando ela for concluída.
Para configurações avançadas, inclua outras opções de atualização. Se você não especificar o contrário, as opções
maxSurge
emaxUnavailable
serão padronizadas como1
multiplicado pelo número de zonas afetadas. Isso significa que apenas 1 instância é colocada offline em cada zona afetada e o MIG cria apenas 1 instância adicional por zona, durante a atualização.Configurando opções para sua atualização
Para atualizações mais complexas você pode configurar opções adicionais, conforme descrito nas seções a seguir.
Tipo de atualização
Os grupos de instâncias gerenciadas oferecem suporte a dois tipos de atualização:
Se quiser aplicar atualizações automaticamente, defina o tipo como proactive .
Como alternativa, se uma atualização automatizada for potencialmente muito perturbadora, você poderá optar por realizar uma atualização oportunista . O MIG aplica uma atualização oportunista somente quando você inicia manualmente a atualização nas instâncias selecionadas ou quando novas instâncias são criadas. Novas instâncias podem ser criadas quando você ou outro serviço, como um escalonador automático, redimensiona o MIG. O Compute Engine não inicia ativamente solicitações para aplicar atualizações oportunistas em instâncias existentes.
Para obter mais informações sobre atualizações automatizadas versus atualizações seletivas, consulte Métodos para aplicar uma nova configuração a VMs existentes .
Surto máximo
Use a opção
maxSurge
para configurar quantas novas instâncias o MIG pode criar acima de seutargetSize
durante uma atualização automatizada. Por exemplo, se você definirmaxSurge
como 5, o MIG usará o novo modelo de instância para criar até 5 novas instâncias acima do tamanho desejado. Definir um valormaxSurge
mais alto acelera a atualização, ao custo de instâncias adicionais, que são cobradas de acordo com o Compute Engineplanilha de preços .Você pode especificar um número fixo ou, se o grupo tiver 10 ou mais instâncias, uma porcentagem. Se você definir uma porcentagem, o atualizador arredondará o número de instâncias, se necessário.
Se você não definir o valor
maxSurge
, o valor padrão será usado. Para MIGs zonais, o padrão paramaxSurge
é1
. Para MIGs regionais, o padrão é o número de zonas associadas ao grupo, por padrão3
.maxSurge
só funciona se você tiver cota ou recursos suficientes para suportar os recursos adicionais.Se a sua atualização não exigir a substituição das VMs, esta opção será ignorada. Você pode forçar a substituição das VMs durante uma atualização definindo a opção de ação mínima .
Máximo indisponível
Use a opção
maxUnavailable
para configurar quantas instâncias estão indisponíveis a qualquer momento durante uma atualização automatizada. Por exemplo, se você definirmaxUnavailable
como 5, apenas 5 instâncias serão colocadas off-line para atualização por vez. Use esta opção para controlar o nível de interrupção da atualização em seu serviço e para controlar a taxa na qual a atualização é implantada.Este número também inclui quaisquer instâncias que não estejam disponíveis por outros motivos. Por exemplo, se o grupo estiver em processo de redimensionamento , as instâncias no meio da criação poderão ficar indisponíveis. Essas instâncias contam para o número
maxUnavailable
.Você pode especificar um número fixo ou, se o grupo tiver 10 ou mais instâncias, uma porcentagem. Se você definir uma porcentagem, o atualizador arredondará para baixo o número de instâncias, se necessário.
Se você não quiser nenhuma máquina indisponível durante uma atualização, defina o valor
maxUnavailable
como0
e o valormaxSurge
como maior que 0. Com essas configurações, o Compute Engine remove cada máquina antiga somente depois que a nova máquina substituta for criada e executada.Se você não definir o valor
maxUnavailable
, o valor padrão será usado. Para MIGs zonais, o padrão é1
. Para MIGs regionais, o padrão é o número de zonas associadas ao grupo, por padrão3
.Tempo mínimo de espera
Use a opção
minReadySec
para especificar o tempo de espera antes de considerar uma instância nova ou reiniciada como atualizada. Use esta opção para controlar a taxa na qual a atualização automatizada é implantada. O cronômetro inicia quando ambas as condições a seguir forem satisfeitas:Observe que para que a verificação de integridade retorne íntegra, o atualizador aguarda as seguintes condições:
Se a verificação de integridade não retornar
HEALTHY
dentro doinitialDelaySec
, o atualizador declarará a instância da VM como não íntegra e potencialmente interromperá a atualização. Enquanto a instância de VM aguarda verificação durante o períodoinitialDelaySec
eminReadySec
, acurrentAction
da instância éVERIFYING
. No entanto, o status da instância de VM subjacente permaneceRUNNING
.Se não houver verificações de integridade para o grupo, o cronômetro será iniciado quando o status da instância for
RUNNING
.O valor máximo para o campo
minReadySec
é 3.600 segundos (1 hora).O diagrama a seguir mostra como as opções de tamanho de destino, indisponibilidade máxima, pico máximo e tempo de espera mínimo afetam suas instâncias. Para obter mais informações sobre o tamanho do destino, consulte Atualizações Canary .
Ação mínima
Use a opção de ação mínima para minimizar ao máximo a interrupção ou para aplicar uma ação mais perturbadora do que o estritamente necessário. Por exemplo, o Compute Engine não precisa reiniciar uma VM para alterar seus metadados. Mas se seu aplicativo ler metadados de instância somente quando uma VM for reiniciada, você poderá definir a ação mínima para reiniciar a fim de captar alterações de metadados.
Se a atualização exigir uma ação mais perturbadora do que a definida com essa sinalização, o Compute Engine executará a ação necessária para executar a atualização. Por exemplo, se você especificar uma reinicialização como ação mínima, o Atualizador tentará reiniciar as instâncias para aplicar a atualização. Mas, se você estiver alterando o sistema operacional, o que não pode ser feito reiniciando a instância, o atualizador substituirá as instâncias do grupo por novas instâncias de VM.
Para obter mais informações, incluindo opções válidas, consulte Controlando o nível de interrupção durante uma atualização contínua .
Ação permitida mais perturbadora
Use a opção de ação permitida mais perturbadora para evitar uma atualização se ela exigir mais interrupções do que você pode pagar. Se uma atualização não puder ser concluída devido a esta configuração, a atualização falhará e suas VMs manterão a configuração anterior.
Para obter mais informações, consulte Controlando o nível de interrupção durante uma atualização contínua .
Método de substituição
Por padrão, quando você atualiza proativamente um MIG, o grupo exclui suas instâncias de VM e as troca por novas instâncias com novos nomes. Se você precisar preservar os nomes das suas instâncias de VM, use a opção
replacementMethod
.Preservar nomes de instâncias existentes pode ser útil se você tiver aplicativos ou sistemas que dependem do uso de nomes de instâncias específicos. Por exemplo, alguns aplicativos, como o Memcached, dependem de nomes de instâncias porque não possuem um serviço de descoberta; como resultado, sempre que o nome de uma instância é alterado, o aplicativo perde a conexão com essa VM específica.
Para preservar os nomes das instâncias, defina o método de substituição como
RECREATE
em vez deSUBSTITUTE
se você atualizar o MIG com a CLI gcloud ou a API Compute Engine. Como alternativa, se você atualizar o MIG no console do Google Cloud, marque a caixa de seleção Manter nomes ao substituir VMs .Os valores
replacementMethod
válidos são:Para obter mais informações, consulte Preservando nomes de instâncias .
Exemplos adicionais de atualização
Aqui estão alguns exemplos de linha de comando com opções de configuração comuns.
Execute uma atualização contínua de todas as instâncias de VM, mas crie até cinco novas instâncias acima do tamanho desejado por vez
gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \ --version=template=NEW_TEMPLATE \ --max-surge=5 \ [--zone=ZONE | --region=REGION]
Execute uma atualização contínua com no máximo 3 máquinas indisponíveis e um tempo de espera mínimo de 3 minutos antes de marcar uma nova instância como disponível
gcloud beta compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \ --version=template=NEW_TEMPLATE \ --min-ready=3m \ --max-unavailable=3 \ [--zone=ZONE | --region=REGION]
Execute uma atualização contínua de todas as instâncias de VM, mas crie até 10% de novas instâncias acima do tamanho desejado por vez
Por exemplo, se você tiver 1.000 instâncias e executar o comando a seguir, o atualizador criará até 100 instâncias antes de começar a remover instâncias que estão executando o modelo de instância anterior.
gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \ --version=template=NEW_TEMPLATE \ --max-surge=10% \ [--zone=ZONE | --region=REGION]
Atualizações canário
Uma atualização canário é uma atualização aplicada a um subconjunto de instâncias no grupo. Com uma atualização canário, você pode testar novos recursos ou atualizações em um subconjunto aleatório de instâncias, em vez de lançar uma atualização potencialmente perturbadora para todas as suas instâncias. Se uma atualização não estiver indo bem, você só precisará reverter o subconjunto de instâncias, minimizando a interrupção para seus usuários.
Uma atualização canário é igual a uma atualização contínua padrão, exceto que o número de instâncias que devem ser atualizadas é menor que o tamanho total do grupo de instâncias. Como uma atualização contínua padrão, você pode configurar opções adicionais para controlar o nível de interrupção do seu serviço.
Iniciando uma atualização canário
Para iniciar uma atualização canário, especifique até duas versões de modelo de instância, normalmente um novo modelo de instância para canário e o modelo de instância atual para o restante das instâncias. Por exemplo, você pode especificar que 20% de suas instâncias sejam criadas com base em
NEW_INSTANCE_TEMPLATE
enquanto o restante das instâncias continua a ser executado emOLD_INSTANCE_TEMPLATE
. Não é possível especificar mais de dois modelos de instância por vez. ONEW_INSTANCE_TEMPLATE
pode ser um modelo de instância regional da mesma região do seu MIG ou um modelo de instância global.Você deve sempre especificar um tamanho de destino (
targetSize
) para a versão canário. Você não poderá iniciar uma atualização canário se omitir o tamanho de destino da versão canário. Por exemplo, se você especificou que 10% das instâncias devem ser usadas para canarying, os 90% restantes permanecerão intactos e usarão o modelo de instância atual.Console
gcloud
Use o comando
rolling-action start-update
. Forneça o modelo atual e o novo modelo para expressar explicitamente quantas instâncias devem usar cada modelo:gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \ --version=template=CURRENT_INSTANCE_TEMPLATE_NAME \ --canary-version=template=NEW_TEMPLATE,target-size=SIZE \ [--zone=ZONE | --region=REGION]
Substitua o seguinte:
Por exemplo, o comando a seguir executa uma atualização canário que implementa
example-template-B
em 10% das instâncias do grupo:gcloud compute instance-groups managed rolling-action start-update example-mig \ --version=template=example-template-A \ --canary-version=template=example-template-B,target-size=10%
DESCANSAR
Chame o método
patch
em um recurso MIG regional ou zonal . No corpo da solicitação, inclua o modelo de instância atual e o novo modelo de instância que você deseja transformar em canário. Por exemplo:PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME { "versions": [ { "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE", "targetSize": { "[percent|fixed]": NUMBER|PERCENTAGE # Use `fixed` for a specific number of instances } }, { "instanceTemplate": "global/instanceTemplates/CURRENT_INSTANCE_TEMPLATE_NAME" } ] }
Substitua o seguinte:
Para obter mais opções, consulte Configurando opções para sua atualização .
Depois de fazer uma solicitação, você poderá monitorar a atualização para saber quando ela for concluída.
Avançando uma atualização canário
Depois de executar uma atualização canário , você pode decidir se deseja confirmar a atualização para 100% do MIG ou revertê-la.
Console
gcloud
Se você deseja se comprometer com sua atualização canário, avance a atualização emitindo outro comando
rolling-action start-update
mas defina apenas o sinalizadorversion
e omita o sinalizador--canary-version
.gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \ --version=template=NEW_TEMPLATE \ [--zone=ZONE | --region=REGION]
DESCANSAR
Chame o método
patch
em um recurso MIG regional ou zonal . No corpo da solicitação, especifique o novo modelo de instância como umaversion
e omita o modelo de instância anterior do corpo da solicitação. Omita a especificação do tamanho alvo para implementar a atualização em 100% das instâncias. Por exemplo:PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME { "versions": [ { "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE" # New instance template } ] }
Monitorando atualizações
Depois de iniciar uma atualização, pode levar algum tempo para que a nova configuração seja concluída em todas as instâncias afetadas. Você pode monitorar o progresso de uma atualização verificando o seguinte:
Status do grupo
No nível do grupo, o Compute Engine preenche um campo somente leitura chamado
status
que contém uma sinalizaçãoversionTarget.isReached
e uma sinalizaçãoisStable
. Você pode usar a CLI gcloud ou REST para acessar esses sinalizadores. Você também pode usar o console do Google Cloud para ver o número atual e planejado de instâncias que estão sendo atualizadas.Console
Você pode monitorar uma atualização contínua de um grupo acessando a página de detalhes do grupo.
gcloud
Use o comando
describe
.gcloud compute instance-groups managed describe INSTANCE_GROUP_NAME \ [--zone=ZONE | --region=REGION]
Você também pode usar o comando
gcloud compute instance-groups managed wait-until
com a sinalização--version-target-reached
para aguardar até questatus.versionTarget.isReached
seja definido comotrue
para o grupo:gcloud compute instance-groups managed wait-until INSTANCE_GROUP_NAME \ --version-target-reached \ [--zone=ZONE | --region=REGION]
DESCANSAR
Chame o método
get
em um recurso MIG regional ou zonal .GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/get
Verificando se uma implementação de atualização foi concluída
Verifique se a implementação de uma atualização foi concluída verificando o valor do campo
status.versionTarget.isReached
do MIG:Verificando se um grupo gerenciado de instâncias é estável
Verifique se todas as instâncias em um grupo de instâncias gerenciadas estão em execução e íntegras verificando o valor do campostatus.isStable
do grupo.status.isStable
definido comofalse
indica que as alterações estão ativas, pendentes ou que o próprio MIG está sendo modificado.status.isStable
definido comotrue
indica o seguinte:Lembre-se de que a estabilidade de um MIG depende de vários fatores porque um MIG pode ser modificado de diversas maneiras. Por exemplo:
Assim que todas as ações forem concluídas,
status.isStable
será definido comotrue
novamente para esse MIG.Ações atuais em instâncias
Use a Google Cloud CLI ou REST para ver detalhes sobre as instâncias em um grupo de instâncias gerenciadas. Os detalhes incluem o status da instância e as ações atuais que o grupo está executando em suas instâncias.
gcloud
Todas as instâncias gerenciadas
Para verificar o status e as ações atuais em todas as instâncias do grupo, use o comando
list-instances
.gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \ [--zone=ZONE | --region=REGION]
O comando retorna uma lista de instâncias no grupo, incluindo status, ações atuais e outros detalhes:
NAME ZONE STATUS HEALTH_STATE ACTION INSTANCE_TEMPLATE VERSION_NAME LAST_ERROR vm-instances-9pk4 us-central1-f CREATING my-new-template vm-instances-h2r1 us-central1-f STOPPING DELETING my-old-template vm-instances-j1h8 us-central1-f RUNNING NONE my-old-template vm-instances-ngod us-central1-f RUNNING NONE my-old-template
A coluna
HEALTH_STATE
aparece vazia, a menos que você tenha configurado a verificação de integridade .Uma instância gerenciada específica
Para verificar o status e a ação atual de uma instância específica no grupo, use o comando
describe-instance
.gcloud compute instance-groups managed describe-instance INSTANCE_GROUP_NAME \ --instance INSTANCE_NAME \ [--zone=ZONE | --region=REGION]
O comando retorna detalhes sobre a instância, incluindo status da instância, ação atual e, para MIGs com estado, estado preservado:
currentAction: NONE id: '6789072894767812345' instance: https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/example-mig-hz41 instanceStatus: RUNNING name: example-mig-hz41 preservedStateFromConfig: metadata: example-key: example-value preservedStateFromPolicy: disks: persistent-disk-0: autoDelete: NEVER mode: READ_WRITE source: https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/disks/example-mig-hz41 version: instanceTemplate: https://www.googleapis.com/compute/v1/projects/example-project/global/instanceTemplates/example-template
DESCANSAR
Chame o método
listManagedInstances
em um recurso MIG regional ou zonal . Por exemplo, para ver detalhes sobre as instâncias em um recurso zonal MIG, você pode fazer a seguinte solicitação:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/listManagedInstances
A chamada retorna uma lista de instâncias do MIG, incluindo
instanceStatus
ecurrentAction
de cada instância.{ "managedInstances": [ { "instance": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-f/instances/vm-instances-prvp", "id": "5317605642920955957", "instanceStatus": "RUNNING", "instanceTemplate": "https://www.googleapis.com/compute/v1/projects/example-project/global/instanceTemplates/example-template", "currentAction": "REFRESHING" }, { "instance": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-f/instances/vm-instances-pz5j", "currentAction": "DELETING" }, { "instance": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-f/instances/vm-instances-w2t5", "id": "2800161036826218547", "instanceStatus": "RUNNING", "instanceTemplate": "https://www.googleapis.com/compute/v1/projects/example-project/global/instanceTemplates/example-template", "currentAction": "REFRESHING" } ] }
Para ver uma lista de valores válidos do campo
instanceStatus
, consulte Ciclo de vida da instância de VM .Se uma instância estiver passando por algum tipo de alteração, o grupo de instâncias gerenciadas definirá o campo
currentAction
da instância como uma das ações a seguir para ajudar você a acompanhar o progresso da alteração. Caso contrário, o campocurrentAction
será definido comoNONE
.Os possíveis valores
currentAction
são:Revertendo uma atualização
Não há nenhum comando explícito para reverter uma atualização para uma versão anterior, mas se você decidir reverter uma atualização (uma atualização totalmente confirmada ou uma atualização canário), poderá fazer isso fazendo uma nova solicitação de atualização e passando o modelo de instância para o qual deseja reverter.
gcloud
Por exemplo, o seguinte comando da CLI gcloud reverte uma atualização o mais rápido possível. Substitua
OLD_INSTANCE_TEMPLATE
pelo nome do modelo de instância para o qual você deseja reverter.gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \ --version=template=OLD_INSTANCE_TEMPLATE_NAME \ --max-unavailable=100% \ [--zone=ZONE | --region=REGION]
DESCANSAR
Chame o método
patch
em um recurso MIG regional ou zonal .No corpo da solicitação, especifique o modelo de instância anterior como uma
version
:PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME { "updatePolicy": { "maxUnavailable": { "percent": 100 } }, "versions": [ { "instanceTemplate": "global/instanceTemplates/OLD_INSTANCE_TEMPLATE_NAME" # Old instance template } ] }
Para um MIG regional com menos de 10 instâncias, você deve usar um valor fixo para
maxUnavailable
e definir o valor como o número de instâncias no grupo.O Updater trata uma solicitação de reversão da mesma forma que uma solicitação de atualização normal, portanto você pode especificar opções de atualização adicionais.
Parando uma atualização
Não existe um método ou comando explícito para interromper uma atualização. Você pode alterar uma atualização de proativa para oportunista e, se o grupo não estiver sendo redimensionado por outros serviços, como o escalonador automático, a mudança para oportunista interromperá efetivamente a atualização.
Para alterar uma atualização de proativa para oportunista usando a CLI gcloud, execute o seguinte comando:
gcloud compute instance-groups managed rolling-action stop-proactive-update INSTANCE_GROUP_NAME \ [--zone=ZONE | --region=REGION]
Para interromper completamente a atualização após convertê-la de proativa em oportunista, siga estas etapas:
Controlando a velocidade de uma atualização contínua
Por padrão, quando você faz uma solicitação de atualização, o Atualizador executa a atualização o mais rápido possível. Se não tiver certeza se deseja aplicar uma atualização totalmente ou estiver testando suas alterações, você pode controlar a velocidade da atualização usando os métodos a seguir.
Você também pode usar uma combinação desses métodos para controlar a taxa de atualização.
Controlando o nível de interrupção durante uma atualização contínua
Dependendo da natureza de uma atualização, ela poderá interromper o estado do ciclo de vida de uma instância. Por exemplo, alterar o disco de inicialização de uma instância requer a substituição da instância. Você pode controlar o nível de interrupção durante uma atualização contínua definindo as seguintes opções:
Ambas as opções aceitam os seguintes valores:
Valor Descrição Quais propriedades da instância podem ser atualizadas? REFRESH
Não pare a instância. Discos adicionais, metadados de instância, rótulos, tags RESTART
Pare a instância e inicie-a novamente. Discos adicionais, metadados de instância, rótulos, tags, tipo de máquina REPLACE
(Padrão.) Substitua a instância de acordo com a opção do método de substituição . Todas as propriedades da instância armazenadas no modelo de instância ou na configuração por instância A ação permitida mais perturbadora não pode ser menos perturbadora do que a ação mínima.
Quando você distribui atualizações automaticamente, os seguintes padrões se aplicam:
Você pode alterar o comportamento padrão usando a API Compute Engine para definir os campos
updatePolicy.minimalAction
eupdatePolicy.mostDisruptiveAllowedAction
no seu recurso MIG, por exemplo, chamando o métodoregionInstanceGroupManagers.patch
. Como alternativa, você pode selecionar as ações específicas permitidas para atualizar VMs ao atualizar seu MIG no console do Google Cloud. Para visualizar as configurações atuais, consulte Obtendo as propriedades de um MIG .Uma atualização falhará se exigir uma ação mais perturbadora do que a permitida. Se isso acontecer, você poderá tentar a atualização novamente com uma ação permitida mais perturbadora ou poderá atualizar a instância seletivamente . O Compute Engine realiza a validação de melhor esforço para verificar se as instâncias podem ser atualizadas com o limite de interrupção especificado. Mas devido a mudanças simultâneas no sistema, a situação pode mudar após o início da atualização. Se uma operação em uma instância específica falhar, liste os erros da instância para ver o erro.
Executando uma reviravolta ou reiniciar
Um reinício de rolamento para e reinicia todas as instâncias, enquanto um Rolling substitui as instâncias de acordo com a opção Método de Substituição . Um reinício ou substituição de rolamento não altera mais nada sobre o grupo, incluindo o modelo de instância.
Existem muitas razões pelas quais você pode querer uma reinicialização ou uma substituição. Por exemplo, você pode reiniciar ou substituir suas instâncias de VM de tempos em tempos por um dos seguintes motivos:
Use o Google Cloud Console, o Google Cloud CLI ou descanse para executar uma reinicialização ou substituição.
Console
GCLOUD
Use o comando
restart
oureplace
o comando .O comando a seguir substitui todas as instâncias no MIG, uma de cada vez:
gcloud compute instance-groups managed rolling-action replace INSTANCE_GROUP_NAME
O comando a seguir reinicia cada instância, uma de cada vez:
gcloud compute instance-groups managed rolling-action restart INSTANCE_GROUP_NAME
Você pode personalizar ainda cada um desses comandos com as mesmas opções disponíveis para atualizações (por exemplo,
maxSurge
emaxUnavailable
).DESCANSAR
Ligue para o método
patch
em um recurso MIG regional ou zonal .No campo
updatePolicy.minimalAction
, especifiqueRESTART
ouREPLACE
. No campoversions.instanceTemplate
, especifique o modelo atual.Para acionar a ação, você também deve atualizar o campo
versions.name
- por exemplo, anexando -o a um registro de data e hora. Posteriormente, você pode listar as VMs do MIG e inspecionarversions.name
de cada VM.Por exemplo, para um MIG zonal, a solicitação a seguir mostra a configuração mínima necessária para reiniciar automaticamente 100% das instâncias.
PATCH https://compute.googleapis.com/compute/v1/projects/example-project/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME { "updatePolicy": { "minimalAction": "RESTART", "type": "PROACTIVE" }, "versions": [ { "instanceTemplate": "global/instanceTemplates/CURRENT_INSTANCE_TEMPLATE_NAME", "name": "v2-1705499403" } ] }
Exemplos adicionais de substituição/reinicialização
Realize um reinício de todas as VMs, duas de cada vez
Este comando reinicia todas as VMs do grupo, duas de cada vez. Observe que nenhum novo modelo de instância está especificado.
gcloud compute instance-groups managed rolling-action restart INSTANCE_GROUP_NAME \ --max-unavailable=2 \ [--zone=ZONE | --region=REGION]
Realize um reinício de todas as VMs o mais rápido possível
gcloud compute instance-groups managed rolling-action restart INSTANCE_GROUP_NAME \ --max-unavailable=100% \ [--zone=ZONE | --region=REGION]
Execute uma substituição de todas as VMs o mais rápido possível
gcloud compute instance-groups managed rolling-action replace INSTANCE_GROUP_NAME \ --max-unavailable=100% \ [--zone=ZONE | --region=REGION]
Preservando nomes de instância
Se você precisar preservar os nomes de suas instâncias da VM em uma atualização, defina o
replacementMethod
paraRECREATE
. Você também deve definirmaxUnavailable
como maior que0
emaxSurge
como0
. A recriação de instâncias em vez de substituí -las faz com que sua atualização demore mais tempo, mas as instâncias atualizadas mantêm seus nomes.Se você não especificar um método de substituição, o valor atual da
updatePolicy.replacementMethod
. Se não estiver definido, o valor padrão dosubstitute
será usado, que substitui as instâncias da VM por novas instâncias que geraram nomes aleatoriamente.GCLOUD
Ao emitir um comando
rolling-action
, inclua o--replacement-method=recreate
.gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \ --replacement-method=recreate \ --version=template=NEW_TEMPLATE \ --max-unavailable=5 \ [--zone=ZONE | --region=REGION]
DESCANSAR
Ligue para o método
patch
em um recurso MIG regional ou zonal . No órgão de solicitação, inclua o campoupdatePolicy.replacementMethod
:PATCH /compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME { "updatePolicy": { "type": "PROACTIVE", "maxUnavailable": { "fixed": 5 }, "replacementMethod": "RECREATE" }, "versions": [ { "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE" } ] }
Depois de fazer uma solicitação, você pode monitorar a atualização para saber quando a atualização terminar.
Atualizando um grupo de instância gerenciado regional
Um MIG regional contém instâncias de VM que estão espalhadas por várias zonas dentro de uma região, em oposição a um MIG zonal, que contém apenas instâncias em uma zona. Os MIGs regionais permitem distribuir suas instâncias em mais de uma zona para melhorar a disponibilidade do seu aplicativo e apoiar casos extremos em que uma zona falha ou um grupo inteiro de instâncias para de responder.
A execução de uma atualização em um MIG regional é o mesmo que executar uma atualização em um MIG zonal, com algumas exceções descritas abaixo. Quando você inicia uma atualização para um MIG regional, o atualizador sempre atualiza instâncias proporcionalmente e uniformemente em cada zona. Você não pode escolher quais instâncias em que as zonas são atualizadas primeiro nem pode optar por atualizar instâncias em apenas uma zona.
Diferenças entre atualizar MIGs regionais versus zonais
Os MIGs regionais têm os seguintes valores de atualização padrão:
NUMBER_OF_ZONES
é o número de zonas associadas ao MIG regional. Por padrão, o número de zonas para um MIG regional é3
. Mas você pode selecionar um número diferente.Se você estiver usando números fixos ao especificar uma atualização, o número fixo deverá ser
0
ou igual ou superior ao número de zonas associadas ao MIG regional. Por exemplo, se o grupo for distribuído em três zonas, você não poderá definirmaxSurge
como1
ou2
porque o atualizador deve criar uma instância adicional em cada uma das três zonas.Usando um número fixo ou uma porcentagem em solicitações de atualização
Se você especificar um número fixo em suas solicitações de atualização, o número que você especificará é dividido pelo número de zonas no MIG regional e distribuído uniformemente. Por exemplo, se você especificar
maxSurge=10
, o atualizador divide 10 através do número de zonas na região e cria instâncias com base nesse número. Se o número de instâncias não se dividir uniformemente nas zonas, o atualizador adicionará as instâncias restantes a uma zona aleatória. Assim, para 10 instâncias em três zonas, duas das zonas recebem 3 instâncias e uma zona recebe 4 instâncias. A mesma lógica é aplicada aos parâmetrosmaxUnavailable
e os parâmetrostargetSize
para as atualizações do Canary.Você pode especificar uma porcentagem apenas se o seu MIG contiver 10 ou mais instâncias de VM. As porcentagens são tratadas de maneira um pouco diferente, dependendo da situação:
O que vem a seguir
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-04-21 UTC.
-