Como configurar discos permanentes com estado em MIGs


Configurar discos permanentes como "com estado" permite que você aproveite a recuperação automática da instância de VM e as atualizações automatizadas enquanto preserva o estado dos discos.

É possível configurar qualquer disco definido no modelo de instância como "com estado" para todas as instâncias em um grupo de instâncias gerenciadas (MIG), adicionando o nome de dispositivo desse disco à política com estado do MIG.

Também é possível configurar discos permanentes com estado individualmente para instâncias em um MIG definindo as configurações por instância. Esses discos não precisam ser definidos no modelo de instância.

Antes de começar

  • Avalie quando usar os MIGs com estado e veja como eles funcionam.
  • Configure a autenticação, caso ainda não tenha feito isso. A autenticação é o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud. Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no Compute Engine selecionando uma das seguintes opções:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. Terraform

      Para usar os exemplos do Terraform nesta página em um ambiente de desenvolvimento local, instale e inicialize a gcloud CLI e, em seguida, configure o Application Default Credentials com suas credenciais de usuário.

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

      Confira mais informações em Set up authentication for a local development environment.

      REST

      Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.

Limitações

Um MIG com discos com estado tem as seguintes limitações:

Um MIG com configuração com estado (um MIG com estado) tem as seguintes limitações:

  • Não é possível usar o escalonamento automático se o MIG tiver uma configuração com estado.
  • Se você quiser usar atualizações graduais automatizadas, defina o método de substituição como RECREATE.
  • Para MIGs regionais com estado, é necessário desativar a redistribuição proativa (defina o tipo de redistribuição como NONE) para evitar a exclusão de instâncias com estado causadas pela redistribuição automática entre zonas.
  • Se você usar uma configuração de todas as instâncias para substituir as propriedades do modelo de instância, não será possível especificar essas propriedades em nenhuma configuração por instância e ao mesmo tempo na configuração de todas as instâncias do grupo.

  • Um MIG regional com estado não orquestra automaticamente o failover entre zonas. Ao usar um MIG regional, é possível tornar o aplicativo com estado resiliente a falhas zonais. Para isso, implante réplicas redundantes em várias zonas e use a funcionalidade de replicação de dados do aplicativo.

Quando usar discos permanentes com estado

Use discos permanentes com estado para aproveitar a recuperação automática e as atualizações automatizadas da VM enquanto preserva os dados nos discos. Para mais informações, consulte os casos de uso de MIGs com estado.

Quando você configura discos com estado, eles são preservados por meio da recuperação automática, das atualizações e da recriação de instâncias de VM. No entanto, isso também significa que os discos com estado não podem ser recriados com base na imagem original nem atualizados para uma nova imagem.

Recomendamos manter os discos de inicialização sem estado.

Essa prática recomendada tem os seguintes benefícios:

  • É possível reparar um disco de inicialização que foi corrompido ao recriá-lo com base na imagem original dele. A recuperação automática faz esses reparos automaticamente.
  • É possível atualizar um disco de inicialização para a imagem mais recente com novas versões e patches de segurança.

Para mais informações, consulte como a recuperação automática e a atualização processam o estado preservado.

Como configurar discos permanentes com estado para todas as VMs em um MIG

Configure qualquer disco definido em um modelo de instância para ser com estado adicionando o nome de dispositivo desse disco à política com estado do MIG. O MIG trata os discos com esse nome de dispositivo como sendo com estado para todas as instâncias de VM atuais e futuras.

Como configurar discos com estado na criação do MIG

Console

  1. No Console do Google Cloud, acesse a página Grupos de instâncias.

    Acesse grupo de instâncias

  2. Selecione o projeto e clique em Continuar.

  3. Clique em Criar grupo de instâncias.

  4. Selecione Novo grupo gerenciado de instâncias (com estado).

  5. Especifique um Nome para o grupo de instâncias.

  6. Selecione um modelo de instância. Se nenhum modelo estiver disponível, crie um modelo de instância.

  7. Em Número de instâncias, especifique o número de instâncias do grupo.

  8. A seção Configuração com estado exibe os discos especificados no modelo da instância. Clique em um disco para editar a configuração com estado dele.

    1. Em Com estado, selecione Sim.
    2. Na lista suspensa Na exclusão permanente da instância, selecione a ação que será executada no disco com estado quando a instância de VM for excluída. As opções disponíveis são estas:

      • Remover disco: (padrão). Nunca exclua o disco. Remova-o quando a VM dele for excluída.
      • Exclua o disco: exclua o disco com estado quando a respectiva VM for excluída permanentemente do grupo de instâncias. Por exemplo, quando a instância gerenciada for excluída manualmente ou quando o tamanho do grupo for reduzido.
    3. Depois de concluir a configuração com estado, clique em Concluído.

  9. Clique em Criar.

gcloud

Para especificar os discos de um modelo de instância que precisam ser "com estado" na criação do MIG, use a sinalização --stateful-disk com o comando gcloud compute instance-groups managed create:

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template INSTANCE_TEMPLATE \
    --size SIZE \
    --stateful-disk device-name=DEVICE_NAME[,auto-delete=DELETE_RULE]

Substitua:

  • INSTANCE_GROUP_NAME: o nome do grupo de instâncias gerenciadas que será criado;
  • INSTANCE_TEMPLATE: o nome do modelo de instância que será usado ao criar instâncias;
  • SIZE: o número inicial de VMs que você precisa nesse grupo;
  • DEVICE_NAME: o nome de dispositivo de um disco especificado no modelo de instância;
  • DELETE_RULE: um valor que determina o que precisa acontecer em um disco com estado quando uma VM é excluída. As opções disponíveis são estas:

    • never: padrão. Nunca exclua o disco. Em vez disso, remova-o quando a VM dele for excluída.
    • on-permanent-instance-deletion: exclua o disco quando a respectiva instância de VM for excluída permanentemente do grupo. Por exemplo, quando a instância gerenciada for excluída manualmente ou quando o tamanho do grupo for reduzido.

    Seja qual for o valor da regra de exclusão, os discos com estado sempre serão preservados nas operações de recuperação automática, atualização e recriação da VM.

Exemplo

Para implantar um banco de dados com 12 fragmentos, cada um com um disco de inicialização sem estado, que contém os binários do sistema operacional e do banco de dados, e cada uma com um disco de dados com estado. siga estas etapas:

  1. Crie um modelo de instância com um disco de inicialização sem estado com base na imagem img-example-db-v01, que tem um SO e um banco de dados pré-instalados, e com um disco de dados com estado:

    gcloud compute instance-templates create example-database-template-v01 \
        --image img-example-db-v01 \
        --create-disk device-name=data-disk,mode=rw,image=empty10GBext4
    

    A sinalização --create-disk instrui o MIG a:

    1. criar um novo disco de 10 GB para cada instância de VM com base em uma imagem ext4 vazia, preparada previamente;
    2. anexar o disco à respectiva VM no modo de leitura/gravação usando o nome de dispositivo data-disk;
  2. criar um MIG com base no modelo de instância e definir o disco de dados como sendo "com estado":

    gcloud compute instance-groups managed create example-database-group \
      --template example-database-template-v01 \
      --base-instance-name shard \
      --size 12 \
      --stateful-disk device-name=data-disk,auto-delete=on-permanent-instance-deletion
    

    O nome de dispositivo data-disk é retirado do modelo de instância. O disco de dados é configurado para ser excluído com a instância de VM quando ela é excluída permanentemente, seja por exclusão manual da instância ou por redução manual do tamanho do grupo. O disco de dados é preservado na recuperação automática, nas atualizações e na recriação de VMs.

  3. Verifique se o disco de dados está configurado na política com estado:

    gcloud compute instance-groups managed describe example-database-group
    
    
    baseInstanceName: shard
    ...
    name: example-database-group
    ...
    statefulPolicy:
      preservedState:
        disks:
          data-disk:
            autoDelete: ON_PERMANENT_INSTANCE_DELETION
    ...
    

    Veja que a política com estado declara os discos com o nome de dispositivo data-disk como sendo "com estado", com uma regra para excluir esses discos na exclusão permanente da VM.

Terraform

Se você ainda não criou um modelo de instância, que especifica o tipo de máquina, a imagem do disco de inicialização, a rede e outras propriedades de VM que você quer para cada VM no MIG, crie um modelo de instância.

O exemplo a seguir cria um MIG zonal com um disco com estado. Para especificar qual disco do modelo de instância precisa ser "com estado" na criação do MIG, inclua o bloco stateful_disk. Para mais informações sobre o recurso usado na amostra, consulte Recurso google_compute_instance_group_manager. Para criar um MIG regional, use o recurso google_compute_region_instance_group_manager.

resource "google_compute_instance_group_manager" "default" {
  name               = "example-database-group"
  base_instance_name = "shard"
  target_size        = 12
  zone               = "us-central1-f"
  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
  stateful_disk {
    device_name = "data-disk"
    delete_rule = "ON_PERMANENT_INSTANCE_DELETION"
  }
}

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

REST

Para especificar os discos do modelo de instância que precisam ser "com estado" na criação do MIG, inclua-os no campo statefulPolicy no corpo da solicitação do método instanceGroupManagers.insert:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instanceGroupManagers

{
  "name": "NAME",
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/TEMPLATE"
    }
  ],
  "targetSize": SIZE,
  "statefulPolicy": {
    "preservedState": {
      "disks": {
        "DEVICE_NAME": {"autoDelete": "DELETE_RULE" },
        "DEVICE_NAME": {"autoDelete": "DELETE_RULE" }
      }
    }
  }
}

Substitua:

  • PROJECT: o ID do projeto para a solicitação.
  • ZONE: a zona onde o MIG está localizado, aplicável a um MIG zonal.
    • zones/ZONE por regions/REGION e especifique a região do MIG se ele for regional;
  • NAME: o nome do MIG que será criado;
  • TEMPLATE: o nome do modelo de instância que será usado ao criar instâncias;
  • SIZE: o número inicial de instâncias necessárias nesse grupo;
  • DEVICE_NAME: o nome de dispositivo de um disco especificado no modelo de instância;
  • DELETE_RULE: um valor que determina o que precisa acontecer no disco com estado quando a instância de VM é excluída. As opções disponíveis são estas:

    • never: padrão. Nunca exclua o disco. Remova-o quando a VM dele for excluída.
    • on_permanent_instance_deletion: exclua o disco com estado quando a respectiva VM for excluída permanentemente do grupo de instâncias. Por exemplo, quando a instância gerenciada for excluída manualmente ou o tamanho do grupo for reduzido.

Exemplo

Para implantar um banco de dados com 12 fragmentos, cada um com um disco de inicialização sem estado, que contém os binários do sistema operacional e do banco de dados, e cada uma com um disco de dados com estado. siga estas etapas:

  1. Crie um modelo de instância com um disco de inicialização sem estado com base na imagem img-example-db-v01, que tem o SO e o banco de dados pré-instalados, e com um disco de dados com estado usando o método instanceTemplates.insert:

    POST https://compute.googleapis.com/compute/v1/projects/example-project/global/instanceTemplates
    
    {
      "name": "example-database-template-v01",
      "properties": {
        "machineType":"e2-standard-2",
        "disks": [
          {
            "boot": true,
            "deviceName": "boot-disk",
            "initializeParams": {
              "sourceImage": "projects/example-project/global/images/mg-example-db-v01"
            }
          },
          {
            "deviceName": "data-disk",
            "mode": "READ_WRITE",
            "initializeParams": {
              "sourceImage": "projects/example-project/global/images/empty10GBext4"
            }
          }
        ],
        "networkInterfaces": [
          {
            "network": "global/networks/default"
          }
        ]
      }
    }
    

    O disco de dados no modelo de instância tem o nome de dispositivo data-disk e está configurado para ser criado com base em uma imagem ext4 vazia, preparada previamente, e para ser anexado no modo de leitura/gravação.

  2. Crie um MIG com base no modelo de instância e defina o disco de dados como "com estado" usando o método instanceGroupManagers.insert:

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers
    
    {
      "name": "example-database-group",
      "baseInstanceName": "shard",
      "versions": [
        {
          "instanceTemplate": "global/instanceTemplates/example-database-template-v01"
        }
      ],
      "targetSize": 12,
      "statefulPolicy": {
        "preservedState": {
          "disks": {
            "data-disk": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" }
          }
        }
      }
    }
    

    O MIG cria 12 instâncias, cada uma com um disco que tem as propriedades a seguir:

    • O nome de dispositivo data-disk retirado do modelo de instância.
    • Uma regra de exclusão para excluir o disco de dados quando a VM é excluída, seja por exclusão manual da instância ou por redução manual do tamanho do grupo.
    • Uma entrada no estado preservado da política (preservedStateFromPolicy) de cada instância gerenciada para que o disco de dados seja preservado na recuperação automática, nas atualizações e na recriação de instâncias.
  3. Use o método instanceGroupManagers.get para verificar se o disco de dados está configurado na política com estado do novo recurso instanceGroupManagers:

    GET https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-database-group
    
    
    {
      "name": "example-database-group",
      "baseInstanceName": "shard",
      ...
      "statefulPolicy": {
        "preservedState": {
          "disks": {
            "data-disk": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" }
          }
        }
      }
      ...
    }
    

    é possível ver que a política com estado declara os discos com o nome de dispositivo data-disk como sendo "com estado" com a regra para excluir esses discos na exclusão permanente da instância.

Como definir e atualizar a configuração com estado para discos em um MIG atual

Se você executar um aplicativo com estado em um MIG sem estado, sem qualquer configuração com estado, será possível configurar os discos atuais definidos no modelo de instância para que sejam "com estado" em todas as instâncias nesse MIG. Isso permite preservar os discos nas operações de recriação, recuperação automática e atualização de instâncias e, opcionalmente, nas operações de exclusão.

É possível realizar as seguintes operações:

  • Adicionar os discos definidos no modelo de instância à política com estado de um MIG atual para declará-los como sendo "com estado". Essa ação marca os discos com o nome de dispositivo especificado como sendo "com estado" para todas as instâncias atuais e futuras no MIG.
  • Atualizar a política para alterar a configuração com estado dos discos.

O MIG aplica a configuração atualizada na política com estado a todas as instâncias de maneira automática e assíncrona. As atualizações nas configurações de disco em uma política com estado não interrompem a execução das VMs. Para mais informações, consulte Como aplicar atualizações de política com estado.

Para um MIG regional, é preciso desativar a redistribuição proativa de instâncias entre zonas antes de configurar discos com estado. Para mais informações, consulte Como os grupos regionais processam o estado preservado.

Console

  1. No Console do Google Cloud, acesse a página Grupos de instâncias.

    Acesse grupo de instâncias

  2. Clique no nome do grupo de instâncias em que você quer especificar a configuração com estado do disco.

  3. Clique em Editar para modificar o grupo gerenciado de instâncias.

  4. Em Configuração com estado, expanda o disco que você quer tornar com estado.

    1. Em Com estado, selecione Sim.
    2. Na lista suspensa Na exclusão permanente da instância, selecione a ação que será executada no disco com estado quando a instância de VM for excluída.

      • Remover disco: (padrão). Nunca exclua o disco. Remova-o quando a VM dele for excluída.
      • Exclua o disco: exclua o disco com estado quando a respectiva VM for excluída permanentemente do grupo de instâncias. Por exemplo, quando a instância gerenciada for excluída manualmente ou quando o tamanho do grupo for reduzido.

    3. Depois de atualizar a configuração com estado, clique em Concluído.

  5. Clique em Salvar para concluir a atualização.

gcloud

Para especificar os discos do modelo de instância que precisam ser "com estado" ou para atualizar a configuração do disco com estado de um MIG, use uma ou várias sinalizações --stateful-disk com o comando gcloud compute instance-groups managed update:

gcloud compute instance-groups managed update NAME \
  --stateful-disk device-name=DEVICE_NAME[,auto-delete=DELETE_RULE]

Substitua:

  • NAME: o nome do grupo de instâncias gerenciadas que será atualizado;
  • DEVICE_NAME: o nome de dispositivo de um disco especificado no modelo de instância;
  • DELETE_RULE: um valor que determina o que precisa acontecer no disco com estado quando uma instância de VM é excluída. As opções disponíveis são estas:

    • never: padrão. Nunca exclua o disco. Remova-o quando a VM dele for excluída.
    • on-permanent-instance-deletion: exclua o disco com estado quando a instância for excluída permanentemente do grupo. Por exemplo, quando a instância gerenciada for excluída manualmente ou quando o tamanho do grupo for reduzido.

Se um nome de dispositivo especificado já estiver configurado na política com estado, o comando atualizará a configuração.

Exemplo

Você executa um banco de dados com vários fragmentos em um MIG chamado example-database- group. Cada VM no MIG armazena um fragmento em um disco extra com o nome de dispositivo data-disk, que é definido pelo modelo de instância. O MIG não tem configuração com estado, e você quer preservar os discos de dados na recriação, na recuperação automática e nas atualizações de instância. Você também quer proteger os discos de dados contra exclusão quando uma VM é excluída.

  1. Atualize o MIG para definir o disco de dados como sendo "com estado" executando o comando a seguir:

    gcloud compute instance-groups managed update example-database-group \
      --stateful-disk device-name=data-disk,auto-delete=never
    

    Como resultado, o MIG aplica as atualizações de configuração da política com estado aos discos de dados de todas as instâncias de maneira automática e assíncrona. Os discos de dados agora são preservados na recuperação automática, nas atualizações e na recriação de instâncias. Além disso, eles são removidos na exclusão da instância porque a regra auto-delete está definida como never.

  2. Verifique se o disco de dados está configurado na política com estado executando o comando gcloud compute instance-groups managed describe example-database-group.

REST

Para especificar os discos do modelo de instância que precisam ser "com estado" ou para atualizar a configuração do disco com estado de um MIG atual, configure os discos na política com estado do MIG usando o método instanceGroupManagers.patch:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instanceGroupManagers/NAME

{
  "statefulPolicy": {
    "preservedState": {
      "disks": {
        "DEVICE_NAME": {"autoDelete": "DELETE_RULE" },
        "DEVICE_NAME": {"autoDelete": "DELETE_RULE" }
      }
    }
  }
}

Substitua:

  • PROJECT: o ID do projeto para a solicitação.
  • ZONE: a zona onde o MIG está localizado, aplicável a um MIG zonal.
    • zones/ZONE por regions/REGION e especifique a região do MIG se ele for regional;
  • NAME: o nome do MIG que será atualizado;
  • DEVICE_NAME: o nome de dispositivo de um disco, especificado no modelo de instância, em que você quer atualizar a configuração com estado;
  • DELETE_RULE: um valor que determina o que precisa acontecer no disco com estado quando uma instância de VM é excluída. As opções disponíveis são estas:

    • never: padrão. Nunca exclua o disco. Remova-o quando a VM dele for excluída.
    • on-permanent-instance-deletion: exclua o disco com estado quando a instância for excluída permanentemente do grupo de instâncias. Por exemplo, quando a instância for excluída manualmente ou quando o tamanho do grupo for reduzido.

Se o nome de dispositivo especificado já estiver configurado na política com estado, o método patch atualizará a configuração.

Exemplo

Você executa um banco de dados com vários fragmentos em um MIG chamado example-database- group. Cada VM no MIG armazena um fragmento em um disco extra com o nome de dispositivo data-disk, que é definido pelo modelo de instância. O MIG não tem configuração com estado, e você quer preservar os discos de dados na recriação, na recuperação automática e nas atualizações de instância. Você também quer proteger os discos de dados contra exclusão quando uma VM é excluída.

  1. Corrija o MIG para definir o disco de dados como sendo "com estado":

    PATCH https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-database-group
    
    {
      "statefulPolicy": {
        "preservedState": {
          "disks": {
            "data-disk": {"autoDelete": "NEVER" }
          }
        }
      }
    }
    

    O MIG aplica essa configuração com estado aos discos de dados de todas as instâncias de maneira automática e assíncrona. Os discos de dados serão preservados na recuperação automática, nas atualizações e na recriação de instâncias. Os discos de dados serão removidos na exclusão da instância porque a regra autoDelete está definida como NEVER.

  2. Veja o recurso instanceGroupManagers retornado pelo método instanceGroupManagers.get para verificar se o disco de dados está configurado na política com estado.

Como declarar discos permanentes com estado como sem estado

Talvez seja necessário configurar um disco com estado para ser considerado como "sem estado". Exemplo:

  • Se você reformular o aplicativo para remover o estado do disco.
  • Se você configurou o disco como sendo "com estado" por engano e quer revertê-lo.

Para declarar todos os discos com um determinado nome de dispositivo como "sem estado", remova a configuração do disco da política com estado.

O MIG aplica a alteração na política com estado a todas as instâncias de maneira automática e assíncrona. As atualizações na configuração do disco em uma política com estado não interrompem a execução das instâncias de VM.

Para mais informações, consulte Como aplicar atualizações de política com estado.

Console

  1. No Console do Google Cloud, acesse a página Grupos de instâncias.

    Acesse grupo de instâncias

  2. Clique no nome do grupo de instâncias do qual você quer remover a configuração com estado dos discos.

  3. Clique em Editar para modificar o grupo gerenciado de instâncias.

  4. Em Configuração com estado, expanda os discos com estado que você quer tornar sem estado.

    1. Altere a opção Com estado para Não.
    2. Clique em Concluído.
  5. Depois de fazer as alterações, clique em Salvar.

gcloud

Para especificar os discos de uma política com estado do MIG que precisam ser "sem estado", use a sinalização --remove-stateful-disks com o comando gcloud compute instance-groups managed update:

gcloud compute instance-groups managed update NAME \
  --remove-stateful-disks DEVICE_NAME[,DEVICE_NAME,...]

Substitua:

  • NAME: o nome do MIG que será atualizado;
  • DEVICE_NAME: o nome de dispositivo de um disco que será removido da política com estado e será tratado como "sem estado". É possível inserir um ou vários nomes de dispositivo na lista.

Exemplo

Você executa um aplicativo legado com vários nós em um MIG chamado example-legacy-group. Cada VM no MIG armazena os dados do aplicativo em um disco de inicialização com o nome de dispositivo boot-disk, que você configurou como "com estado" na política com estado do MIG. Você moveu os dados do aplicativo para um disco extra e agora quer tornar o disco de inicialização sem estado a fim de facilitar a atualização para as novas imagens.

Para remover a configuração com estado do disco de inicialização, atualize o grupo de instâncias gerenciadas:

gcloud compute instance-groups managed update example-legacy-group \
  --remove-stateful-disks boot-disk

O MIG remove a configuração com estado do nome de dispositivo boot-disk de maneira automática e assíncrona dos discos de inicialização de todas as instâncias no grupo. Os discos de inicialização permanecem anexados às instâncias, mas não são mais "com estado". Quando você recria ou atualiza as instâncias ou quando as instâncias são recuperadas automaticamente, o MIG recria os discos de inicialização com base na imagem especificada no modelo de instância.

REST

Para especificar os discos de uma política com estado do MIG que se tornarão sem estado, remova a configuração de cada disco da política com estado do MIG usando o método instanceGroupManagers.patch:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instanceGroupManagers/NAME

{
  "statefulPolicy": {
    "preservedState": {
      "disks": {
        "DEVICE_NAME": null,
        ...
      }
    }
  }
}

Substitua:

  • PROJECT: o ID do projeto para a solicitação.
  • ZONE: a zona onde o MIG está localizado, aplicável a um MIG zonal.
    • zones/ZONE por regions/REGION e especifique a região do MIG se ele for regional;
  • NAME: o nome do MIG que será atualizado;
  • DEVICE_NAME: o nome de dispositivo de um disco que você quer remover da política com estado. Um valor null faz com que a configuração com estado desse disco seja removida. É possível inserir um ou vários nomes de dispositivo para remoção.

Exemplo

Você executa um aplicativo legado com vários nós em um MIG chamado example-legacy-group. Cada VM no MIG armazena os dados do aplicativo em um disco de inicialização com o nome de dispositivo boot-disk, que você configurou como sendo "com estado" na política com estado do MIG. Você moveu os dados do aplicativo para um disco extra e agora quer tornar o disco de inicialização sem estado a fim de facilitar a atualização para as novas imagens.

Para remover a configuração com estado do disco de inicialização, corrija o grupo de instâncias gerenciadas:

PATCH https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-legacy-group

{
  "statefulPolicy": {
    "preservedState": {
      "disks": {
        "boot-disk": null
      }
    }
  }
}

O MIG remove a configuração com estado do nome de dispositivo boot-disk de maneira automática e assíncrona dos discos de inicialização de todas as instâncias no grupo. Os discos de inicialização permanecem anexados às instâncias, mas não são mais "com estado". Quando você recria ou atualiza as instâncias ou quando as instâncias são recuperadas automaticamente, o MIG recria os discos de inicialização com base na imagem especificada no modelo de instância.

Como remover discos permanentes com estado de um MIG

Talvez seja necessário remover completamente um disco com estado das instâncias em um MIG, por exemplo, se você reformulou o aplicativo e removeu o estado desse disco.

Os MIGs não permitem a remoção de discos com estado. Portanto, siga estas etapas:

  1. Remova a configuração com estado do disco da política com estado. Isso torna os discos com o nome de dispositivo especificado "sem estado".
  2. Remova os discos das VMs, se você ainda quiser mantê-los.
  3. Implemente um novo modelo de instância que não defina mais o disco com o nome de dispositivo especificado.

Como configurar discos permanentes com estado individualmente para uma VM em um MIG

Para configurar discos permanentes com estado para uma VM específica em um MIG, adicione o nome de dispositivo do disco à configuração por instância dessa VM. Atualize a VM para aplicar a configuração por instância e torná-la eficaz.

A configuração individual de discos permanentes com estado para VMs específicas em um MIG será útil se você precisar:

  • migrar as cargas de trabalho atuais (mover os discos atuais) de VMs autônomas para MIGs com estado a fim de aproveitar a recuperação automática e as atualizações fáceis;
  • restaurar backups de discos configurados individualmente para as VMs;
  • anexar temporariamente discos com estado extras a uma VM específica para testar, depurar ou copiar dados.

Como adicionar discos com estado atuais a novas VMs em um MIG

É possível adicionar discos com estado atuais a novas instâncias criadas manualmente em um MIG. Isso é útil para migrar um aplicativo com estado das VMs independentes atuais para um MIG com estado. Por exemplo:

  1. Crie um modelo de instância com configuração comum para todas as instâncias de VM.
  2. Remover os discos de dados das instâncias independentes e excluí-las. Também é possível remover os discos de inicialização se o estado deles precisar ser preservado.
  3. Crie um MIG vazio usando o modelo de instância criado anteriormente.
  4. Criar instâncias no MIG com os nomes e os discos associados apropriados da etapa anterior. O MIG responde à sua solicitação com as ações a seguir:

    1. Cria uma VM com base no modelo usando o nome da instância fornecido.
      • Um MIG regional cria a VM na mesma zona em que o disco está localizado. Se o disco for regional, o MIG regional criará a VM em qualquer uma das zonas de réplica do disco.
    2. Cria uma configuração por instância com a configuração com estado fornecida para os discos.
    3. Anexa os discos à nova instância.

Adicione os discos com estado ao criar manualmente as instâncias específicas em um MIG usando a CLI gcloud ou a API. O MIG aplica imediatamente a configuração na criação da VM.

gcloud

Para criar uma VM com um nome personalizado e anexar um ou mais discos com estado atuais a ela, use o comando gcloud compute instance-groups managed create-instance com uma ou várias sinalizações --stateful-disk.

gcloud compute instance-groups managed create-instance NAME \
  --instance VM_NAME \
  [--zone ZONE | --region REGION] \
  --stateful-disk device-name=DEVICE_NAME,source=DISK[,mode=MODE][,auto-delete=DELETE_RULE]

Substitua:

  • NAME: o nome do MIG em que você precisa criar uma instância;
  • VM_NAME: o nome da nova instância que será criada;
  • ZONE: a zona em que o MIG está localizado, aplicável a um MIG zonal;
  • REGION: a região em que o MIG está localizado, aplicável a um MIG regional;
  • DEVICE_NAME: o nome de dispositivo que será usado ao anexar o disco;
  • DISK: o URI de um disco permanente que será anexado ao DEVICE_NAME especificado no formato projects/project-id/zones/zone/disks/disk-name para um disco por zona e projects/project-id/regions/region/disks/disk-name para um disco regional;
  • MODE: especifica o modo do disco. As opções aceitas são estas:
    • ro: somente leitura.
    • rw: padrão. Leitura/gravação
  • DELETE_RULE: um valor que determina o que precisa acontecer em um disco com estado quando uma instância de VM é excluída. As opções disponíveis são estas:

    • never: padrão. Nunca exclua o disco. Em vez disso, remova-o quando a instância dele for excluída.
    • on-permanent-instance-deletion: exclua o disco com estado quando a instância for excluída permanentemente do grupo de instâncias. Por exemplo, quando a instância for excluída manualmente ou quando o tamanho do grupo for reduzido.

    Seja qual for o valor da regra de exclusão, os discos com estado sempre serão preservados nas operações de recuperação automática, atualização e recriação de instâncias.

Exemplo

Você quer ter a recuperação automática em um servidor de banco de dados executado em uma VM autônoma chamada db-instance e que armazena os dados em um disco chamado db-data-disk-1.

Crie um MIG com estado que tenha a recuperação automática, crie uma VM semelhante dentro do MIG e anexe o disco de dados atual db-data-disk-1 à nova instância como um disco com estado:

  1. Pare a VM, db-instance, durante uma janela de manutenção.
  2. Crie um modelo de instância chamado db-template usando a configuração db-instance.
  3. Remova db-data-disk-1 de db-instance e exclua db-instance.
  4. Crie um MIG vazio, example-database-mig, de db-template e configure a recuperação automática.
  5. Crie uma instância gerenciada com o nome db-instance original e anexe db-data-disk-1 como um disco com estado:

    gcloud compute instance-groups managed create-instance example-database-mig \
      --instance db-instance \
      --zone us-east1-c \
      --stateful-disk device-name=data-disk,source=projects/example-project/zones/us-east1-c/disks/db-data-disk-1,auto-delete=never
    

    O comando cria uma instância db-instance no MIG, gera uma configuração por instância correspondente com o disco com estado db-data-disk-1 e anexa-o à nova VM usando data-disk como o nome do dispositivo.

REST

Para criar uma ou várias instâncias em um MIG, defina nomes de VM personalizados e anexe um ou vários discos com estado a essas instâncias. Para isso, use o método instanceGroupManagers.createInstances.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/createInstances

{
  "instances": [
    {
      "name": "VM_NAME",
      "preservedState" : {
        "disks": {
          "DEVICE_NAME" : {
            "source": "DISK",
            "mode": "MODE",
            "autoDelete": "DELETE_RULE"
          },
          ...
        }
      }
    },
    ...
  ]
}

Substitua:

  • PROJECT_ID: o ID do projeto para a solicitação.
  • ZONE: a zona onde o MIG está localizado, aplicável a um MIG zonal.
    • zones/ZONE por regions/REGION e especifique a região do MIG se ele for regional;
  • NAME: o nome do MIG em que uma instância será criada;
  • VM_NAME: o nome da instância que será criada;
  • DEVICE_NAME: o nome de dispositivo que será usado ao anexar o disco;
  • DISK: o URI de um disco permanente atual a ser anexado ao DEVICE_NAME especificado no formato projects/project-id/zones/zone/disks/disk-name para um disco zonal ou projects/project-id/regions/region/disks/disk-name para um disco regional.
  • MODE: especifica o modo do disco. As opções aceitas são estas:
    • READ_ONLY: somente leitura.
    • READ_WRITE: padrão. Leitura/gravação
  • DELETE_RULE: um valor que determina o que precisa acontecer em um disco com estado quando uma VM é excluída. As opções disponíveis são estas:

    • never: padrão. Nunca exclua o disco. Em vez disso, remova-o quando a VM dele for excluída.
    • on-permanent-instance-deletion: exclua o disco com estado quando a instância for excluída permanentemente do grupo de instâncias. Por exemplo, quando a instância for excluída manualmente ou quando o tamanho do grupo for reduzido.

    Seja qual for o valor da regra de exclusão, os discos com estado sempre serão preservados nas operações de recuperação automática, atualização e recriação de instâncias.

Exemplo

Você quer ter a recuperação automática em um servidor de banco de dados executado em uma VM autônoma chamada db-instance e que armazena os dados em um disco chamado db-data-disk-1.

Crie um MIG com estado que tenha a recuperação automática, crie uma instância semelhante dentro do MIG e anexe o disco de dados atual db-data-disk-1 à nova VM como um disco com estado:

  1. Pare a VM, db-instance, durante uma janela de manutenção.
  2. Crie um modelo de instância chamado db-template usando a configuração db-instance.
  3. Remova db-data-disk-1 de db-instance e exclua db-instance.
  4. Crie um MIG vazio, example-database-mig, de db-template e configure a recuperação automática.
  5. Crie uma instância com o nome original db-instance e anexe o db-data-disk-1 como um disco com estado:

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-database-mig/createInstances
    
    {
      "instances": [
        {
          "name": "db-instance",
          "preservedState" : {
            "disks": {
              "data-disk" : {
                "source": "projects/example-project/zones/us-east1-c/disks/db-data-disk-1",
                "mode": "READ_WRITE",
                "autoDelete": "never"
              }
            }
          }
        }
      ]
    }
    

    O método cria uma instância db-instance no MIG, gera uma configuração por instância correspondente com o disco com estado db-data-disk-1 e anexa-o à nova instância usando data-disk como o nome de dispositivo.

Como adicionar, declarar e substituir discos com estado individualmente para VMs em um MIG

Configure discos com estado individualmente para uma instância gerenciada ao adicionar ou atualizar uma configuração de disco com estado na configuração por instância associada. Em seguida, atualize a instância para aplicar a configuração por instância à VM.

Configurar os discos com estado individualmente é útil para estas tarefas:

  • Adicionar um disco com estado de fora de um MIG a uma VM nesse MIG
  • Declarar um disco que antes era sem estado como com estado para uma VM em um MIG
  • Substituir um disco com estado por um disco diferente para uma VM em um MIG

Adicionar um disco com estado de fora de um MIG a uma VM nesse MIG. É possível anexar qualquer disco de fora de um MIG a uma instância gerenciada adicionando a configuração com estado do disco à configuração por instância associada. Depois de aplicar a config, o MIG anexará automaticamente o disco à instância e o tratará como "com estado".

Declarar um disco permanente que antes era sem estado como "com estado". É possível declarar um disco que antes era sem estado, atualmente anexado a uma VM, como "com estado" adicionando a configuração com estado para esse disco, incluindo o nome de dispositivo e o URI dele, à configuração por instância associada. Depois que você aplicar a config, o MIG começará a preservar o disco como "com estado".

Substituir um disco com estado por outro. A substituição de um disco com estado por outro pode ser útil, por exemplo, se você precisa acessar um backup recuperado. É possível trocar um disco com estado por outro atualizando o URI dele e mantendo o mesmo nome de dispositivo na configuração por instância. Depois que você aplicar a configuração por instância atualizada, o MIG removerá o disco antigo e anexará o novo usando o mesmo nome de dispositivo. Ao aplicar a atualização, escolha se quer manter, reiniciar ou recriar a instância. A troca de um disco de inicialização requer pelo menos uma reinicialização da VM.

gcloud

Para configurar discos com estado individualmente para uma VM em um MIG, adicione ou atualize a configuração do disco com estado na configuração por instância associada. Em seguida, atualize a instância para aplicar a configuração.

Se uma configuração por instância ainda não existir para a instância, use o comando gcloud compute instance-groups managed instance-configs create com uma ou várias sinalizações --stateful-disk:

gcloud compute instance-groups managed instance-configs create NAME \
--instance VM_NAME \
--stateful-disk device-name=DEVICE_NAME[,source=DISK][,mode=MODE][,auto-delete=DELETE_RULE] \
[--no-update-instance | --update-instance] \
[--instance-update-minimal-action MINIMAL_ACTION]

Se já houver uma configuração por instância, use o comando gcloud compute instance-groups managed instance-configs update com uma ou várias sinalizações --stateful-disk.

A sinalização --update-instance (padrão) aplica as alterações imediatamente à instância. Se você usar --no-update-instance, as alterações permanecerão não aplicadas e serão aplicadas na próxima vez que você recriar ou atualizar a instância.

gcloud compute instance-groups managed instance-configs update NAME \
--instance VM_NAME \
--stateful-disk device-name=DEVICE_NAME[,source=DISK][,mode=MODE][,auto-delete=DELETE_RULE] \
[--no-update-instance | --update-instance] \
[--instance-update-minimal-action MINIMAL_ACTION]

Substitua:

  • NAME: o nome do grupo de instâncias gerenciadas;
  • VM_NAME: o nome da instância de VM em que os discos com estado serão configurados;
  • DEVICE_NAME: o nome do dispositivo usado para anexar o disco;
  • DISK: o URI de um disco permanente atual a ser anexado ao DEVICE_NAME especificado no formato projects/project-id/zones/zone/disks/disk-name para um disco zonal e projects/project-id/regions/region/disks/disk-name para um disco regional;

    A subsinalização source=DISK é opcional se o dispositivo já estiver definido na configuração por instância da instância. Caso contrário, ela será obrigatória.

    Em caso de omissão, o URI do disco atualmente configurado permanecerá inalterado.

  • MODE: especifica o modo do disco. Será possível especificar mode apenas se você também especificar source. As opções compatíveis são:

    • ro: somente leitura
    • rw: padrão. Leitura/gravação

    Em caso de omissão, o valor padrão será definido na nova configuração de disco com estado. O valor permanece inalterado em uma configuração atual.

  • DELETE_RULE: um valor que determina o que precisa acontecer em um disco com estado quando uma VM é excluída. As opções disponíveis são estas:

    • never: padrão. Nunca exclua o disco. Em vez disso, remova-o quando a instância dele for excluída.
    • on-permanent-instance-deletion: exclua o disco com estado quando a instância for excluída permanentemente do grupo. Por exemplo, quando a instância for excluída manualmente ou quando o tamanho do grupo for reduzido.

    Em caso de omissão, o valor padrão será definido na nova configuração de disco com estado. O valor permanece inalterado em uma configuração atual.

    Seja qual for o valor da regra de exclusão, os discos com estado sempre serão preservados nas operações de recuperação automática, atualização e recriação de instâncias.

  • MINIMAL_ACTION: executa, pelo menos, a ação especificada ao aplicar a atualização da configuração por instância à instância. Use-a com a sinalização --update-instance. O valor precisa ser uma das opções a seguir:

    • none: nenhuma ação.
    • refresh: aplicar as atualizações possíveis sem parar a VM.
    • restart: interromper a VM e iniciá-la novamente.
    • replace: recriar a VM.

    Se omitida, a ação menos interruptiva exigida pela atualização será usada.

Exemplo

Os dados em um disco com estado anexado atualmente, data-disk-1, foram corrompidos e você quer restaurá-los com base no backup mais recente. Você criou um disco data-disk-2 com base em um snapshot para substituir o disco corrompido na instância db-instance-1, gerenciada por um MIG com estado example-database-mig. O disco original data-disk-1 foi anexado ao nome de dispositivo data-disk com uma regra de exclusão automática para nunca excluir o disco.

Para substituir data-disk-1 por data-disk-2, execute o comando a seguir:

gcloud compute instance-groups managed instance-configs update example-database-mig \
  --instance db-instance-1 \
  --stateful-disk device-name=data-disk,source=projects/example-project/zones/us-east1-c/disks/data-disk-2 \
  --update-instance \
  --instance-update-minimal-action restart

O comando faz o seguinte:

  1. Atualiza a configuração por instância para db-instance-1:
    1. Atualiza a origem do disco com o nome de dispositivo data-disk de data-disk-1 (última configuração) para data-disk-2 (nova configuração).
    2. Mantém a regra de exclusão automática para nunca excluir o disco porque o parâmetro auto-delete foi omitido na sinalização --stateful-disk e, por padrão, a regra de exclusão é never.
  2. Aplica a atualização da configuração por instância à VM db-instance-1 imediatamente, porque a sinalização --update-instance foi incluída. O MIG remove data-disk-1 e anexa data-disk-2 com o mesmo nome de dispositivo data-disk.
  3. Como a ação mínima está definida como restart, o MIG reinicia a instância db-instance-1 para atualizar a VM, o que ajuda o aplicativo de banco de dados a começar a usar o novo disco.

Terraform

Para configurar discos com estado individualmente para uma VM em um MIG, adicione a configuração do disco com estado na configuração por instância associada. Em seguida, atualize a instância para aplicar a configuração.

Para adicionar a configuração por instância a uma VM, use o recurso google_compute_per_instance_config e inclua o bloco preserved_state, conforme mostrado no exemplo a seguir.

resource "google_compute_per_instance_config" "default" {
  instance_group_manager = google_compute_instance_group_manager.default.name
  zone                   = google_compute_instance_group_manager.default.zone
  name                   = "db-instance"
  preserved_state {
    disk {
      device_name = "data-disk"
      source      = google_compute_disk.default.id
      delete_rule = "NEVER"
    }
  }
}

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

REST

Para configurar discos com estado individualmente nas VMs em um MIG, adicione ou atualize a configuração do disco com estado nas configurações por instância associadas. Em seguida, atualize as instâncias para aplicar a configuração.

Se as VMs especificadas ainda não tiverem configurações por instância, use o método instanceGroupManagers.updatePerInstanceConfigs ou o método regionInstanceGroupManagers.updatePerInstanceConfigs com a configuração com estado para um ou vários discos:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/updatePerInstanceConfigs

{
  "perInstanceConfigs": [
    {
      "name": "VM_NAME",
      "preservedState" : {
        "disks": {
          "DEVICE_NAME" : {
            "source": "DISK",
            "mode": "MODE",
            "autoDelete": "DELETE_RULE"
          },
          ...
        }
      },
      "fingerprint: "FINGERPRINT"
    },
    ...
  ]
}

Se as VMs especificadas já tiverem configurações por instância, use o método instanceGroupManagers.patchPerInstanceConfigs ou o método regionInstanceGroupManagers.patchPerInstanceConfigs com a configuração com estado para um ou vários discos:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/patchPerInstanceConfigs

{
  "perInstanceConfigs": [
    {
      "name": "VM_NAME",
      "preservedState" : {
        "disks": {
          "DEVICE_NAME" : {
            "source": "DISK",
            "mode": "MODE",
            "autoDelete": "DELETE_RULE"
          },
          ...
        }
      },
      "fingerprint: "FINGERPRINT"
    },
    ...
  ]
}

Substitua:

  • PROJECT_ID: o ID do projeto para a solicitação.
  • ZONE: a zona onde o MIG está localizado, aplicável a um MIG zonal.
    • zones/ZONE por regions/REGION e especifique a região do MIG se ele for regional;
  • NAME: o nome do MIG;
  • VM_NAME: o nome da VM em que os discos com estado serão configurados;
  • DEVICE_NAME: o nome do dispositivo usado para anexar o disco;
  • DISK: o URI de um disco permanente atual a ser anexado ao DEVICE_NAME especificado no formato projects/project-id/zones/zone/disks/disk-name para um disco zonal e projects/project-id/regions/region/disks/disk-name para um disco regional;

    O campo "source": "DISK" é opcional se o dispositivo já estiver definido na configuração por instância da instância. Caso contrário, ela será obrigatória.

    Se o campo source for omitido, o URI do disco configurado atualmente permanecerá inalterado.

  • MODE: opcional. Especifica o modo do disco. mode só poderá ser especificado se source for fornecido. As opções aceitas são estas:

    • READ_ONLY: somente leitura
    • READ_WRITE: padrão. Leitura/gravação

    Em caso de omissão, o valor padrão será definido na nova configuração de disco com estado. O valor permanece inalterado em uma configuração atual.

  • DELETE_RULE: opcional. Um valor que determina o que precisa acontecer em um disco com estado quando uma VM é excluída. As opções disponíveis são estas:

    • never: padrão. Nunca exclua o disco. Em vez disso, remova-o quando a instância dele for excluída.
    • on-permanent-instance-deletion: exclua o disco com estado quando a instância for excluída permanentemente do grupo. Por exemplo, quando a instância for excluída manualmente ou quando o tamanho do grupo for reduzido.

    Se o campo autoDelete for omitido, o valor padrão será definido na nova configuração de disco com estado. O valor permanece inalterado em uma configuração atual

    Seja qual for o valor da regra de exclusão, os discos com estado sempre serão preservados nas operações de recuperação automática, atualização e recriação de instâncias.

  • FINGERPRINT: opcional. A impressão digital da configuração especificada, se já houver. Usada para bloqueio otimista. Para ver a impressão digital mais recente, faça uma solicitação get() para recuperar o recurso.

Os métodos updatePerInstanceConfigs e patchPerInstanceConfigs atualizam as configurações por instância especificadas, mas não aplicam as atualizações às VMs gerenciadas associadas. As alterações são aplicadas a uma instância quando o MIG recebe a instrução para recriá-la ou atualizá-la. Também é possível atualizar seletivamente a instância para aplicar as alterações.

Exemplo

Os dados em um disco com estado anexado atualmente, data-disk-1, foram corrompidos e você quer restaurá-los com base no backup mais recente. Você criou um disco data-disk-2 com base em um snapshot para substituir o disco corrompido na instância db-instance-1, gerenciada por um MIG com estado example-database-mig. O disco original data-disk-1 foi anexado ao nome de dispositivo data-disk com uma regra de exclusão automática para nunca excluir o disco.

Para atualizar a configuração por instância de db-instance-1 com o novo disco, chame o método patchPerInstanceConfigs:

POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-database-mig/patchPerInstanceConfigs

{
  "perInstanceConfigs": [
    {
      "name": "db-instance-1",
      "preservedState" : {
        "disks": {
          "data-disk" : {
            "source": "projects/example-project/zones/us-east1-c/disks/data-disk-2"
          }
        }
      }
    }
  ]
}

O método corrige a configuração por instância para db-instance-1:

  1. Atualiza a source de um disco com o nome de dispositivo data-disk de data-disk-1 (última configuração) para data-disk-2 (nova configuração).
  2. Mantém os parâmetros mode e autoDelete inalterados porque eles foram omitidos na solicitação.

A atualização da config ainda não foi aplicada à VM db-instance-1. O MIG aplica a atualização da config quando você recria ou atualiza a instância.

Para aplicar a atualização da configuração por instância à VM db-instance-1, chame o método instanceGroupManagers.applyUpdatesToInstances para a instância:

POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-database-mig/applyUpdatesToInstances
{
  "instances": ["/zones/us-east1-c/instances/db-instance-1"],
  "minimalAction": "RESTART"
}

O método atualiza o estado preservado da instância gerenciada, removendo data-disk-1 e anexando data-disk-2 com mesmo nome de dispositivo data-disk. Como a minimalAction está definida como RESTART, o método reinicia a VM db-instance-1, o que permite ao aplicativo de banco de dados começar a usar o novo disco.

Como remover um disco com estado ou declará-lo sem estado para uma VM individual

Talvez seja necessário remover um disco com estado ou configurá-lo para ser considerado "sem estado" em uma VM individual. Exemplo:

  • Se você reformular o aplicativo para remover o estado do disco.
  • Se você configurar o disco como sendo "com estado" por engano e quiser revertê-lo.

Remova um disco com estado ou torne-o sem estado em uma VM individual removendo a configuração com estado dele da configuração por instância associada ou excluindo a configuração inteira. Quando você aplica a mudança:

  • Se o disco não estiver definido no modelo de instância, o MIG o removerá.
    • O MIG não exclui o disco quando você exclui a configuração dele da configuração por instância, seja qual for a regra de exclusão automática na configuração.
  • Se o disco for definido pelo modelo de instância, o MIG o tratará como "sem estado". Isso significa que o MIG recria o disco com base na origem dele no modelo de instância nos eventos subsequentes de recriação, atualização ou recuperação automática de instâncias.

A remoção de uma configuração de disco da configuração por instância não reinicia uma instância de VM em execução, a menos que você escolha fazer isso explicitamente.

Para mais informações, consulte Como aplicar atualizações de configurações por instância.

gcloud

Para remover discos com estado ou declará-los sem estado individualmente para uma VM em um MIG, remova a configuração de disco com estado da configuração por instância associada ou exclua toda a configuração por instância se ele não tiver outro estado. Atualize a instância para aplicar a configuração.

Para remover uma configuração de disco com estado da config por instância associada, use o comando gcloud compute instance-groups managed instance-configs update com a sinalização --remove-stateful-disks. A sinalização --update-instance (padrão) aplica as alterações imediatamente à instância. Se você usar --no-update-instance, as alterações permanecerão não aplicadas e serão aplicadas na próxima vez que você recriar ou atualizar a instância.

gcloud compute instance-groups managed instance-configs update NAME \
  --instance VM_NAME \
  --remove-stateful-disks DEVICE_NAME[,DEVICE_NAME,...] \
  [--no-update-instance | --update-instance] \
  [--instance-update-minimal-action MINIMAL_ACTION]

Substitua:

  • NAME: o nome do MIG;
  • VM_NAME: o nome da VM da qual remover a configuração com estado;
  • DEVICE_NAME: o nome do dispositivo usado para anexar o disco;
  • MINIMAL_ACTION: execute pelo menos a ação especificada ao atualizar a VM com a configuração por instância dela. Ela pode ser usada apenas com --update-instance. O valor precisa ser um dos seguintes:

    • none: nenhuma ação.
    • refresh: aplicar as atualizações possíveis sem parar a VM.
    • restart: interromper a VM e iniciá-la novamente.
    • replace: recriar a VM.

    Se omitida, a ação menos interruptiva exigida pela atualização será usada.

Exemplo

Você executa um aplicativo legado em um MIG chamado example-legacy-group. Cada VM no MIG armazena os dados do aplicativo em um disco de inicialização com o nome de dispositivo boot-disk. Usando as configurações por instância, você configurou cada disco de inicialização como "com estado". Agora você moveu os dados do aplicativo para um disco extra e quer tornar o disco de inicialização sem estado para cada VM a fim de facilitar a atualização para novas imagens.

Por exemplo, para cada instância de node-1, execute o comando:

gcloud compute instance-groups managed instance-configs update example-legacy-group \
  --instance node-1 \
  --remove-stateful-disks boot-disk \
  --update-instance

O comando faz o seguinte:

  1. Remove a configuração do disco com o nome de dispositivo boot-disk da configuração por instância para node-1.
  2. Aplica a atualização da configuração por instância à VM node-1 imediatamente, porque a sinalização --update-instance foi incluída. O MIG remove o disco de inicialização da preservedStateFromConfig da instância gerenciada e o trata como "sem estado". Isso significa que ele recria o disco com base na imagem de inicialização dele no modelo de instância nos eventos subsequentes de recriação, atualização ou recuperação automática de instâncias.

REST

Para remover discos com estado ou declará-los sem estado individualmente para uma VM em um MIG, remova a configuração de disco com estado da configuração por instância associada ou exclua toda a configuração por instância se ela não incluir outro estado. Em seguida, atualize a instância para aplicar a configuração.

Para remover uma configuração de disco com estado da configuração por instância associada, use o método instanceGroupManagers.patchPerInstanceConfigs ou o método regionInstanceGroupManagers.patchPerInstanceConfigs:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/patchPerInstanceConfigs

{
  "perInstanceConfigs": [
    {
      "name": "VM_NAME",
      "preservedState" : {
        "disks": {
          "DEVICE_NAME" : null
        },
        ...
      },
      "fingerprint: "FINGERPRINT"
      ...
    }
  ]
}

Substitua:

  • PROJECT_ID: o ID do projeto para a solicitação.
  • ZONE: a zona onde o MIG está localizado, aplicável a um MIG zonal.
    • zones/ZONE por regions/REGION e especifique a região do MIG se ele for regional;
  • NAME: o nome do MIG;
  • VM_NAME: o nome da VM da qual remover a configuração com estado;
  • DEVICE_NAME: o nome do dispositivo usado para anexar o disco;
  • FINGERPRINT: a impressão digital da configuração especificada, se já houver. Usada para bloqueio otimista. Para ver a impressão digital mais recente, faça uma solicitação get() para recuperar o recurso.

O método patchPerInstanceConfigs corrige as configurações por instância especificadas, mas não aplica as alterações às VMs associadas. As alterações são aplicadas a uma VM quando você recria ou atualiza a instância. É possível aplicar as alterações manualmente ou usar atualizações graduais automatizadas.

Exemplo

Você executa um aplicativo legado em um MIG chamado example-legacy-group. Cada VM no MIG armazena os dados do aplicativo em um disco de inicialização com o nome de dispositivo boot-disk. Você configurou o disco de inicialização como "com estado" nas configurações por instância do MIG ao migrar as VMs autônomas para o MIG. Você moveu os dados do aplicativo para um disco extra e agora quer tornar o disco de inicialização sem estado para cada VM a fim de facilitar a atualização para as novas imagens.

  1. Chame o método patchPerInstanceConfigs para as instâncias. Por exemplo, em node-1 com um valor null para o disco de inicialização:

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-legacy-group/patchPerInstanceConfigs
    
    {
      "perInstanceConfigs": [
        {
          "name": "node-1",
          "preservedState" : {
            "disks": {
              "boot-disk" : null
            }
          }
        }
      ]
    }
    

    O método remove a configuração do disco com o nome de dispositivo boot- disk da configuração por instância para node-1. A atualização da config ainda não foi aplicada à instância de VM node-1. A atualização da config será aplicada na próxima recriação ou atualização da instância.

  2. Para aplicar a atualização da configuração por instância à instância de VM node-1, chame o método instanceGroupManagers.applyUpdatesToInstances para a instância:

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-legacy-group/applyUpdatesToInstances
    {
      "instances": ["/zones/us-east1-c/instances/node-1"]
    }
    

    O MIG remove o disco de inicialização da preservedStateFromConfig para a instância node-1 e o trata como sem estado. Ou seja, o MIG recria o disco com base na imagem de inicialização no modelo de instância nos eventos subsequentes de recriação, atualização ou recuperação automática de instâncias.

Feedback

Queremos saber sobre seus casos de uso, desafios e feedback que envolvem os MIGs com estado. Compartilhe essas informações com nossa equipe em mig-discuss@google.com.

A seguir