Se tiver uma aplicação com estado existente em instâncias de máquinas virtuais (VMs) do Compute Engine autónomas (não geridas), pode migrar essa aplicação para um grupo de instâncias geridas (GIG) com estado.
Ao configurar um MIG com estado e usar instâncias geridas, pode obter as seguintes vantagens:
- Estado preservado: preservação dos nomes das instâncias, dos discos e dos metadados, mesmo que uma instância seja recriada.
- Recuperação automática: recriação automática de VMs com cargas de trabalho com falhas na mesma zona.
- Atualizações automáticas: implementações elegantes de novas configurações de instâncias ou versões de software em VMs num MIG.
Limitações
- Tem de parar as VMs existentes para migrar os respetivos discos existentes ou, em alternativa, tirar instantâneos consistentes para utilização pelas novas instâncias geridas.
- Tem de eliminar as VMs existentes se quiser reutilizar os respetivos nomes.
- A sua aplicação tem de ser capaz de ser executada em VMs com o mesmo tipo de máquina. Se a sua aplicação existente precisar de várias instâncias de diferentes tipos de máquinas, crie vários modelos de instâncias e MIGs, um por tipo de máquina.
- A sua aplicação tem de ser iniciada quando a VM é iniciada. Pode usar uma imagem personalizada ou um script de arranque. Cada opção é abordada abaixo.
- Não pode atualizar o sistema operativo nem o software implementando atualizações de imagens de arranque num MIG se optar por criar discos de arranque com estado.
- Só pode alcançar a elevada disponibilidade em várias zonas criando réplicas redundantes em várias zonas e configurando a replicação de dados ao nível da aplicação. O MIG com estado repara automaticamente as instâncias apenas na mesma zona e não orquestra a comutação por falha entre zonas.
- Não pode usar o ajuste de escala automático com um MIG com estado.
- Reveja as limitações do MIG com estado.
Custos
Este tutorial usa componentes faturáveis do Trusted Cloud , incluindo:- Compute Engine
Use a calculadora de preços para gerar uma estimativa de custos com base na sua utilização prevista.
Antes de começar
Este guia usa a CLI gcloud. Pode aceder a esta ferramenta através do Cloud Shell. Em alternativa, se quiser executar a CLI gcloud no seu computador local, transfira e instale a CLI gcloud mais recente.
Vista geral da migração
- Compreenda os componentes que constituem um MIG com estado.
- Reveja a configuração existente para determinar as especificações comuns da VM.
- Opcionalmente, crie uma imagem personalizada para servir como uma imagem de disco de arranque comum.
- Crie um modelo de instância para especificar a configuração comum da VM para o MIG.
- Crie um MIG vazio.
- Converta as suas VMs existentes em instâncias geridas no GIG, incluindo configurações por instância.
- Configure a autocura para o MIG para melhorar a resiliência da sua aplicação.
- Opcionalmente, para reduzir a sobrecarga de configuração, substitua as configurações por instância por uma política com estado.
Componentes
Configura as instâncias geridas do MIG com estado através de vários componentes:
- Um modelo de instância contém a configuração comum para VMs no GIG, incluindo o tipo de máquina, a imagem do disco de arranque, especificações opcionais para discos adicionais e um script de arranque opcional.
- Uma imagem personalizada opcional contém a sua aplicação e serve como uma imagem de disco de arranque comum.
- Uma configuração por instância contém itens com estado específicos da instância. Por exemplo, pode anexar um disco existente a uma instância específica no grupo. Este disco pode estar desanexado de uma instância autónoma existente, recuperado de um instantâneo ou ser um disco regional. O nome do dispositivo do disco não tem de ser definido no modelo de instância.
- Uma política com estado opcional contém itens com estado comuns. Por exemplo, define todos os discos com um nome de dispositivo específico (conforme definido no modelo de instância) como com estado para todas as instâncias no grupo.
Que componentes tem de usar?
Os componentes que tem de usar dependem da sua configuração existente. A tabela seguinte apresenta um resumo de alto nível de algumas configurações possíveis para uma aplicação que é executada numa ou várias instâncias. Mais adiante neste tutorial, vai rever a configuração existente para determinar que configurações tem de usar.
Tem dados ou configurações com estado nos discos de arranque que tem de manter? | Como é iniciada a sua aplicação? | |
---|---|---|
A aplicação está configurada num disco de arranque existente | A aplicação está configurada com um script de arranque | |
Não: os discos de arranque não têm estado |
|
|
Sim: pelo menos um disco de arranque tem estado |
|
|
Reveja a configuração existente
Reveja as instâncias autónomas existentes para inspecionar o tipo de máquina, os discos e os metadados de cada instância.
Use o comando
instances describe
para cada uma das suas instâncias.
gcloud compute instances describe INSTANCE_NAME
Responda às seguintes perguntas para se preparar para os passos subsequentes neste guia.
Perguntas | Implicações |
---|---|
Propriedades da VM | |
Qual é o tipo de máquina que quer usar para o seu grupo? | Especifique este tipo de máquina no modelo de instância do MIG. |
Como é iniciada a sua aplicação: está pré-configurada num disco de arranque ou é instalada, configurada e iniciada por um script de arranque? | Se a sua aplicação estiver pré-configurada num disco de arranque, crie uma imagem personalizada
e, em seguida, especifique essa imagem no modelo de instância do MIG. Se a sua aplicação for iniciada por um script de arranque, especifique esse script de arranque no modelo de instância do MIG. Se a sua aplicação exigir uma imagem de disco de arranque personalizada e um script de arranque, especifique ambos no modelo de instância. |
Quer preservar os nomes das instâncias existentes? | Tem de eliminar as instâncias autónomas existentes para libertar os nomes das instâncias. Se os discos de arranque permanecerem sem estado e quiser usar atualizações progressivas automáticas no seu MIG, reveja a documentação sobre preservar nomes de instâncias. |
Itens com estado | |
Para cada instância, existem metadados específicos da instância que tem de preservar? | Especifique metadados específicos da instância através de configurações por instância. |
Os seus discos de arranque são com estado? Por outras palavras, existem dados que residam em qualquer disco de arranque cujo estado tenha de preservar? | Se precisar de preservar o estado dos seus discos de arranque, não pode
atualizar o sistema operativo nem o software implementando atualizações de imagens de disco de arranque.
|
Todas as instâncias têm os mesmos tipos de discos? Por exemplo, têm todos um disco de dados? Ou têm e requerem configurações de disco exclusivas? | Se todas as instâncias tiverem uma configuração de disco comum, defina esses nomes de dispositivos comuns no modelo de instância, por exemplo, "data-disk". Isto permite-lhe usar uma política com estado para declarar esses discos como com estado no seu MIG, com menos sobrecarga do que as configurações por instância. |
Se aumentar o grupo, o tamanho dos discos atuais é suficiente? | Especifique os tamanhos de disco necessários no modelo de instância. As novas instâncias recebem os discos que especificar, desde que esses discos não sejam redefinidos numa política com estado ou em configurações por instância. |
Este guia começa por criar configurações por instância para discos com estado existentes. No entanto, pode converter essas configurações numa política com estado mais tarde, desde que os discos tenham nomes de dispositivos comuns que declare no modelo de instância do grupo.
Exemplo de configuração
Este guia usa o seguinte exemplo básico para ilustrar os passos de migração. Suponhamos que tem uma aplicação com estado em execução em três VMs do Compute Engine autónomas. Suponha as seguintes especificações de VM:
- Cada MV tem o mesmo tipo de máquina.
- Cada VM existe no mesmo projeto e zona.
- O disco de arranque de cada VM tem a mesma aplicação, que está configurada no disco de arranque para ser iniciada quando a VM é iniciada.
- O disco de arranque de cada VM não contém outros dados nem configurações que tenha de preservar.
- Cada VM tem um disco persistente secundário com dados com estado, ou seja, dados para os quais tem de manter o estado atual.
Edite os valores abaixo para utilização ao longo deste tutorial.
- Machine type: n2-standard-2 - Project: my-project - Zone: europe-west1-c - Name of one of the VMs to migrate: my-instance-1
Crie uma imagem personalizada
Se a sua aplicação ou qualquer um dos respetivos requisitos já estiver configurado num disco de arranque existente, crie uma imagem personalizada que possa reutilizar. Em alternativa, se a sua aplicação for instalada, configurada e iniciada apenas através de um script de arranque, ignore este passo e avance para Criar um modelo de instância.
No cenário de exemplo abordado anteriormente, o disco de arranque de cada VM autónoma existente contém a aplicação configurada. Assim, pode seguir os passos para criar uma imagem personalizada com base em qualquer uma dessas VMs.
Parar uma das instâncias.
gcloud compute instances stop my-instance-1
Determine a origem do disco descrevendo a instância.
gcloud compute instances describe my-instance-1
O resultado é semelhante ao seguinte:
... disks: – autoDelete: true boot: true ... source: https://www.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-c/disks/my-instance-1 ...
Localize o campo
source
na saída e tome nota do URL completo do disco de arranque nesse campo.Use o comando
images create
para preparar uma imagem personalizada que use a mesma origem.gcloud compute images create my-boot-image \ --source-disk=https://www.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-c/disks/my-instance-1
O resultado é semelhante ao seguinte:
Created [https://www.googleapis.com/compute/v1/projects/my-project/global/images/my-boot-image].
Crie um modelo de instância
Um modelo de instância é um recurso imutável do Compute Engine que armazena a configuração da VM. Depois de criar um modelo, não o pode atualizar. Se precisar de alterá-lo mais tarde, crie um novo modelo e, em seguida, implemente-o no grupo.
Siga os passos em Criar um novo modelo de instância, usando as seguintes definições.
Tipo de máquina: especifique um tipo de máquina adequado a todas as suas instâncias existentes.
Script de arranque: se iniciar a aplicação através de um script de arranque, especifique esse script.
Disco de arranque:
- Imagem: especifique uma imagem de disco de arranque comum para todas as VMs no MIG. Por exemplo, se criou uma imagem personalizada com base no disco de arranque de uma VM existente, especifique-o. Se precisar de usar um disco de arranque existente para uma VM específica, pode especificar explicitamente o disco de arranque para essa VM com uma configuração por instância quando converter essa VM numa instância gerida, conforme explicado mais adiante neste documento.
- Nome do dispositivo: especifique um nome do dispositivo que reflita a finalidade do disco, por exemplo,
boot-disk
. Isto permite-lhe configurar uma única política com estado para preservar todos os discos no MIG com esse nome de dispositivo. - Tamanho: especifique um tamanho do disco de arranque suficiente para as instâncias existentes, bem como para as futuras, caso queira adicionar alguma.
Discos adicionais: por predefinição, quando adiciona instâncias ao MIG, o MIG cria discos com base no modelo. Tenha em atenção que um modelo de instância não suporta a configuração de discos regionais, mas pode configurar discos regionais mais tarde através de configurações por instância.
- Nome do dispositivo: para cada disco, especifique um nome do dispositivo que reflita a finalidade do disco, por exemplo,
data-disk
. - Tamanho: especifique um tamanho do disco suficiente para instâncias futuras, caso adicione alguma.
- Nome do dispositivo: para cada disco, especifique um nome do dispositivo que reflita a finalidade do disco, por exemplo,
Para efeitos desta migração, a especificação mais importante para cada disco adicional é o nome do dispositivo, que vai usar como chave para especificar que discos têm estado. Ter um nome de dispositivo comum para discos semelhantes permite-lhe usar uma política com estado comum para preservar todos esses discos no MIG. A especificação do tamanho ou da imagem para discos adicionais no modelo de instância só é usada para criar novos discos para novas instâncias que possa criar além das que está a migrar. Quando migra instâncias existentes, preserva os discos de dados existentes desanexando-os das instâncias originais e, em seguida, anexando novamente esses mesmos discos às novas instâncias geridas, conforme explicado mais adiante neste documento.
O seguinte
instance-templates create
comando
cria um modelo para o cenário de exemplo. O comando inclui uma flag --image
que aponta para a imagem de arranque personalizada criada anteriormente, bem como um
disco de dados adicional.
gcloud compute instance-templates create my-instance-template \ --machine-type=n2-standard-2 \ --image=https://www.googleapis.com/compute/v1/projects/my-project/global/images/my-boot-image \ --boot-disk-device-name=boot-disk \ --create-disk=mode=rw,size=100,type=pd-standard,device-name=data-disk
O resultado é semelhante ao seguinte:
Created [https://www.googleapis.com/compute/v1/projects/my-project/global/instanceTemplates/my-instance-template]. NAME MACHINE_TYPE PREEMPTIBLE CREATION_TIMESTAMP my-instance-template n2-standard-2 2021-04-27T11:02:07.552-07:00
Anote o URL do modelo, que pode encontrar na primeira linha do resultado.
Crie um grupo de instâncias geridas
O passo seguinte é criar um grupo de instâncias geridas (MIG). Para criar um MIG de zona única, siga as instruções para criar um MIG numa única zona. Em alternativa, se quiser proteger-se contra falhas zonais através de um GIG regional, siga as instruções para criar um GIG com VMs em várias zonas numa região.
Quando criar o seu MIG, inclua as seguintes especificações:
- Defina o tamanho do grupo como
0
. Adiciona instâncias mais tarde. - Se estiver a criar um MIG regional, defina o tipo de redistribuição de instâncias como
NONE
para que o MIG não redistribua automaticamente as instâncias entre zonas.
O seguinte
instance-groups managed create
comando
cria um MIG zonal para a configuração de exemplo descrita anteriormente. Para criar um MIG regional, substitua --zone=ZONE
por --region=REGION
.
gcloud compute instance-groups managed create my-mig \ --size=0 \ --template=https://www.googleapis.com/compute/v1/projects/my-project/global/instanceTemplates/my-instance-template \ --zone=europe-west1-c
O resultado é semelhante ao seguinte:
Created [https://www.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-c/instanceGroupManagers/my-mig]. NAME LOCATION SCOPE BASE_INSTANCE_NAME SIZE TARGET_SIZE INSTANCE_TEMPLATE AUTOSCALED my-mig europe-west1-c zone my-mig 0 0 my-instance-template no
Depois de criar esse recurso, pode usá-lo para interagir com o MIG, por exemplo, para definir políticas no grupo e adicionar ou remover instâncias do grupo.
Converta VMs existentes em instâncias geridas
Para cada uma das suas VMs não geridas existentes, use o seguinte procedimento para a transformar numa instância gerida no seu MIG. Este procedimento migra os discos existentes para as novas instâncias geridas. Em alternativa, pode criar capturas de ecrã de discos existentes e, em seguida, criar discos com base nessas capturas de ecrã para utilização pelas instâncias geridas.
Descreva a VM existente.
gcloud compute instances describe my-instance-1
Tome nota dos itens que quer preservar da VM existente, que podem incluir o seguinte:
- Nome da instância
- Disco de arranque
- Discos secundários
- Metadados da instância
Pare a VM existente.
gcloud compute instances stop my-instance-1
Desassocie todos os discos com estado, incluindo o disco de arranque, se planear reutilizá-lo.
gcloud compute instances detach-disk my-instance-1 --disk=my-data-disk-1
Elimine a VM existente para poder criar outra com o mesmo nome. Se não quiser preservar os nomes das instâncias, pode eliminar a VM existente mais tarde para deixar de pagar por ela.
gcloud compute instances delete my-instance-1
Siga os passos para criar uma instância gerida.
- Pode reutilizar o nome da instância original se a tiver eliminado. Em alternativa, indique um novo nome.
Especifique discos com estado ou metadados que esta instância gerida requer. O MIG armazena estes itens específicos da instância numa configuração por instância:
Especifique um ou mais discos, como discos que foram separados da instância de VM original.
Especifique metadados da instância de VM original.
Por exemplo, o comando seguinte cria uma instância gerida com o mesmo nome que a VM original e reutiliza o disco de dados original. O disco de arranque da VM é criado a partir da imagem especificada no modelo de instância do grupo.
gcloud compute instance-groups managed create-instance my-mig \ --instance=my-instance-1 \ --stateful-metadata=role=primary \ --stateful-disk=device-name=data-disk,source=https://www.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-c/disks/my-data-disk-1 \ --zone=europe-west1-c
Se precisar de reutilizar um disco de arranque de uma VM antiga, use o mesmo comando com uma flag
--stateful-disk
adicional. Use o mesmo nome do dispositivo para o disco de arranque que especificou no modelo de instância, por exemplo:gcloud compute instance-groups managed create-instance my-mig \ --instance=my-instance-1 \ --stateful-metadata=role=secondary \ --stateful-disk=device-name=data-disk,source=https://www.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-c/disks/my-data-disk-1 \ --stateful-disk=device-name=boot-disk,source=https://www.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-c/disks/my-instance-1-boot-disk \ --zone=europe-west1-c
Repita os passos para cada uma das suas VMs não geridas existentes.
Se quiser ver as configurações resultantes por instância, execute o comando instance-configs list
.
gcloud compute instance-groups managed instance-configs list my-mig \ --zone=europe-west1-c
Para ver o
estado preservado
de uma instância, execute o comando
describe-instance
.
gcloud compute instance-groups managed describe-instance my-mig \ --instance=my-instance-1 \ --zone=europe-west1-c
Para mais informações, consulte o artigo Aplicar, ver e remover a configuração com estado em MIGs.
Configurar a autorreparação
Os MIGs reparam automaticamente as instâncias geridas que param de ser executadas. Para melhorar ainda mais a disponibilidade da sua aplicação e verificar se a aplicação está a responder, configure uma verificação de funcionamento baseada na aplicação e a autorrecuperação. Consulte a configuração de exemplo da verificação de saúde para ver comandos de exemplo.
Usar uma política com estado em vez de configurações por instância
Uma política com estado permite-lhe declarar discos que têm um nome de dispositivo comum como com estado no MIG. É mais fácil gerir uma única política com estado do que várias configurações por instância. Por exemplo, com uma política com estado, pode designar todos os discos com o nome do dispositivo data-disk
como tendo estado para todas as instâncias no MIG.
Se o MIG cumprir as seguintes condições, pode substituir as configurações por instância por uma política com estado:
- Todas as VMs têm o mesmo nome do dispositivo (por exemplo,
data-disk
) para discos com estado semelhantes. Este nome do dispositivo está definido no modelo de instância do MIG. - Nenhuma VM tem metadados com estado exclusivos especificados numa configuração por instância. Se tiver metadados com estado definidos numa configuração por instância, pode remover o disco da configuração por instância, mas tem de manter a configuração por instância para manter esses metadados com estado específicos da instância.
Siga os passos abaixo para substituir várias configurações por instância por uma política com estado único.
Configure discos com estado numa política com estado. Siga as instruções em Definir e atualizar a configuração com estado para discos num MIG existente.
Para o cenário de exemplo, use o seguinte comando. Declara que todos os discos no MIG que tenham um nome de dispositivo específico são preservados.
gcloud compute instance-groups managed update my-mig \ --stateful-disk=device-name=data-disk,auto-delete=never
Se precisar de preservar metadados específicos da instância, atualize a configuração por instância. Caso contrário, elimine a configuração por instância. Aplique a alteração de configuração imediatamente com a flag
--update-instance
. Por exemplo, para eliminar a configuração por instância, use o seguinte comando:gcloud compute instance-groups managed instance-configs delete my-mig \ --instances=my-instance-1 \ --update-instance
(Opcional.) Verifique se os itens com estado são agora armazenados no estado preservado da política (
preservedStateFromPolicy
) para cada instância gerida. Para mais informações, consulte o artigo Ver os estados preservados de instâncias geridas.
Adicionar mais VMs
Se precisar de adicionar VMs para expandir a sua aplicação, pode adicionar VMs adicionais aumentando o tamanho do MIG ou criando manualmente mais instâncias. O MIG cria todas as respetivas VMs, incluindo os respetivos discos persistentes, com base no modelo de instância do grupo. Se o grupo tiver uma política com estado, todos os itens que listar na política com estado são preservados durante o reinício, a recriação, a autocura e as operações de atualização para todas as instâncias novas e existentes no grupo. Se precisar de configurar discos com estado ou metadados apenas para VMs específicas no seu grupo, use configurações por instância.
O que se segue?
- Saiba mais sobre como trabalhar com instâncias geridas.
- Saiba como funcionam os MIGs com estado.