Adicionar e remover VMs de um MIG


Depois de criar um grupo gerenciado de instâncias (MIG) , talvez você queira adicionar ou remover VMs desse grupo para atender às necessidades da sua carga de trabalho. Se você atingiu o limite padrão para o número máximo de VMs que pode adicionar a um MIG e precisa de mais VMs, poderá aumentar o limite de tamanho do MIG.

Para adicionar ou remover VMs em um MIG, faça o seguinte:

Antes de começar

  • Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar no Compute Engine selecionando uma das seguintes opções:

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

    Console

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

    gcloud

    1. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    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. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      3. To initialize the gcloud CLI, run the following command:

        gcloud init
      4. 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.

        If an authentication error is returned, confirm that you have configured the gcloud CLI to use Workforce Identity Federation.

      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.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

Defina o tamanho alvo do grupo

Você pode definir o tamanho alvo de um MIG automaticamente usando um escalonador automático ou definir o tamanho manualmente.

Adicionar e remover VMs automaticamente em um MIG

Você pode configurar grupos de instâncias gerenciadas para adicionar ou remover VMs automaticamente com base em suas cargas de trabalho. Seus aplicativos podem lidar com aumentos de tráfego e você pode reduzir seus custos quando a necessidade de recursos de computação for menor. Para começar a escalar seus grupos de instâncias gerenciadas, consulte Criar um MIG com escalonamento automático .

Para obter mais informações, consulte Dimensionamento automático de grupos de instâncias .

Configurando manualmente o tamanho de um MIG

Se um grupo de instâncias gerenciadas ainda não estiver configurado para escalar automaticamente , você poderá redimensionar o grupo manualmente para alterar o número de instâncias. Se você aumentar o tamanho, o grupo de instâncias gerenciadas usará o modelo de instância atual para adicionar novas instâncias. Se você diminuir o tamanho, o grupo gerenciado de instâncias excluirá as VMs do grupo. O grupo exclui instâncias com uma currentAction de DELETING , CREATING e RECREATING antes de excluir instâncias que estão em execução sem ações agendadas.

Se o grupo fizer parte de um serviço de back-end que habilitou a drenagem da conexão , poderá levar até 60 segundos adicionais após o término da duração da drenagem da conexão antes que a instância de VM seja removida ou excluída.

Console

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

    Vá para grupos de instâncias

  2. Na coluna Nome da lista, clique no nome do grupo de instâncias cujo tamanho você deseja alterar.

  3. Clique em Editar para modificar este grupo de instâncias gerenciadas.

  4. Em Número de instâncias , especifique o número de instâncias que você deseja incluir neste grupo de instâncias gerenciadas. Se o escalonamento automático estiver ativado, o grupo adicionará ou removerá automaticamente instâncias conforme necessário. No entanto, você pode alterar os valores Número mínimo de instâncias e Número máximo de instâncias para ajustar indiretamente o tamanho do grupo por meio do escalonador automático.

  5. Clique em Salvar para aplicar o novo modelo.

gcloud

Use o comando resize .

gcloud compute instance-groups managed resize INSTANCE_GROUP_NAME \
    --size NEW_SIZE \
    --zone ZONE

DESCANSAR

Chame o método resize para um recurso MIG zonal ou regional . Especifique o novo tamanho do grupo de instâncias como parâmetro.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/resize?size=NEW_SIZE

Se o grupo de instâncias for um grupo de instâncias gerenciadas regionalmente, substitua zones/ ZONE por regions/ REGION .

Depois de fazer uma solicitação para redimensionar um grupo gerenciado de instâncias, as VMs serão iniciadas ou interrompidas assim que o sistema puder provisioná-las ou excluí-las. Esse processo pode levar um tempo significativo dependendo do número de instâncias no grupo. Verifique o status das instâncias no seu grupo de instâncias gerenciadas.

Desativando o modo de novas tentativas de criação durante o redimensionamento

Por padrão, se a criação inicial de uma instância de VM falhar, o grupo de instâncias gerenciadas tentará continuamente criar a VM, até que ela seja criada com êxito. No entanto, se você não quiser novas tentativas de criação automáticas, poderá desativar o modo de novas tentativas de criação ao redimensionar o grupo de instâncias. Nesse modo, o grupo gerenciado de instâncias tenta criar todas as instâncias apenas uma vez. Se houver um erro durante a criação da instância, o grupo de instâncias gerenciadas desiste dessa instância, remove-a da lista de instâncias gerenciadas do grupo e diminui o tamanho alvo do grupo de instâncias gerenciadas.

Este modo se aplica somente durante a primeira tentativa de criação de uma VM. Se uma VM for criada com êxito enquanto este modo estiver ativado, a VM se comportará da mesma maneira que todas as outras VMs criadas com uma solicitação de redimensionamento regular. Em particular, se uma VM em execução morrer inesperadamente posteriormente e precisar ser recriada, esse modo não afetará o comportamento de recriação nesse cenário.

Desabilitar o modo de novas tentativas de criação é especialmente útil em cenários onde você tem sistemas criando automaticamente grupos de VMs onde um número exato de VMs não é necessário. Talvez você prefira estabilizar rapidamente o tamanho do grupo de instâncias gerenciadas e ser flexível no número de VMs no grupo, em vez de esperar indefinidamente até que todas as instâncias solicitadas sejam criadas, o que pode ser atrasado temporária ou permanentemente devido a erros de cota ou outros problemas não relacionados.

Limitações

  • Você não pode desabilitar novas tentativas de criação para um MIG regional com um formato de distribuição de destino EVEN .
  • Para MIGs regionais com um formato de distribuição de destino BALANCED ou ANY_SINGLE_ZONE , você deve desabilitar a redistribuição proativa de instâncias antes de poder desabilitar o modo de novas tentativas de criação.
  • Você não pode desativar novas tentativas de criação para MIGs com escalonamento automático .

Para redimensionar um grupo de instâncias gerenciadas quando o modo de novas tentativas de criação estiver desativado, use a Google Cloud CLI ou REST.

gcloud

Use o comando beta resize com o sinalizador --no-creation-retries .

gcloud beta compute instance-groups managed resize INSTANCE_GROUP_NAME \
    --size NEW_SIZE \
    --no-creation-retries \
    [--region REGION | --zone ZONE]

Substitua o seguinte:

  • INSTANCE_GROUP_NAME : o nome do MIG que você deseja redimensionar.
  • NEW_SIZE : o número alvo de instâncias em execução no grupo de instâncias gerenciadas.
  • ZONE : Para MIGs zonais, a zona onde o MIG está localizado.
  • REGION : Para MIGs regionais, a região onde o MIG está localizado.

DESCANSAR

Para um MIG zonal, use o método beta instanceGroupManagers.resizeAdvanced ou, para um MIG regional, use o método beta regionInstanceGroupManagers.resizeAdvanced . Especifique o novo tamanho do grupo e o campo noCreationRetries no corpo da solicitação.

Por exemplo, faça a chamada a seguir para redimensionar um MIG zonal com o modo de novas tentativas de criação desabilitado.

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/resizeAdvanced

{
 "targetSize": NEW_SIZE,
 "noCreationRetries": true
}

Substitua o seguinte:

  • PROJECT_ID : o ID do seu projeto.
  • ZONE : A zona onde o MIG está localizado. Para um MIG regional, substitua zones/ ZONE por regions/ REGION e especifique a região. Para obter mais informações, consulte Sobre MIGs regionais .
  • INSTANCE_GROUP_NAME : o nome do MIG que você deseja redimensionar.
  • NEW_SIZE : o número alvo de instâncias em execução no grupo de instâncias gerenciadas.

    Você pode ver quais instâncias estão sendo criadas e em qual modo usando o método listManagedInstances . Quando o modo de novas tentativas de criação está desativado, as instâncias criadas têm uma currentAction de CREATING_WITHOUT_RETRIES .

Adicionar, remover ou abandonar instâncias específicas

Criação de instâncias com nomes específicos em MIGs

Se você tiver um sistema que depende de nomes específicos, poderá adicionar VMs com nomes específicos a um MIG existente.

Os nomes atribuídos a essas instâncias gerenciadas persistirão se o MIG recriar a VM. Para obter mais informações sobre como preservar o estado das instâncias MIG, consulte MIGs com estado .

Limitações

Se você criar instâncias com nomes específicos:

  • Você deve desativar o escalonamento automático durante o processo de criação da instância.
  • Você deve definir a política de atualização do MIG para ser oportunista .
  • Se você estiver atualizando um MIG regional:
  • Não é possível usar nomes duplicados de instâncias de VM em um projeto.

Você pode usar a CLI gcloud ou REST para adicionar VMs com nomes específicos a um MIG existente.

gcloud

Use o comando instance-groups managed create-instance .

gcloud compute instance-groups managed create-instance INSTANCE_GROUP_NAME \
    --instance INSTANCE_NAME \
    [--region REGION | --zone ZONE]

Substitua o seguinte:

  • INSTANCE_GROUP_NAME é o nome do MIG regional ou zonal ao qual adicionar uma nova instância.
  • INSTANCE_NAME é o nome que você deseja atribuir à nova instância.

DESCANSAR

Envie uma solicitação POST para o método regionInstanceGroupManagers.createInstances . Para um grupo de instâncias gerenciadas zonal, use o método instanceGroupManagers.createInstances . No corpo da solicitação, inclua o campo de instances com os nomes de uma ou mais instâncias.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/createInstances
{
  "instances": [
    {
      "name": "INSTANCE_NAME_1"
    },
    {
      "name": "INSTANCE_NAME_2"
    }
  ]
}

Excluindo instâncias específicas de um grupo

Você pode excluir instâncias de VM individuais em um grupo de instâncias gerenciadas. A exclusão de instâncias reduz o targetSize especificado do grupo de instâncias e remove as VMs de quaisquer pools de destino dos quais sejam membros.

A exclusão de instâncias específicas de um grupo de instâncias gerenciadas não altera nenhuma configuração especificada do escalonador automático. Se você excluir instâncias de um grupo de instâncias gerenciadas, o escalonador automático poderá detectar um aumento na carga de trabalho nas outras instâncias do grupo e aumentar o tamanho do grupo de volta ao nível anterior. Para evitar isso, pare o escalonador automático antes de tentar excluir as instâncias.

Se o grupo fizer parte de um serviço de back-end que habilitou a drenagem da conexão , poderá levar até 60 segundos adicionais após o término da duração da drenagem da conexão antes que a instância de VM seja removida ou excluída.

Console

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

    Vá para grupos de instâncias

  2. Na coluna Nome da lista, clique no nome do grupo de instâncias do qual você deseja excluir instâncias individuais. Uma página é aberta com as propriedades do grupo de instâncias e uma lista de instâncias incluídas no grupo.

  3. Na seção Membros , na lista de instâncias selecione uma ou mais instâncias que você deseja excluir.

  4. Clique em Excluir instância . As instâncias selecionadas são excluídas.

gcloud

Para excluir uma instância com a CLI gcloud, use o comando instance-groups managed delete-instances .

gcloud compute instance-groups managed delete-instances INSTANCE_GROUP_NAME \
    --instances INSTANCE_NAME_1,INSTANCE_NAME_2 \ 
    [--region REGION | --zone ZONE]

O comando retorna o status da operação por instância:

  • SUCCESS será retornado se a CLI gcloud excluir a instância.
  • FAIL será retornado para todas as instâncias se alguma instância especificada na solicitação não for membro do grupo, se algum membro já estiver sendo excluído ou abandonado ou se a solicitação falhar por qualquer outro motivo.
  • SKIPPED será retornado somente se você usar o sinalizador --skip-instances-on-validation-error e a instância não for membro do grupo ou já estiver sendo excluída ou abandonada.
  • MEMBER_NOT_FOUND é retornado apenas para grupos regionais quando a CLI gcloud não consegue resolver a zona a partir do nome da instância.

Se você antecipar que sua solicitação de exclusão pode entrar em conflito com operações simultâneas, use o sinalizador --skip-instances-on-validation-error . Este sinalizador especifica se a solicitação deve prosseguir mesmo que inclua instâncias que não são membros do grupo ou que já estão sendo excluídas ou abandonadas — por exemplo, instâncias que estão sendo excluídas por um escalonador automático. Por padrão, se você omitir esse sinalizador e tal instância for especificada na solicitação, a operação falhará. A operação sempre falhará se a solicitação contiver um nome de instância mal formatado ou uma referência a uma instância que exista em uma zona ou região diferente da zona ou região do grupo.

Por exemplo, o comando a seguir solicita a exclusão de quatro instâncias, mas três delas não estão mais no grupo:

gcloud compute instance-groups managed delete-instances example-mig \
    --instances=example-instance-1,example-instance-2,example-instance-3,example-instance-4 \
    --region=us-central1 \
    --skip-instances-on-validation-error

Neste exemplo, três instâncias não passaram na validação e foram ignoradas, enquanto example-instance-3 foi excluído:

Updated [https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/instanceGroupManagers/example-mig].
PROJECT          ZONE           INSTANCE               STATUS   VALIDATION_ERROR
example-project  us-central1-a  example-instance-1     SKIPPED  Cannot delete instance https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/example-instance-1 that was already deleted.
example-project  us-central1-a  example-instance-2     SKIPPED  Cannot delete instance https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/example-instance-2 that was already abandoned.
example-project  us-central1-a  example-instance-3     SUCCESS
example-project  us-central1-a  example-instance-4     SKIPPED  Cannot find instance https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/example-instance-4.

Se você omitir o sinalizador --skip-instances-on-validation-error e se alguma instância não passar na validação, nenhuma instância será excluída:

gcloud compute instance-groups managed delete-instances example-mig \
    --instances=example-instance-1,example-instance-2,example-instance-3,example-instance-4 \
    --region=us-central1

Updated [https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/instanceGroupManagers/example-mig].
PROJECT          ZONE             INSTANCE              STATUS
example-project  us-central1-a    example-instance-1    FAIL
example-project  us-central1-a    example-instance-2    FAIL
example-project  us-central1-a    example-instance-3    FAIL
example-project  us-central1-a    example-instance-4    FAIL

DESCANSAR

Envie uma solicitação POST para o método regionInstanceGroupManagers.deleteInstances . Para um grupo de instâncias gerenciadas zonal, use o método instanceGroupManagers.deleteInstances .

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/deleteInstances

{
  "instances": [
    "zones/ZONE/instances/INSTANCE_NAME_1",
    "zones/ZONE/instances/INSTANCE_NAME_2"
   ]
}

Se você antecipar que sua solicitação de exclusão poderá entrar em conflito com operações simultâneas, use o campo skipInstancesOnValidationError . Este campo especifica se a solicitação deve prosseguir mesmo que inclua instâncias que não são membros do grupo ou que já estão sendo excluídas ou abandonadas — por exemplo, instâncias que estão sendo excluídas por um escalonador automático. Por padrão, se você omitir esse sinalizador e tal instância for especificada na solicitação, a operação falhará. A operação sempre falhará se a solicitação contiver um nome de instância mal formatado ou uma referência a uma instância que exista em uma zona ou região diferente da zona ou região do grupo.

Por exemplo, a seguinte solicitação para excluir 2 instâncias será bem-sucedida mesmo se uma das instâncias já tiver sido excluída ou estiver sendo excluída:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/deleteInstances

{
 "instances": [
  "zones/ZONE/instances/INSTANCE_NAME_1",
  "zones/ZONE/instances/INSTANCE_NAME_2"
 ],
 "skipInstancesOnValidationError": true
}

Você pode visualizar as instâncias que foram ignoradas na operação visualizando a operação. Para MIGs regionais, use o método regionOperations.get . Para MIGs zonais, use o método zoneOperations.get . Os avisos são listados no campo de aviso da operação.

Depois de fazer uma solicitação para excluir instâncias em um grupo gerenciado de instâncias, as instâncias serão interrompidas assim que o sistema puder excluí-las. Esse processo pode levar um tempo significativo, dependendo do número de instâncias excluídas do grupo. Verifique o status do grupo ou verifique o status das instâncias gerenciadas .

Abandonando instâncias de um MIG

Você pode separar uma instância de VM de um grupo de instâncias gerenciadas para depurar problemas com instâncias individuais com mais facilidade, sem afetar o grupo como um todo. Abandonar uma instância de um grupo também remove a instância dos balanceadores de carga que foram atribuídos ao grupo de instâncias gerenciadas. Os pools de destino atribuídos manualmente a instâncias individuais específicas não são removidos.

Você não pode adicionar uma instância de VM abandonada de volta ao grupo. O abandono de instâncias reduz o targetSize especificado do grupo de instâncias, mas não altera nenhuma configuração especificada do escalonador automático. Os grupos de instâncias gerenciadas com escalonador automático continuam adicionando ou removendo instâncias automaticamente conforme necessário. Para um MIG regional com escalonamento automático definido para o modo ONLY_SCALE_OUT , se você abandonar uma instância de VM para reduzir o tamanho de destino do MIG para o tamanho recomendado do autoescalador , o autoescalador poderá criar uma nova instância de VM na mesma zona da VM abandonada. Nesses casos, para evitar a criação de uma nova instância de VM, tente abandonar a instância de VM de uma zona diferente.

Se o grupo fizer parte de um serviço de back-end que habilitou a drenagem da conexão , poderá levar até 60 segundos adicionais após o término da duração da drenagem da conexão antes que a instância de VM seja removida ou excluída.

Console

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

    Vá para grupos de instâncias

  2. Na coluna Nome da lista, clique no nome do grupo de instâncias do qual você deseja remover instâncias. Uma página é aberta com as propriedades do grupo de instâncias e uma lista de instâncias incluídas no grupo.

  3. Na seção Membros , na lista de instâncias selecione uma ou mais instâncias que você deseja remover do grupo.

  4. Clique em Remover do grupo . As instâncias selecionadas saem do grupo, mas continuam funcionando fora do grupo.

gcloud

Para remover uma instância do grupo de instâncias sem excluir a VM , use o comando instance-groups managed abandon-instances .

gcloud compute instance-groups managed abandon-instances INSTANCE_GROUP_NAME \
    --instances INSTANCE_NAME_1,INSTANCE_NAME_2 \
    [--region REGION | --zone ZONE]

DESCANSAR

Envie uma solicitação POST para o método regionInstanceGroupManagers.abandonInstances . Para um grupo de instâncias gerenciadas zonal, use o método instanceGroupManagers.abandonInstances .

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/abandonInstances

{
 "instances": [
  "zones/ZONE/instances/INSTANCE_NAME_1",
  "zones/ZONE/instances/INSTANCE_NAME_2"
 ]
}

Depois que você faz uma solicitação para abandonar instâncias de um grupo gerenciado de instâncias, o grupo remove as instâncias o mais rápido possível. Verifique o status do grupo ou verifique o status das instâncias gerenciadas .

Aumentar o limite de tamanho do grupo

Por padrão, o limite de tamanho para um MIG zonal é de 1.000 VMs, e o limite de tamanho para um MIG regional é de 2.000 VMs. Você pode aumentar ainda mais esses limites para 2.000 VMs para um MIG zonal e 4.000 VMs para um MIG regional.

Para aumentar os limites, defina o campo listManagedInstancesResults do grupo como PAGINATED . Se você ainda precisar de mais VMs no grupo, crie vários MIGs ou entre em contato com o suporte .

Console

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

    Vá para grupos de instâncias

  2. Na coluna Nome da lista, clique no nome do grupo de instâncias cujo limite de tamanho você deseja aumentar.

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

  4. Expanda a seção de configurações avançadas clicando em Mostrar configuração avançada .

  5. Em Resultados da chamada de API da lista de instâncias gerenciadas , selecione a opção Paginado .

  6. Clique em Salvar para aplicar as alterações.

gcloud

Para um MIG existente, use o comando update :

gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \
    --list-managed-instances-results=PAGINATED

Para um novo MIG, use o comando create :

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template INSTANCE_TEMPLATE \
    --size SIZE \
    --list-managed-instances-results=PAGINATED

Terraforma

Para aumentar o limite de tamanho de um MIG, configure o argumento list_managed_instances_results como PAGINATED .

O exemplo a seguir aumenta o limite de tamanho de um MIG zonal. Para obter mais informações sobre o recurso usado no exemplo, consulte o recurso google_compute_instance_group_manager . Para um MIG regional, use o recurso google_compute_region_instance_group_manager .

resource "google_compute_instance_group_manager" "default" {
  name                           = "my-igm"
  base_instance_name             = "test"
  target_size                    = 7
  zone                           = "us-central1-f"
  list_managed_instances_results = "PAGINATED"
  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
}

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

DESCANSAR

Para um MIG zonal existente, use o método instanceGroupManagers.patch ou, para um MIG regional, use o método regionInstanceGroupManagers.patch – por exemplo:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/region/REGION/regionInstanceGroupManagers/INSTANCE_GROUP_NAME

{
  "listManagedInstancesResults": "PAGINATED",
}

Para um novo MIG zonal, use o método instanceGroupManagers.insert ou, para um MIG regional, use o método regionInstanceGroupManagers.insert .

Se quiser voltar aos resultados da lista sem página, você também deverá reverter para o limite de tamanho padrão do grupo. Para voltar, primeiro certifique-se de que o grupo não exceda seu limite de tamanho padrão e, em seguida, defina o campo listManagedInstancesResults como PAGELESS .

O que vem a seguir