Grupos de instâncias

Crie e gerencie grupos de instâncias de máquina virtual (VM, na sigla em inglês) para que não seja necessário controlar individualmente cada instância no projeto. O Compute Engine oferece dois tipos diferentes de grupos de instâncias: gerenciadas e não gerenciadas.

Grupos de instâncias gerenciadas

Um grupo de instâncias gerenciadas usa um modelo de instância para criar um grupo de instâncias idênticas. Elas são controladas como uma única entidade. Para fazer alterações nas instâncias que são parte de um grupo de instâncias gerenciadas, altere todo o grupo. Como esses grupos contêm instâncias idênticas, eles oferecem os seguintes recursos:

  • Quando os aplicativos exigem recursos de processamento extras, os grupos de instâncias gerenciadas podem fazer escalonamento automático do número de instâncias no grupo.
  • Grupos de instâncias gerenciadas trabalham com serviços de balanceamento de carga a fim de distribuir o tráfego para todas as instâncias do grupo.
  • Se uma instância no grupo falhar, for interrompida ou excluída por uma ação diferente da dos comandos de grupos de instâncias, o grupo de instâncias gerenciadas a recriará automaticamente para que ela retome as tarefas de processamento. A instância recriada usa o mesmo nome e o mesmo modelo de instância que a instância anterior, mesmo que o grupo faça referência a um modelo de instância diferente.
  • Os grupos de instâncias gerenciadas podem identificar e recriar instâncias não íntegras em um grupo automaticamente para garantir que todas sejam executadas sem problemas.
  • O atualizador de grupos de instâncias gerenciadas permite que você implante facilmente novas versões de software nas instâncias dos seus grupos de instâncias gerenciadas, além de controlar a velocidade e o escopo da implantação e o nível de interrupção do serviço.

Tipos de grupos de instâncias gerenciadas

Podem ser criados dois tipos de grupos de instâncias gerenciadas:

Geralmente, grupos de instâncias gerenciadas regionais são recomendados em vez de grupos de instâncias gerenciadas zonais porque permitem que a carga de aplicativos seja espalhada em várias zonas, em vez de limitar o aplicativo a uma única zona ou ter que gerenciar vários grupos de instâncias em diferentes zonas. Essa replicação protege contra falhas nas zonas e cenários imprevistos como problemas no funcionamento de um grupo inteiro de instâncias em uma única zona. Quando isso ocorre, o aplicativo continua veiculando tráfego das instâncias usando outra zona da mesma região.

Escolha grupos de instâncias gerenciadas por zona se quiser evitar uma latência ligeiramente maior decorrente da comunicação entre zonas, ou se precisar ter um controle minucioso sobre os tamanhos dos grupos em cada zona.

Grupos de instâncias gerenciadas e a rede

Por padrão, as instâncias no grupo são colocadas na rede default e recebem endereços IP do intervalo regional atribuídos aleatoriamente. Como alternativa, restrinja o intervalo IP do grupo criando uma rede VPC de modo personalizado e uma sub-rede que use um intervalo IP menor, em seguida, especifique essa sub-rede no modelo da instância. Com isso, é possível simplificar a criação de regras de firewall.

Depois que você criar um grupo de instâncias gerenciadas, as novas instâncias serão iniciadas no grupo assim que o sistema as provisionar. Esse processo pode levar bastante tempo, dependendo do número de instâncias no grupo. Verifique o status das instâncias no grupo de instâncias gerenciadas.

Grupos de instâncias gerenciadas e escalonamento automático

Os grupos de instâncias gerenciadas permitem escalonamento automático para você adicionar ou remover dinamicamente instâncias de um grupo gerenciado em resposta a um aumento ou uma redução da carga. Ative o escalonamento automático e escolha uma política para determinar a quantidade que você quer escalonar. As políticas de escalonamento automático aplicáveis incluem escalonamento baseado na utilização da CPU, na capacidade de balanceamento de carga, nas métricas de monitoramento do Stackdriver ou na carga de trabalho com base em fila, como o Google Cloud Pub/Sub.

Como o escalonamento automático requer a adição e remoção de instâncias do grupo, somente é possível usá-lo com grupos de instâncias gerenciadas para que o autoescalador mantenha instâncias idênticas. O escalonamento automático não funciona em grupos de instâncias não gerenciadas, que podem conter instâncias heterogêneas.

Para mais informações, leia Como fazer escalonamento automático de grupos de instâncias.

Grupos de instâncias gerenciadas e recuperação automática

Os grupos de instâncias gerenciadas mantêm a alta disponibilidade dos aplicativos ao manter as instâncias disponíveis proativamente, ou seja, no estado RUNNING. O grupo de instâncias gerenciadas recria automaticamente as que não estão no estado RUNNING. No entanto, considerar apenas o estado da instância pode não ser suficiente. Talvez seja necessário recriar instâncias quando um aplicativo congela, falha ou fica sem memória.

A recuperação automática baseada em aplicativos melhora a disponibilidade por meio de um sinal de verificação de integridade que detecta problemas específicos do aplicativo, como congelamento, falha ou sobrecarga. Se uma verificação de integridade determinar que um aplicativo falhou em uma instância, o grupo recriará automaticamente essa instância.

Verificação de integridade

As verificações de integridade usadas para monitorar grupos de instâncias gerenciadas são semelhantes àquelas usadas para balanceamento de carga, com algumas diferenças de comportamento. As de balanceamento de carga ajudam a direcionar o tráfego de instâncias sem resposta para instâncias íntegras. Essas verificações de integridade não fazem o Compute Engine recriar as instâncias. Por outro lado, as verificações de integridade dos grupos de instâncias gerenciadas instruem proativamente os grupos a excluir e recriar as instâncias que assumirem o estado UNHEALTHY.

Na maioria dos casos, use verificações de integridade distintas para balanceamento de carga e recuperação automática. As verificações para o balanceamento de carga podem e precisam ser mais agressivas, já que elas determinam se uma instância receberá tráfego do usuário. Como os clientes podem depender dos seus serviços, é útil detectar rapidamente as instâncias sem resposta para redirecionar o tráfego, se necessário. Por outro lado, com a verificação de integridade para a recuperação automática, o Compute Engine substitui proativamente instâncias com falha. Assim essa verificação será mais conservadora do que uma de balanceamento de carga.

Comportamento da recuperação automática

A recuperação automática recria instâncias não íntegras usando o modelo original que foi usado para criar a instância de VM, e não necessariamente o modelo da instância atual no grupo de instâncias gerenciadas. Por exemplo, se uma instância de VM foi criada usando instance-template-a e você atualizar o grupo de instâncias gerenciadas para usar instance-template-b no modo OPPORTUNISTIC, a recuperação automática ainda usará instance-template-a para recriar a instância. Isso ocorre porque as recriações da recuperação automática não são iniciadas pelo usuário. Por isso, no Compute Engine, não há a suposição de que a instância de VM precise usar o novo modelo. Se você quiser aplicar um novo modelo, consulte Como alterar o modelo de instância de um grupo de instâncias gerenciadas.

O número de instâncias recuperadas simultaneamente é menor que o tamanho do grupo de instâncias gerenciadas. Isso garante que o grupo continue executando um subconjunto de instâncias em situações em que a política de recuperação automática não se ajusta à carga de trabalho, as regras de firewall estão configuradas incorretamente ou há problemas de infraestrutura ou conectividade de rede, que podem levar à identificação falsa de todas as instâncias como não íntegras. No entanto, se um grupo de instâncias gerenciadas por zona tiver apenas uma instância, ou um grupo de instâncias gerenciadas regional tiver apenas uma instância por zona, a recuperação automática recriará essas instâncias quando elas não estiverem íntegras.

A recuperação automática não recria uma instância UNHEALTHY durante o período de inicialização dela, conforme especificado pela propriedade autoHealingPolicies[].initialDelaySec. Essa configuração atrasa a verificação feita pela recuperação automática e a recriação possivelmente prematura da instância caso ela esteja em processo de inicialização. O temporizador de atraso inicial começa quando a instância tem um currentAction de VERIFYING.

Recuperação automática e discos

Ao recriar uma instância com base no modelo, o recuperador automático lida com diferentes tipos de discos de maneira diferente. Com algumas configurações de disco, o recuperador automático pode falhar ao tentar recriar uma instância gerenciada.

Tipo autodelete Comportamento durante uma operação de recuperação automática
Novo disco permanente true O disco é recriado conforme especificado no modelo da instância. Todos os dados que foram gravados nele são perdidos quando o disco e a respectiva instância são recriados.
Novo disco permanente false O disco antigo é separado, mas permanece disponível. No entanto, a recriação da instância da VM falha porque o Compute Engine não pode recriar um disco existente.
Disco permanente existente true O disco antigo é excluído. A recriação da instância da VM falha porque o Compute Engine não pode reanexar um disco excluído à instância.
Disco permanente existente false O disco antigo é reanexado conforme especificado no modelo da instância. Os dados no disco são preservados. No entanto, no caso de discos de leitura e gravação existentes, um grupo de instâncias gerenciadas pode ter apenas uma VM, porque um único disco permanente não pode ser anexado a várias instâncias nesse modo.
Novo SSD local n/a O disco é recriado conforme especificado no modelo da instância. Os dados em um SSD local são perdidos quando uma instância é recriada ou excluída

O recuperador automático não reanexa discos que não estão especificados no modelo da instância, como os discos anexados a uma VM manualmente depois que ela foi criada.

Para preservar dados importantes que foram gravados no disco, tome precauções como estas:

  • Tire instantâneos do disco permanente regularmente.

  • Exporte dados para outra fonte, como o Cloud Storage.

Se as instâncias tiverem configurações importantes que você quer preservar, o Google também recomenda usar uma imagem personalizada no modelo de instância que contenha as configurações personalizadas necessárias. Assim, quando uma instância for recriada, o grupo de instâncias gerenciadas usará a imagem personalizada especificada por você.

Como atualizar grupos de instâncias gerenciadas

É possível implantar facilmente novas versões de software nas instâncias dos grupos de instâncias gerenciadas. O lançamento de uma atualização acontece automaticamente de acordo com suas especificações: você pode controlar a velocidade e o escopo da atualização para controlar interrupções no aplicativo. É possível executar implementações parciais que permitem testes canário. Consulte Como atualizar grupos de instâncias gerenciadas.

Grupos de instâncias não gerenciadas

Grupos de instâncias diferentes que você pode adicionar e remover do grupo arbitrariamente. Eles não oferecem escalonamento automático, suporte à atualização contínua ou uso de modelos de instância, portanto o Google recomenda criar grupos de instâncias gerenciadas sempre que possível. Use os grupos de instâncias não gerenciadas somente se for necessário aplicar balanceamento de carga às configurações preexistentes ou a grupos de instâncias diferentes.

Se for necessário criar um grupo de instâncias diferentes que não seguem um modelo de instância, consulte Grupos de instâncias não gerenciadas.

Grupos de instâncias e balanceamento de carga

Todas as configurações de balanceamento de carga disponíveis no Google Cloud Platform exigem que você especifique um back-end, um grupo de instâncias e um pool de destino ou um grupo de endpoints de rede, que pode veicular o tráfego distribuído do serviço de back-end do balanceador de carga.

Para balanceamento de carga HTTP(S), interno, proxy TCP e SSL, atribua um grupo de instâncias a um serviço de back-end. Esse é um serviço centralizado para gerenciamento de back-ends que, por sua vez, gerencia as instâncias que tratam das solicitações de usuário do balanceador de carga. Cada serviço contém um ou mais back-ends, e cada back-end pode conter um grupo de instâncias. O serviço de back-end sabe quais instâncias podem ser usadas, quanto tráfego elas podem processar e a quantidade de tráfego que estão processando no momento. É possível atribuir um grupo de instâncias gerenciadas ou não gerenciadas a um serviço de back-end.

Para balanceamento de carga de rede, adicione instâncias de VM individuais a um pool de destino ou atribua um ou mais grupos de instâncias gerenciadas ao pool de destino. Assim, o servidor adiciona todas as instâncias que fazem parte do grupo ao pool de destino especificado.

Para mais informações sobre diferentes configurações de balanceamento de carga, consulte a documentação de balanceamento de carga.

A seguir

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

Enviar comentários sobre…

Documentação do Compute Engine