Migre uma carga de trabalho existente para um grupo de instâncias geridas com estado

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

  1. Compreenda os componentes que constituem um MIG com estado.
  2. Reveja a configuração existente para determinar as especificações comuns da VM.
  3. Opcionalmente, crie uma imagem personalizada para servir como uma imagem de disco de arranque comum.
  4. Crie um modelo de instância para especificar a configuração comum da VM para o MIG.
  5. Crie um MIG vazio.
  6. Converta as suas VMs existentes em instâncias geridas no GIG, incluindo configurações por instância.
  7. Configure a autocura para o MIG para melhorar a resiliência da sua aplicação.
  8. 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
  1. Use um modelo de instância com uma imagem personalizada
  2. Adicione configurações por instância (ou uma política com estado) para discos de dados com estado
  1. Use um modelo de instância com um script de arranque
  2. Adicione configurações por instância (ou uma política com estado) para discos de dados com estado
Sim: pelo menos um disco de arranque tem estado
  1. Use um modelo de instância com uma imagem personalizada
  2. Adicione configurações por instância (ou uma política com estado) para o arranque com estado e os discos de dados
  1. Use um modelo de instância com um script de arranque
  2. Adicione configurações por instância (ou uma política com estado) para o arranque com estado e os discos de dados

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.

  1. Parar uma das instâncias.

    gcloud compute instances stop my-instance-1
  2. 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.

  3. 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.

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 createcomando 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.

  1. 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
  2. Pare a VM existente.

    gcloud compute instances stop my-instance-1
    
  3. 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
    
  4. 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
    
  5. 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
    
  6. 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.

  1. 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
    
  2. 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
    
  3. (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?