Como configurar endereços IP com estado em MIGs


Ao configurar endereços IP com estado em um grupo de instâncias gerenciadas (MIG), você garante que os endereços IP sejam preservados quando as instâncias de VM no grupo forem recuperadas, atualizadas e recriadas automaticamente de dados.

É possível preservar endereços IPv4 internos e externos. É possível configurar endereços IP para serem atribuídos automaticamente ou atribuir endereços IP específicos a cada instância de VM em um MIG.

Antes de começar

  • Veja quando usar MIGs com estado e como funcionam os MIGs com estado.
  • 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 da seguinte maneira.

    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 endereços IP com estado tem as seguintes limitações:

  • Os endereços IPv6 não são aceitos.

  • Endereços IP internos não são suportados em redes sem sub-redes, como redes legadas.

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.

Preços

As cobranças de endereços IP externos serão feitas de acordo com os preços da rede.

Quando usar endereços IP com estado

A preservação dos endereços IP das instâncias é útil nos seguintes cenários:

  • Seu aplicativo requer um endereço IP para permanecer estático depois de ser atribuído. Por exemplo, o Kafka.
  • A configuração do aplicativo depende de endereços IP específicos, por exemplo, um servidor DNS.
  • Os usuários, incluindo outros aplicativos, acessam seu servidor por meio de um endereço IP estático dedicado, por exemplo, um servidor de arquivos.
  • Você precisa migrar as cargas de trabalho atuais sem alterar a configuração de rede.

Como configurar endereços IP com estado para todas as VMs em um grupo

A configuração de endereços IP com estado para todas as VMs em um MIG é útil nos seguintes cenários:

  • O aplicativo exige que o endereço IP permaneça estático depois de ser atribuído. No entanto, o aplicativo não requer a atribuição de endereços IP específicos a instâncias específicas. Os endereços IP podem ser atribuídos automaticamente na criação da instância.
  • Os usuários, inclusive outros aplicativos, acessam os servidores por meio de endereços IP estáticos publicados depois de implantar o aplicativo.
  • Você quer se beneficiar da recuperação automática de instâncias e das atualizações automáticas enquanto preserva o endereço IP estático atribuído automaticamente na criação da instância.

Para manter endereços IP internos ou externos estáticos de instâncias de VM atuais e futuras no grupo, configure-as na política com estado.

Quando você adiciona a configuração do endereço IP com estado à política com estado do grupo, o MIG aplica a configuração da seguinte maneira:

  • Para novas instâncias, o MIG atribui e reserva automaticamente endereços IP estáticos.
  • Para instâncias atuais, o MIG promove o uso temporário interno ouExterna para endereços estáticos, reservando os endereços IP estáticos correspondentes.
  • Para instâncias atuais sem endereços IP externos, o MIG atribui e reserva endereços IP estáticos e adiciona a configuração de acesso à interface de rede correspondente com os seguintes valores padrão:

    "accessConfigs": [
      {
        "kind": "compute#accessConfig",
        "name": "External NAT",
        "natIP": "XX.XX.XX.XX",
        "networkTier": "PREMIUM",
        "type": "ONE_TO_ONE_NAT"
      }
    ]
    

Para reservar um endereço IP estático, o MIG cria um recurso Endereço.

Como configurar endereços IP com estado na criação do MIG

Use o console do Google Cloud, a CLI gcloud, o Terraform ou o REST.

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.

  7. Em Número de instâncias, especifique o número de instâncias que você quer incluir no grupo.

  8. Em Configuração com estado, expanda o IP externo e/ou o IP interno que você quer tornar com estado.

    1. Em Com estado, selecione Sim.
    2. Na lista suspensa Exclusão permanente de instância, selecione a ação que será executada no endereço IP com estado quando a instância de VM for excluída. As opções disponíveis são estas:
      • Remover IP: (padrão) Em vez disso, cancele a atribuição do endereço na exclusão da instância e mantenha o endereço reservado.
      • Exclua o IP: exclua a reserva de endereços IP estáticos quando uma instância for excluída permanentemente do grupo. Por exemplo, quando você excluir uma instância manualmente ou diminuir o tamanho do grupo.
    3. Depois de concluir a configuração com estado, clique em Concluído.
  9. Clique em Criar.

gcloud

Ao criar um MIG, para especificar quais endereços IP nas interfaces de rede do modelo de instância devem ser com estado, use uma ou várias das seguintes sinalizações com o gcloud compute instance-groups managed create comando .

  • --stateful-internal-ip para marcar um endereço IP interno de uma determinada interface de rede como "com estado".
  • --stateful-external-ip para marcar um endereço IP externo de uma determinada interface de rede como "com estado".
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template INSTANCE_TEMPLATE \
    --size SIZE \
    --instance-redistribution-type NONE \
    --stateful-internal-ip [enabled | interface-name=NI_NAME][,auto-delete=DELETE_RULE] \
    --stateful-external-ip [enabled | interface-name=NI_NAME][,auto-delete=DELETE_RULE]

Substitua:

  • INSTANCE_GROUP_NAME: o nome do MIG que será criado;
  • INSTANCE_TEMPLATE: o nome do modelo de instância que será usado ao criar novas instâncias;
  • SIZE: o número inicial de instâncias necessárias nesse grupo;
  • NI_NAME: opcional. Nome da interface de rede. Se não for fornecida, a opção enabled será obrigatória, e a interface de rede principal chamada nic0 será usada por padrão. Se você tiver várias interfaces de rede, é possível especificar essa sinalização para cada IP de cada interface de rede.
  • DELETE_RULE: opcional. prescreve o que precisa acontecer com um recurso de endereço estático associado quando uma instância de VM é excluída permanentemente. As opções disponíveis são estas:

    • never: padrão. Nunca exclua o endereço IP estático. Em vez disso, cancele a atribuição do endereço na exclusão da instância e mantenha o endereço reservado.
    • on-permanent-instance-deletion: exclua a reserva de endereços IP estáticos quando uma instância for excluída permanentemente do grupo. Por exemplo, quando você excluir uma instância manualmente ou diminuir o tamanho do grupo.

    Independentemente do valor da regra de exclusão, o grupo sempre preserva os endereços IP com estado nas operações de recuperação automática, atualização e recriação de instâncias.

Exemplo

Você precisa criar um grupo regional de instâncias de VM com endereços IP internos estáticos para as redes padrão e personalizadas e endereços IP externos estáticos apenas para a rede padrão. Os endereços devem ser atribuídos automaticamente, mas precisam ser preservados por meio da recuperação automática, das atualizações e dos eventos de recriação de instâncias. Você armazena a configuração de instância em um modelo de instância chamado node-template.

Para criar o grupo, execute o seguinte comando:

gcloud compute instance-groups managed create example-group \
    --region us-east1 \
    --template node-template \
    --base-instance-name node \
    --instance-redistribution-type NONE \
    --size 3 \
    --stateful-internal-ip interface-name=nic0,auto-delete=on-permanent-instance-deletion
    --stateful-internal-ip interface-name=nic1,auto-delete=on-permanent-instance-deletion
    --stateful-external-ip enabled,auto-delete=on-permanent-instance-deletion

Os IPs internos das interfaces de rede nic0 e nic1 e o IP externo da interface de rede nic0 são configurados como com estado para todas as instâncias do grupo. O grupo reserva automaticamente endereços IP internos e externos estáticos para cada instância. Como a sinalização auto-delete está definida como on-permanent-instance-deletion, o grupo excluirá automaticamente as reservas de endereço IP estático quando você excluir as instâncias associadas ou todo o grupo.

Para verificar se os IPs internos das interfaces de rede nic0 e nic1 e o IP externo da interface de rede nic0 estão configurados com estado, execute o seguinte comando:

gcloud compute instance-groups managed describe example-group \
    --zone us-east1-c

A saída será assim:

baseInstanceName: node
...
name: example-group
...
statefulPolicy:
  preservedState:
    internalIPs:
      nic0:
        autoDelete: ON_PERMANENT_INSTANCE_DELETION
      nic1:
        autoDelete: ON_PERMANENT_INSTANCE_DELETION
    externalIPs:
      nic0:
        autoDelete: ON_PERMANENT_INSTANCE_DELETION
...

Veja que a política com estado do grupo declara IPs internos das interfaces de rede nic0 e nic1 e IPs externos da interface de rede nic0 como com estado, com a regra para excluir reservas de IP na exclusão permanente da instância.

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.

Ao criar um MIG, para especificar quais endereços IP nas interfaces de rede do modelo de instância precisam ter estado, use um ou vários dos seguintes blocos:d

  • stateful_internal_ip para marcar um endereço IP interno de uma determinada interface de rede como "com estado".
  • stateful_external_ip para marcar um endereço IP externo de uma determinada interface de rede como "com estado".

O exemplo a seguir configura endereços IP com estado ao criar um MIG regional. Para mais informações sobre o recurso usado na amostra, consulte Recurso google_compute_region_instance_group_manager.

resource "google_compute_region_instance_group_manager" "default" {
  name               = "example-group"
  base_instance_name = "node"
  target_size        = 3
  region             = "us-east1"

  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
  update_policy {
    type                         = "OPPORTUNISTIC"
    minimal_action               = "REFRESH"
    instance_redistribution_type = "NONE"
    max_unavailable_fixed        = 3
  }
  stateful_internal_ip {
    interface_name = "nic0"
    delete_rule    = "ON_PERMANENT_INSTANCE_DELETION"
  }
  stateful_internal_ip {
    interface_name = "nic1"
    delete_rule    = "ON_PERMANENT_INSTANCE_DELETION"
  }
  stateful_external_ip {
    interface_name = "nic0"
    delete_rule    = "ON_PERMANENT_INSTANCE_DELETION"
  }
}

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

REST

Ao criar um MIG, para especificar quais endereços IP nas interfaces de rede do modelo de instância devem ser com estado, inclua-os no statefulPolicy no corpo da solicitação do método instanceGroupManagers.insert ou regionInstanceGroupManagers.insert:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/instanceGroupManagers

{
  "name": "INSTANCE_GROUP_NAME",
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE"
    }
  ],
  "targetSize": SIZE,
  "statefulPolicy": {
    "preservedState": {
      "internalIPs": {
        "NI_NAME": {"autoDelete": "DELETE_RULE" }
      },
      "externalIPs": {
        "NI_NAME": {"autoDelete": "DELETE_RULE" }
      }
    }
  },
  "updatePolicy": {
    "instanceRedistributionType": "NONE"
  }
}

Substitua:

  • PROJECT: o ID do projeto para a solicitação.
  • REGION: para MIGs regionais, a região em que o MIG está localizado. Para MIGs zonais, substitua regions/REGION por zones/ZONE e especifique a zona em que o MIG está localizado.
  • NAME: o nome do MIG que será criado;
  • INSTANCE_TEMPLATE: o nome do modelo de instância que será usado ao criar novas instâncias;
  • SIZE: o número inicial de instâncias necessárias nesse grupo;
  • NI_NAME: opcional. Nome da interface de rede. Se não for fornecida, a opção enabled será obrigatória, e a interface de rede principal chamada nic0 será usada por padrão. Se você tiver várias interfaces de rede, poderá especificar várias NI_NAMES.
  • DELETE_RULE: (opcional) determina o que precisa acontecer em um recurso de endereço estático associado quando uma instância de VM é excluída permanentemente. As opções disponíveis são estas:

    • NEVER: (padrão) nunca exclua o endereço IP estático. Em vez disso, cancele a atribuição do endereço na exclusão da instância e mantenha o endereço reservado.
    • ON_PERMANENT_INSTANCE_DELETION: exclua a reserva de endereços IP estáticos quando uma instância for excluída permanentemente do grupo. Por exemplo, quando você excluir uma instância manualmente ou diminuir o tamanho do grupo.

    Independentemente do valor da regra de exclusão, o grupo sempre preserva os endereços IP com estado nas operações de recuperação automática, atualização e recriação de instâncias.

Exemplo

Você precisa criar um grupo regional de instâncias de VM com endereços IP internos estáticos para as redes padrão e personalizadas e endereços IP externos estáticos apenas para a rede padrão. Os endereços devem ser atribuídos automaticamente, mas precisam ser preservados por meio da recuperação automática, das atualizações e dos eventos de recriação de instâncias. Você armazena a configuração de instância em um modelo de instância chamado node-template.

Para criar a imagem, use o método regionInstanceGroupManagers.insert.

POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-east1/instanceGroupManagers

{
  "name": "example-group",
  "baseInstanceName": "node",
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/node-template"
    }
  ],
  "targetSize": 3,
  "statefulPolicy": {
    "preservedState": {
      "internalIPs": {
        "nic0": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" },
        "nic1": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" }
      }
      "externalIPs": {
        "nic0": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" }
      }
    }
  },
  "updatePolicy": {
    "instanceRedistributionType": "NONE"
  }
}

Os IPs internos das interfaces de rede nic0 e nic1 e os IPs externos da interface de rede nic0 são configurados como com estado para todas as instâncias do grupo. O grupo reserva automaticamente endereços IP internos e externos estáticos para cada instância. Como o campo auto-delete está definido como ON_PERMANENT_INSTANCE_DELETION, o grupo excluirá automaticamente as reservas de endereço IP estático quando você excluir instâncias associadas ou todo o grupo.

Use o método regionInstanceGroupManagers.get para verificar se os IPs internos das interfaces de rede nic0 e nic1 e os IPs externos da interface de rede nic0 estão configurados na política com estado do novo recurso regionInstanceGroupManagers:

GET https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-east1/instanceGroupManagers/example-group

A resposta contém a política com estado configurada:

{
  "name": "example-group",
  "baseInstanceName": "node",
  ...
  "statefulPolicy": {
    "preservedState": {
      "internalIPs": {
        "nic0": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" },
        "nic1": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" }
      }
      "externalIPs": {
        "nic0": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" }
      }
    }
  }
  ...
}

Veja que a política com estado do grupo declara IPs internos das interfaces de rede nic0 e nic1 e IPs externos da interface de rede nic0 como com estado, com a regra para excluir reservas associadas de endereço IP estático na exclusão permanente da instância.

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

Se você executar uma carga de trabalho em um MIG sem estado, sem qualquer configuração com estado, e a carga de trabalho exigir endereços IP estáticos, será possível configurar os endereços IP já atribuídos às instâncias de VM gerenciadas para se tornarem com estado. Isso garante que os endereços IP das VMs existentes sejam preservados na recuperação automática, nas atualizações e nos eventos de recriação de instâncias. Opcionalmente, é possível manter as reservas de endereços IP estáticos depois que as instâncias forem excluídas.

Ao configurar uma política com estado para endereços IP em um MIG atual, é possível fazer o seguinte:

  • Configure endereços IP como "com estado" para todas as instâncias atuais e futuras do grupo. Isso promove os endereços IP temporários correspondentes de todas as instâncias atuais para endereços IP estáticos.
  • Atualize a configuração com estado atual para endereços IP.

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 endereço IP em uma política com estado não interrompem a execução das instâncias de VM. Para saber mais, leia sobre 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 em que você quer especificar endereços IP com estado.

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

  4. Em Configuração com estado, expanda o IP externo e/ou o IP interno que você quer tornar com estado.

    1. Em Com estado, selecione Sim.
    2. Na lista suspensa Exclusão permanente de instância, selecione a ação que será executada no endereço IP com estado quando a instância de VM for excluída. As opções disponíveis são estas:
      • Remover IP: (padrão) Em vez disso, cancele a atribuição do endereço na exclusão da instância e mantenha o endereço reservado.
      • Exclua o IP: exclua a reserva de endereços IP estáticos quando uma instância for excluída permanentemente do grupo. Por exemplo, quando você excluir uma instância manualmente ou diminuir o tamanho do grupo.
    3. Depois de atualizar a configuração com estado, clique em Concluído.
    4. Clique em Salvar para concluir a atualização.

gcloud

Para especificar quais endereços IP precisam ser com estado ou para atualizar a configuração de IP com estado de um MIG atual, use uma ou várias sinalizações --stateful-internal-ip ou --stateful-external-ip com o gcloud compute instance-groups managed update.

gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \
    --stateful-internal-ip [enabled | interface-name=NI_NAME][,auto-delete=DELETE_RULE] \
    --stateful-external-ip [enabled | interface-name=NI_NAME][,auto-delete=DELETE_RULE]

Substitua:

  • INSTANCE_GROUP_NAME: o nome do MIG que será atualizado;
  • NI_NAME: opcional. Nome da interface de rede. Se não for fornecida, a opção enabled será obrigatória, e a interface de rede principal chamada nic0 será usada por padrão. Se você tiver várias interfaces de rede, é possível especificar essa sinalização para cada IP de cada interface de rede.
  • DELETE_RULE: opcional. Prescreve o que precisa acontecer com um recurso de endereço estático associado quando uma instância de VM é excluída permanentemente. As opções disponíveis são estas:

    • never: padrão. Nunca exclua o endereço IP estático. Em vez disso, cancele a atribuição do endereço na exclusão da instância e mantenha o endereço reservado.
    • on-permanent-instance-deletion: exclua a reserva de endereços IP estáticos quando uma instância for excluída permanentemente do grupo. Por exemplo, quando você excluir uma instância manualmente ou diminuir o tamanho do grupo.

    Independentemente do valor da regra de exclusão, o grupo sempre preserva os endereços IP com estado nas operações de recuperação automática, atualização e recriação de instâncias.

Se um endereço IP especificado já estiver configurado na política com estado de uma determinada interface de rede, o comando atualizará a configuração.

Exemplo

É necessário expor um servidor de arquivos, em execução em um MIG com estado chamado example-fs-group, para usuários externos por meio de endereços IP externos estáticos. As instâncias no grupo têm endereços IP externos temporários. Certifique-se de que os endereços IP sejam preservados na recuperação automática e nas atualizações da instância para que os usuários externos tenham acesso contínuo aos servidores por meio dos endereços IP publicados. Também é necessário manter os endereços IP reservados para continuidade no caso de exclusão não intencional do grupo.

Atualize o MIG para definir os endereços IP externos como sendo "com estado" usando o seguinte comando:

gcloud compute instance-groups managed update example-fs-group \
    --stateful-external-ip enabled

Como resultado, o grupo promove endereços IP externos temporários na interface de rede nic0 para endereços IP estáticos de todas as instâncias gerenciadas de maneira assíncrona.

Os endereços IP externos agora são preservados nos eventos de recuperação automática, atualização e recriação de instâncias. As reservas de endereços IP estáticos associadas não são atribuídas e são preservadas na exclusão da instância porque a regra auto-delete não especificada é definida como never por padrão.

Verifique se o IP externo com estado está configurado na política com estado executando o comando gcloud compute instance-groups managed describe example-fs-group.

REST

Para especificar os endereços IP que precisam ser "com estado" ou para atualizar a configuração de IP com estado de um MIG atual, use o método instanceGroupManagers.patch ou regionInstanceGroupManagers.patch:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

{
  "statefulPolicy": {
    "preservedState": {
      "internalIPs": {
        "NI_NAME": {"autoDelete": "DELETE_RULE" }
      },
      "externalIPs": {
        "NI_NAME": {"autoDelete": "DELETE_RULE" }
      }
    }
  }
}

Substitua:

  • PROJECT: o ID do projeto para a solicitação.
  • REGION: para MIGs regionais, a região em que o MIG está localizado. Para MIGs zonais, substitua regions/REGION por zones/ZONE e especifique a zona em que o MIG está localizado.
  • NAME: o nome do MIG que será criado;
  • NI_NAME: (obrigatório) nome da interface de rede; A interface de rede principal é denominada nic0. Se você tiver várias interfaces de rede, poderá especificar várias NI_NAMES.
  • DELETE_RULE: (opcional) determina o que precisa acontecer em um recurso de endereço estático associado quando uma instância de VM é excluída permanentemente. As opções disponíveis são estas:

    • NEVER: (padrão) nunca exclua o endereço IP estático. Em vez disso, cancele a atribuição do endereço na exclusão da instância e mantenha o endereço reservado.
    • ON_PERMANENT_INSTANCE_DELETION: exclua a reserva de endereços IP estáticos quando uma instância for excluída permanentemente do grupo. Por exemplo, quando você excluir uma instância manualmente ou diminuir o tamanho do grupo.

    Independentemente do valor da regra de exclusão, o grupo sempre preserva os endereços IP com estado nas operações de recuperação automática, atualização e recriação de instâncias.

Se um endereço IP especificado já estiver configurado na política com estado, o método aplicará patches à configuração.

Exemplo

É necessário expor um servidor de arquivos, em execução em um MIG com estado chamado example-fs-group, para usuários externos por meio de endereços IP externos estáticos. As instâncias no grupo têm endereços IP externos temporários. Certifique-se de que os endereços IP sejam preservados na recuperação automática e nas atualizações da instância para que os usuários externos tenham acesso contínuo aos servidores por meio da interface de rede publicada. Também é necessário manter os endereços IP reservados para continuidade caso ocorra exclusão de grupo não intencional.

Corrija o MIG para definir os endereços IP externos como "com estado":

PATCH https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-east1/instanceGroupManagers/example-fs-group

{
  "statefulPolicy": {
    "preservedState": {
      "externalIPs": {
        "nic0": {"autoDelete": "NEVER" }
      }
    }
  }
}

Como resultado, o grupo promove endereços IP externos temporários na interface de rede nic0 para endereços IP estáticos de todas as instâncias gerenciadas de maneira assíncrona.

Os endereços IP externos agora são preservados nos eventos de recuperação automática, atualização e recriação de instâncias. As reservas de endereços IP estáticos associadas serão canceladas e preservadas na exclusão da instância porque a regra autoDelete está definida como NEVER.

Veja o recurso regionInstanceGroupManagers retornado pelo método regionInstanceGroupManagers.get para verificar se o endereço IP externo está configurado na política com estado.

Como declarar endereços IP com estado anteriormente como sem estado

Talvez seja necessário configurar um endereço IP com estado para se tornar temporário, por exemplo, pelos seguintes motivos:

  • Você reformula seu aplicativo para não depender mais de endereços IP estáticos.
  • Você configurou o IP como sendo "com estado" por engano e quer revertê-lo.

É possível remover a configuração de IP com estado da política com estado do grupo para declarar um endereço IP em uma determinada interface de rede como temporário para todas as instâncias gerenciadas.

Quando você remove a configuração de IP com estado da política com estado, o MIG remove os endereços IP de maneira automática e assíncrona do estado preservado de todas as instâncias no grupo. Essa operação não interrompe a execução de instâncias de VM. Os endereços IP permanecem ativos nas 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 cancela a atribuição dos endereços IP estáticos associados e atribui automaticamente endereços temporários. Se você não precisar mais manter as reservas de endereços IP externos estáticos, poderá liberá-las.

Para saber mais, leia os seguintes documentos:

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 endereços IP.

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

  4. Em Configuração com estado, expanda o IP externo e/ou o IP interno 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 endereços IP de uma política com estado do MIG que será temporário, use a sinalização --remove-stateful-internal-ips ou --remove-stateful-external-ips com o comando gcloud compute instance-groups managed update:

gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \
    --remove-stateful-internal-ips NI_NAME[,NI_NAME,...] \
    --remove-stateful-external-ips NI_NAME[,NI_NAME,...]

Substitua:

  • INSTANCE_GROUP_NAME: o nome do MIG que será atualizado;
  • NI_NAME: obrigatório. Nome da interface de rede. A interface de rede principal é denominada nic0. Se você tem várias interfaces de rede, é possível especificar várias NI_NAMES.

Se você precisar transformar um endereço IP com estado da interface de rede principal padrão chamada nic0 em um endereço IP temporário, use também o seguinte comando:

gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \
    --stateful-internal-ip disabled \
    --stateful-external-ip disabled

Exemplo

O aplicativo foi exposto aos usuários por meio de endereços IP externos estáticos publicados das instâncias de VM em um MIG chamado example-group. Você pesquisou novamente seu serviço implantando um balanceador de carga na frente do MIG e roteando o tráfego para as VMs gerenciadas por meio dele. Não é mais necessário manter os endereços IP externos estáticos e fazer com que eles sejam temporários.

Para tornar os endereços IP externos com estado das VMs em um MIG efêmero, execute o seguinte comando:

gcloud compute instance-groups managed update example-group \
    --remove-stateful-external-ips nic0

O MIG remove os endereços IP externos estáticos da interface de rede nic0 de maneira automática e assíncrona do estado preservado de todas as instâncias no grupo. Os endereços IP externos permanecem ativos nas 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 cancela a atribuição dos endereços IP estáticos associados e atribui automaticamente endereços temporários. Se você não precisar mais manter as reservas de endereços IP externos estáticos, poderá liberá-las.

REST

Para especificar os endereços IP de uma política com estado do MIG que será temporário, remova a configuração de cada IP da política com estado do MIG usando o método instanceGroupManagers.patch ou regionInstanceGroupManagers.patch:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

{
  "statefulPolicy": {
    "preservedState": {
      "internalIPs": {
        "NI_NAME": null
      },
      "externalIPs": {
        "NI_NAME": null
      }
    }
  }
}

Substitua:

  • PROJECT: o ID do projeto para a solicitação.
  • REGION: para MIGs regionais, a região em que o MIG está localizado. Para MIGs zonais, substitua regions/REGION por zones/ZONE e especifique a zona em que o MIG está localizado.
  • INSTANCE_GROUP_NAME: o nome do MIG que será criado;
  • NI_NAME: (obrigatório) nome da interface de rede; A interface de rede principal é denominada nic0. Se você tiver várias interfaces de rede, poderá especificar várias NI_NAMES.

Exemplo

O aplicativo foi exposto aos usuários por meio de endereços IP externos estáticos publicados das instâncias de VM em um MIG chamado example-group. Você pesquisou novamente seu serviço implantando um balanceador de carga em frente ao MIG e roteando o tráfego para as VMs gerenciadas por meio dele. Não é mais necessário manter os endereços IP externos estáticos e quer tornar os endereços IP externos temporários.

Para tornar os endereços IP externos com estado das VMs em um MIG efêmero, corrija o MIG:

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

{
  "statefulPolicy": {
    "preservedState": {
      "externalIPs": {
        "nic0": null
      }
    }
  }
}

O MIG remove os endereços IP externos estáticos da interface de rede nic0 de maneira automática e assíncrona do estado preservado de todas as instâncias no grupo. Os endereços IP externos permanecem ativos nas 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 cancela a atribuição dos endereços IP estáticos associados e atribui automaticamente endereços temporários. Se você não precisar mais manter as reservas de endereços IP externos estáticos, poderá liberá-las.

Como configurar endereços IP com estado individualmente para VMs em um MIG

A configuração individual de endereços IP com estado para VMs em um MIG é útil nos seguintes cenários:

  • Migração de cargas de trabalho atuais (traga de endereços IP estáticos reservados existentes) de instâncias de VMs independentes para MIGs com estado a fim de aproveitar a recuperação automática e as atualizações automáticas.
  • Atribuição de endereços IP estáticos reservados específicos exigidos pela arquitetura ou configuração de carga de trabalho.

Como configurar endereços IP estáticos na criação de VMs em um MIG

É possível reservar e atribuir endereços IP estáticos a instâncias específicas na criação delas individualmente em um MIG. Isso é útil para migrar um aplicativo com estado das VMs independentes atuais para um MIG com estado em uma situação em que a arquitetura, a configuração ou os usuários dependem de endereços IP estáticos específicos.

Ao criar manualmente uma instância em um MIG e fornecer um endereço IP estático, o MIG realiza as seguintes ações:

  1. Cria uma reserva de endereço IP interno ou externo estático para os endereços IP fornecidos, caso eles ainda não existam.
  2. Cria uma instância a partir do modelo de instância usando o nome da instância e os endereços IP fornecidos.
  3. Cria uma configuração por instância com a configuração com estado fornecida para os endereços IP.

gcloud

Para criar uma instância com um endereço IP estático predefinido, use o comando gcloud compute instance-groups managed create-instance com uma ou várias das seguintes sinalizações:

  • --stateful-internal-ip para definir um endereço IP interno estático de uma determinada interface de rede.
  • --stateful-external-ip para definir um endereço IP externo estático de uma determinada interface de rede.s
gcloud compute instance-groups managed create-instance INSTANCE_GROUP_NAME \
    --instance INSTANCE_NAME \
    --stateful-internal-ip address=ADDRESS[,interface-name=NI_NAME][,auto-delete=DELETE_RULE] \
    --stateful-external-ip address=ADDRESS[,interface-name=NI_NAME][,auto-delete=DELETE_RULE]

Substitua:

  • INSTANCE_GROUP_NAME: o nome do MIG;
  • INSTANCE_NAME: o nome da instância que será criada
  • NI_NAME: opcional. Nome da interface de rede. Se ela não for fornecida, a interface de rede principal chamada nic0 será definida por padrão.s Se você tiver várias interfaces de rede, poderá especificar essa flag para cada IP em cada interface de rede.
  • ADDRESS: obrigatório. Endereço IP estático para atribuir à instância em um dos seguintes formatos:

    • Endereço. URL de uma reserva de endereço IP estático, por exemplo: "projects/example-project/regions/us-east1/addresses/example-ip-name".
    • Literal: por exemplo: "130.211.181.55".
      • Se o endereço IP fornecido ainda não estiver reservado, o MIG criará automaticamente uma reserva de endereço IP correspondente.
      • Se o endereço IP fornecido estiver reservado, o MIG atribuirá a reserva à instância.
  • DELETE_RULE: opcional. Prescreve o que precisa acontecer com um recurso de endereço estático associado quando uma instância de VM é excluída permanentemente. As opções disponíveis são estas:

    • never: padrão. Nunca exclua o endereço IP estático. Em vez disso, cancele a atribuição do endereço na exclusão da instância e mantenha o endereço reservado.
    • on-permanent-instance-deletion: exclua a reserva de endereços IP estáticos quando uma instância for excluída permanentemente do grupo. Por exemplo, quando você excluir uma instância manualmente ou diminuir o tamanho do grupo.

    Independentemente do valor da regra de exclusão, o grupo sempre preserva os endereços IP com estado nas operações de recuperação automática, atualização e recriação de instâncias.

Exemplo

É necessário adicionar mais uma instância de VM ao cluster do servidor proxy, em execução em um MIG chamado proxy-cluster. Você criou uma reserva de endereço IP interno estático chamada proxy-node-03-ip e precisa atribuí-la ao novo nó. Você quer manter a reserva de endereço IP mesmo que decida excluir o nó no futuro.

Execute este comando para criar a API:

gcloud compute instance-groups managed create-instance proxy-cluster \
    --instance proxy-node-03 \
    --stateful-internal-ip address="projects/example-project/regions/us-east1/addresses/proxy-node-03-ip",auto-delete=never

O comando cria uma instância chamada proxy-node-03, atribui o endereço IP interno estático fornecido com o nome proxy-node-03-ip à instância e armazena a configuração com estado para o IP no -instance. Como a sinalização auto-delete está definida como never, o IP permanecerá reservado se você excluir a instância posteriormente.

Terraform

Para criar uma VM com um endereço IP estático predefinido, use um ou vários dos seguintes blocos:

  • preserved_state.internal_ip para marcar um endereço IP interno de uma determinada interface de rede como "com estado".
  • preserved_state.external_ip para marcar um endereço IP externo de uma determinada interface de rede como "com estado".

O exemplo a seguir configura endereços IP estáticos na criação de VMs em um MIG regional. Para mais informações sobre o recurso usado na amostra, consulte Recurso google_compute_region_per_instance_config. Para um MIG zonal, use o recurso google_compute_per_instance_config.

resource "google_compute_region_per_instance_config" "default" {
  region_instance_group_manager = google_compute_region_instance_group_manager.default.name
  region                        = google_compute_region_instance_group_manager.default.region
  name                          = "proxy-node-03-ip"
  preserved_state {
    internal_ip {
      interface_name = "nic0"
      auto_delete    = "NEVER"
      ip_address {
        address = google_compute_address.default.id
      }
    }
  }
}

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

REST

Para criar uma ou várias instâncias em um MIG, defina nomes de instâncias personalizadas e atribua endereços IP estáticos predefinidos a essas instâncias. Para isso, use o método instanceGroupManagers.createInstances ou regionInstanceGroupManagers.createInstances.

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

{
  "instances": [
    {
      "name": "INSTANCE_NAME",
      "preservedState" : {
        "internalIPs": {
          "NI_NAME" : {
            "ipAddress": {
              "address": "ADDRESS",
              "literal": "LITERAL"
            },
            "autoDelete": "DELETE_RULE"
          },
          ...
        },
        "externalIPs": {
          "NI_NAME" : {
            "ipAddress": {
              "address": "ADDRESS",
              "literal": "LITERAL"
            },
            "autoDelete": "DELETE_RULE"
          },
          ...
        },
        ...
      }
    },
    ...
  ]
}

Substitua:

  • PROJECT_ID: o ID do projeto para a solicitação.
  • NAME: o nome do MIG;
  • REGION: para MIGs regionais, a região em que o MIG está localizado. Para MIGs zonais, substitua regions/REGION por zones/ZONE e especifique a zona em que o MIG está localizado.
  • INSTANCE_NAME: o nome da instância que será criada
  • NI_NAME: obrigatório. Nome da interface de rede. A interface de rede principal é denominada nic0. Se você tiver várias interfaces de rede, poderá especificar várias NI_NAMES.
  • ADDRESS: opcional. Endereço IP estático a ser atribuído à instância no formato de um URL de uma reserva de endereço IP estático. Por exemplo: "projects/example-project/regions/us-east1/addresses/example-ip-name". Você só pode definir um campo por vez, address ou literal, ao atribuir um endereço IP estático.
  • LITERAL: opcional. Endereço IP estático a ser atribuído à instância no formato literal. Por exemplo: "130.211.181.55". Você só pode definir um campo por vez, seja address ou literal, ao atribuir um endereço IP estático.
    • Se o endereço IP literal fornecido ainda não estiver reservado, o MIG criará automaticamente uma reserva de endereço IP correspondente.
    • Se o endereço IP literal fornecido estiver reservado, o MIG atribuirá a reserva à instância.
  • DELETE_RULE: opcional. Prescreve o que precisa acontecer com um recurso de endereço estático associado quando uma instância de VM é excluída permanentemente. As opções disponíveis são estas:

    • NEVER: padrão. Nunca exclua o endereço IP estático. Em vez disso, cancele a atribuição do endereço na exclusão da instância e mantenha o endereço reservado.
    • ON_PERMANENT_INSTANCE_DELETION: exclua a reserva de endereços IP estáticos quando uma instância for excluída permanentemente do grupo. Por exemplo, quando você excluir uma instância manualmente ou diminuir o tamanho do grupo.

    Independentemente do valor da regra de exclusão, o grupo sempre preserva os endereços IP com estado nas operações de recuperação automática, atualização e recriação de instâncias.

Exemplo

É necessário adicionar mais uma instância de VM ao cluster do servidor proxy, em execução em um MIG chamado proxy-cluster. Você criou uma reserva de endereço IP interno estático chamada proxy-node-03-ip e precisa atribuí-la ao novo nó. Você quer manter a reserva de endereço IP mesmo que decida excluir o nó no futuro.

Chame o método regionInstanceGroupManagers.createInstances para criar uma instância extra:

POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-east1/instanceGroupManagers/proxy-cluster/createInstances

{
  "instances": [
    {
      "name": "proxy-node-03",
      "preservedState" : {
        "internalIPs": {
          "nic0" : {
            "ipAddress": {
              "address": "projects/example-project/regions/us-east1/addresses/proxy-node-03-ip"
            },
            "autoDelete": "NEVER"
          }
        }
      }
    }
  ]
}

O método cria uma instância chamadaproxy-node-03 , atribui o endereço IP interno estático fornecido com o nomeproxy-node-03-ip para a instância e armazena a configuração com estado para o IP noconfiguração por instância de dados. Como o campo autoDelete está definido como NEVER, o IP permanece reservado se você excluir a instância mais tarde.

Como configurar endereços IP estáticos para uma VM em um MIG

É possível definir um endereço IP estático predefinido ou atualizar a configuração de IP com estado para uma instância gerenciada, por exemplo:

  • Atribua um endereço IP estático a uma instância atual em um MIG. Para IPs externos estáticos, essa operação requer atualização de instância e, para IPs internos estáticos, isso requer a recriação de instâncias.
  • Atualize a regra de exclusão de um endereço IP estático já atribuído. Essa operação pode ser feita sem interromper a instância em execução.

Para uma instância atual sem um endereço IP externo, em que você configura um IP com estado externo, o MIG adiciona a configuração de acesso à interface de rede correspondente com os valores padrão a seguir:

"accessConfigs": [
  {
    "kind": "compute#accessConfig",
    "name": "External Nat",
    "natIP": "XX.XX.XX.XX",
    "networkTier": "PREMIUM",
    "type": "ONE_TO_ONE_NAT"
  }
]

gcloud

Para configurar um endereço IP com estado individualmente para uma instância de VM em um MIG, adicione ou atualize a configuração de IP com estado na configuração por instância associada.

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

  • --stateful-internal-ip para definir um endereço IP interno estático de uma determinada interface de rede.
  • --stateful-external-ip para definir um endereço IP externo estático de uma determinada interface de rede.
gcloud compute instance-groups managed instance-configs create INSTANCE_GROUP_NAME \
    --instance INSTANCE_NAME \
    --stateful-internal-ip address=ADDRESS[,interface-name=NI_NAME][,auto-delete=DELETE_RULE] \
    --stateful-external-ip address=ADDRESS[,interface-name=NI_NAME][,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-internal-ipou--stateful-external-ip.

gcloud compute instance-groups managed instance-configs update INSTANCE_GROUP_NAME \
    --instance INSTANCE_NAME \
    --stateful-internal-ip address=ADDRESS[,interface-name=NI_NAME][,auto-delete=DELETE_RULE] \
    --stateful-external-ip address=ADDRESS[,interface-name=NI_NAME][,auto-delete=DELETE_RULE] \
    [--no-update-instance | --update-instance]
    [--instance-update-minimal-action MINIMAL_ACTION]

Substitua:

  • INSTANCE_GROUP_NAME: o nome do MIG;
  • INSTANCE_NAME: o nome da instância em que os endereços IP com estado serão configurados;
  • NI_NAME: opcional. Nome da interface de rede. Se ela não for fornecida, a interface de rede principal chamada nic0 será definida por padrão.s Se você tiver várias interfaces de rede, poderá especificar essa flag para cada IP em cada interface de rede.
  • ADDRESS: endereço IP estático para atribuir à instância em um dos seguintes formatos:
    • Endereço. URL de uma reserva de endereço IP estático, por exemplo: "projects/example-project/regions/us-east1/addresses/example-ip-name".
    • Literal. Por exemplo, "130.211.181.55".
      • Se o endereço IP fornecido ainda não estiver reservado, o MIG criará automaticamente uma reserva de endereço IP correspondente.
      • Se o endereço IP fornecido estiver reservado, o MIG atribuirá a reserva à instância.
    • Essa subsinalização é opcional se o endereço já estiver definido na configuração por instância da instância. Caso contrário, ela será obrigatória.
    • Se omitido, o endereço configurado atualmente permanecerá inalterado.
  • DELETE_RULE: opcional. Prescreve o que precisa acontecer com um recurso de endereço estático associado quando uma instância de VM é excluída permanentemente. As opções disponíveis são estas:

    • never: padrão. Nunca exclua o endereço IP estático. Em vez disso, cancele a atribuição do endereço na exclusão da instância e mantenha o endereço reservado.
    • on-permanent-instance-deletion: exclua a reserva de endereços IP estáticos quando uma instância for excluída permanentemente do grupo. Por exemplo, quando você excluir uma instância manualmente ou diminuir o tamanho do grupo.
    • 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.

    Independentemente do valor da regra de exclusão, o grupo sempre preserva os endereços IP com estado nas operações de recuperação automática, atualização e recriação de instâncias.

  • --update-instance: (Opcional Default.) Aplique as alterações imediatamente à instância. Se você usar a flag --no-update-instance, as alterações permanecerão não aplicadas e serão aplicadas quando você recriar ou aplicar a atualização à instância posteriormente.

  • MINIMAL_ACTION: opcional. : 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 um dos indicados abaixo:

    • none: nenhuma ação.
    • refresh: aplica as atualizações possíveis sem interromper a instância.
    • restart: interrompa a instância e inicie-a novamente.
    • replace: recrie a instância.

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

Exemplo

Você tem uma instância do servidor de arquivos chamada file-server, que é uma única instância em um MIG com estado chamado fs-group. O grupo tem uma configuração por instância correspondente, em que um disco de dados com estado é configurado. O servidor de arquivos só esteve acessível internamente, mas agora você tem usuários que precisam acessá-lo externamente por meio de um endereço IP estático. Você reservou o IP externo estático criando reserva de endereço file-server-ip. Agora você precisa atribuir esse IP à instância do servidor de arquivos.

Execute o seguinte comando para configurar o IP externo com estado para a instância do servidor de arquivos:

gcloud compute instance-groups managed instance-configs update fs-group \
    --instance file-server \
    --stateful-external-ip interface-name=nic0,address="projects/example-project/regions/us-east1/addresses/file-server-ip",auto-delete=never \
    --update-instance

O comando faz o seguinte:

  1. Atualiza a configuração por instância da instância file-server:
    1. Adiciona configuração de IP externo com estado, apontando para a reserva de endereço file-server-ip.
    2. Mantém a configuração do disco de dados com estado atual inalterada.
  2. Aplica a atualização da configuração por instância à instância file-server imediatamente porque a sinalização --update-instance está incluída: recria a instância e atribui o endereço IP externo estático da reserva file-server-ip. de dados.

REST

Para configurar IPs com estado individualmente para instâncias de VM em um MIG, adicione ou atualize a configuração do IP com estado nas configurações por instância associadas.

Se as configurações por instância ainda não existirem para as instâncias especificadas, use o método instanceGroupManagers.updatePerInstanceConfigs ou regionInstanceGroupManagers.updatePerInstanceConfigs com configuração com estado para um ou vários endereços IP:

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

{
  "perInstanceConfigs": [
    {
      "name": "INSTANCE_NAME",
      "preservedState" : {
        "internalIPs": {
          "NI_NAME" : {
            "ipAddress": {
              "address": "ADDRESS",
              "literal": "LITERAL"
            },
            "autoDelete": "DELETE_RULE"
          },
          ...
        },
        "externalIPs": {
          "NI_NAME" : {
            "ipAddress": {
              "address": "ADDRESS",
              "literal": "LITERAL"
            },
            "autoDelete": "DELETE_RULE"
          },
          ...
        },
        ...
      },
      "fingerprint: "FINGERPRINT"
    },
    ...
  ]
}

Se as configurações por instância já existirem para as instâncias especificadas, use o método instanceGroupManagers.patchPerInstanceConfigs ou o método regionInstanceGroupManagers.patchPerInstanceConfigs com configuração com estado para um ou vários endereços IP:

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

{
  "perInstanceConfigs": [
    {
      "name": "INSTANCE_NAME",
      "preservedState" : {
        "internalIPs": {
          "NI_NAME" : {
            "ipAddress": {
              "address": "ADDRESS",
              "literal": "LITERAL"
            },
            "autoDelete": "DELETE_RULE"
          },
          ...
        },
        "externalIPs": {
          "NI_NAME" : {
            "ipAddress": {
              "address": "ADDRESS",
              "literal": "LITERAL"
            },
            "autoDelete": "DELETE_RULE"
          },
          ...
        },
        ...
      },
      "fingerprint: "FINGERPRINT"
    },
    ...
  ]
}

Substitua:

  • PROJECT_ID: o ID do projeto para a solicitação.
  • NAME: o nome do MIG;
  • REGION: para MIGs regionais, a região em que o MIG está localizado. Para MIGs zonais, substitua regions/REGION por zones/ZONE e especifique a zona em que o MIG está localizado.
  • INSTANCE_NAME: obrigatório. : o nome da instância em que os metadados com estado serão configurados.
  • NI_NAME: obrigatório. Nome da interface de rede. A interface de rede principal é denominada nic0. Se você tiver várias interfaces de rede, poderá especificar várias NI_NAMES.
  • ADDRESS: opcional. Endereço IP estático a ser atribuído à instância no formato de um URL de uma reserva de endereço IP estático. Por exemplo: "projects/example-project/regions/us-east1/addresses/example-ip-name". Você só pode e pode definir um campo por vez, endereço ou literal, ao atribuir um endereço IP estático.
  • LITERAL: opcional. Endereço IP estático a ser atribuído à instância no formato literal. Por exemplo, "130.211.181.55". Você só pode definir um campo por vez, endereço ou literal, ao atribuir um endereço IP estático.
    • Se o endereço IP literal fornecido ainda não estiver reservado, o MIG criará automaticamente uma reserva de endereço IP correspondente.
    • Se o endereço IP literal fornecido estiver reservado, o MIG atribuirá a reserva à instância.
  • DELETE_RULE: opcional. Prescreve o que precisa acontecer com um recurso de endereço estático associado quando uma instância de VM é excluída permanentemente. As opções disponíveis são estas:

    • NEVER: padrão. Nunca exclua o endereço IP estático. Em vez disso, cancele a atribuição do endereço na exclusão da instância e mantenha o endereço reservado.
    • ON_PERMANENT_INSTANCE_DELETION: exclua a reserva de endereços IP estáticos quando uma instância for excluída permanentemente do grupo. Por exemplo, quando você excluir uma instância manualmente ou diminuir o tamanho do grupo.
    • 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.

    Independentemente do valor da regra de exclusão, o grupo sempre preserva os endereços IP com estado 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. A operação falhará se a impressão digital for diferente do fornecido, porque indica que a configuração por instância foi alterada desde a última leitura. Para ver a impressão digital mais recente, consulte a saída do método listPerInstanceConfigs para um MIG região ou zonal. Se fingerprint for omitido, a operação continuará sem a comparação da impressão digital.

Os métodos updatePerInstanceConfigs e patchPerInstanceConfigs atualizam as configurações especificadas por instância, mas não aplicam as atualizações às instâncias 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. É possível aplicar a atualização manualmente para aplicar as alterações a uma instância.

Exemplo

Você tem uma instância do servidor de arquivos chamada file-server, que é uma única instância em um MIG com estado chamado fs-group. O grupo tem uma configuração por instância correspondente, em que um disco de dados com estado é configurado. O servidor de arquivos só esteve acessível internamente, mas agora você tem usuários que precisam acessá-lo externamente por meio de um endereço IP estático. Você reservou o IP externo estático criando reserva de endereço file-server-ip. Agora você precisa atribuir esse IP à instância do servidor de arquivos.

Para atualizar a configuração por instância para file-server com o novo IP externo com estado, chame o método patchPerInstanceConfigs:

POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-east1/instanceGroupManagers/fs-group/patchPerInstanceConfigs

{
  "perInstanceConfigs": [
    {
      "name": "file-server",
      "preservedState" : {
        "externalIPs": {
          "nic0" : {
            "ipAddress": {
              "address": "projects/example-project/regions/us-east1/addresses/file-server-ip"
            },
            "autoDelete": "NEVER"
          }
        }
      }
    }
  ]
}

O método corrige a configuração por instância para file-server:

  1. Adiciona configuração de IP externo com estado, apontando para a reserva de endereço file-server-ip.
  2. Mantém a configuração do disco de dados com estado atual inalterada.

A atualização da configuração ainda não foi aplicada à instância de VM file-server. O MIG aplicará a atualização da configuração quando você recriar ou aplicar a atualização à instância posteriormente.

Para aplicar a atualização da configuração por instância à instância de VM file-server, chame o método regionInstanceGroupManagers.applyUpdatesToInstances para a instância:

POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-east1/instanceGroupManagers/gs-group/applyUpdatesToInstances

{
  "instances": ["/zones/us-east1-b/instances/file-server"]
}

O método atribui o endereço IP externo estático configurado da reserva file-server-ip à instância gerenciada. O método atualiza a instância file-server para atribuir um endereço IP externo.

Como autoDelete está definido como NEVER na configuração do IP com estado, o IP permanecerá reservado se você excluir a instância posteriormente.

Como desassociar endereços IP estáticos de uma VM em um MIG

Talvez seja necessário desassociar um endereço IP estático de uma VM atual, tornando a interface de rede temporária para a VM. Isso é útil nos cenários de:

  • Você reformula seu aplicativo para não depender mais de endereços IP estáticos.
  • Você configurou o IP como sendo "com estado" por engano e quer revertê-lo.

É possível desassociar um endereço IP estático de uma VM atual em MIG e tornar o endereço IP temporário para uma VM individual removendo a configuração com estado do IP da configuração por instância associada ou excluindo toda a configuração por instância, se ela não incluir outro estado. Aplicar a alteração tem os seguintes efeitos:

  • O endereço IP permanece ativo na instância, mas não está mais com estado.
  • Quando você recria ou atualiza a instância ou quando a instância é recuperada automaticamente, o MIG cancela a atribuição da reserva de endereço IP estático associada e atribui automaticamente um endereço temporário.
  • Depois disso, o endereço IP estático permanece reservado.

A remoção de uma configuração de IP com estado de uma configuração por instância não interrompe a execução de instâncias de VM, a menos que você escolha fazer isso explicitamente.

Para saber mais, assista a estes vídeos:

gcloud

Para remover uma configuração de IP com estado da configuração por instância associada, use o comando gcloud compute instance-groups managed instance-configs update com as flags --remove-stateful-internal-ips ou --remove-stateful-external-ips:

gcloud compute instance-groups managed instance-configs update INSTANCE_GROUP_NAME \
    --instance INSTANCE_NAME \
    --remove-stateful-internal-ips NI_NAME[,NI_NAME,...] \
    --remove-stateful-external-ips NI_NAME[,NI_NAME,...]
    [--no-update-instance | --update-instance] \
    [--instance-update-minimal-action MINIMAL_ACTION]

Substitua:

  • INSTANCE_GROUP_NAME: o nome do MIG;
  • INSTANCE_NAME: obrigatório. O nome da instância da qual remover a configuração do IP com estado.
  • NI_NAME: obrigatório. Nome da interface de rede. A interface de rede principal é denominada nic0. Se você tem várias interfaces de rede, é possível especificar várias NI_NAMES.
  • --update-instance: (Opcional Default.) Aplique as alterações imediatamente à instância. Se você usar a flag --no-update-instance, as alterações permanecerão não aplicadas e serão aplicadas quando você recriar ou aplicar a atualização à instância posteriormente.
  • MINIMAL_ACTION: opcional. Executa, pelo menos, a ação especificada ao aplicar a atualização da configuração por instância à instância. Essa sinalização só pode ser usada com a sinalização --update-instance. O valor precisa ser um dos indicados abaixo:

    • none: nenhuma ação.
    • refresh: aplica as atualizações possíveis sem interromper a instância.
    • restart: interrompa a instância e inicie-a novamente.
    • replace: recrie a instância.

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

Exemplo

Seu aplicativo foi exposto aos usuários por meio de endereços IP externos estáticos publicados específicos das instâncias de VM em um MIG chamado example-group. Você pesquisou novamente seu serviço implantando um balanceador de carga em frente ao MIG e roteando o tráfego para as VMs gerenciadas por meio dele. Não é mais necessário manter os endereços IP externos estáticos e fazer com que eles sejam temporários.

Para tornar os endereços IP externos com estado das VMs em um MIG efêmero, execute o seguinte comando para cada instância, por exemplo, para node-1:

gcloud compute instance-groups managed instance-configs update example-group \
    --instance node-1 \
    --remove-stateful-external-ips nic0 \
    --update-instance

O comando faz o seguinte:

  1. Remove a configuração com estado do endereço IP externo na interface de rede nic0 da configuração por instância para node-1.
  2. Aplica a atualização da configuração por instância a uma instância de VM node-1 imediatamente, porque a sinalização --update-instance foi incluída. A instância de VM não é interrompida e continua veiculando do mesmo IP, que não é mais com estado. O MIG remove a referência da reserva de IP estático do preservedStateFromConfig da instância gerenciada e trata o endereço IP externo como temporário. O MIG atribuirá automaticamente um IP externo aos eventos subsequentes de recriação, atualização ou recuperação automática de instâncias.
  3. Depois de ter sido não atribuído, o IP estático original permanece reservado. É possível liberar o IP se não precisar mais dele.

REST

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

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

{
  "perInstanceConfigs": [
    {
      "name": "INSTANCE_NAME",
      "preservedState" : {
        "internalIPs": {
          "NI_NAME" : null
        },
        "externalIPs": {
          "NI_NAME" : null
        }
      },
      "fingerprint: "FINGERPRINT"
    },
    ...
  ]
}

Substitua:

  • PROJECT_ID: o ID do projeto para a solicitação.
  • NAME: o nome do MIG;
  • REGION: para MIGs regionais, a região em que o MIG está localizado. Para MIGs zonais, substitua regions/REGION por zones/ZONE e especifique a zona em que o MIG está localizado.
  • INSTANCE_NAME: obrigatório. O nome da instância da qual remover a configuração do IP com estado.
  • NI_NAME: obrigatório. Nome da interface de rede. A interface de rede principal é denominada nic0. Se você tiver várias interfaces de rede, poderá especificar várias NI_NAMES.
  • FINGERPRINT: opcional. A impressão digital da configuração especificada, se já houver. Usada para bloqueio otimista. A operação falhará se a impressão digital for diferente do fornecido, porque indica que a configuração por instância foi alterada desde a última leitura. Para ver a impressão digital mais recente, consulte a saída do método listPerInstanceConfigs para um MIG região ou zonal. Se fingerprint for omitido, a operação continuará sem a comparação da impressão digital.

O método patchPerInstanceConfigs atualiza as configurações por instância especificadas, mas não aplica as atualizações às instâncias 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. É possível aplicar a atualização manualmente para aplicar as alterações a uma instância.

Exemplo

O aplicativo foi exposto aos usuários por meio de endereços IP externos estáticos específicos publicados das instâncias de VM em um MIG chamado example-group. Você pesquisou novamente seu serviço implantando um balanceador de carga na frente do MIG e roteando o tráfego para as VMs gerenciadas por meio dele. Não é mais necessário manter os endereços IP externos estáticos e fazer com que eles sejam temporários.

Para tornar os endereços IP externos com estado das VMs em um MIG efêmero, execute o seguinte método para cada instância, por exemplo, para node-1 e forneça o valor null para o estado da interface de rede configuração:

POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-east1/instanceGroupManagers/example-group/patchPerInstanceConfigs

{
  "perInstanceConfigs": [
    {
      "name": "node-1",
      "preservedState" : {
        "externalIPs": {
          "nic0" : null
        }
      }
    }
  ]
}

O método remove a configuração do endereço IP com estado na interface de rede nic0 da configuração por instância para node-1. A atualização da configuração ainda não foi aplicada à instância de VM node-1. O MIG aplica a atualização de configuração na próxima recriação ou atualização da instância.

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

POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-east1/instanceGroupManagers/example-group/applyUpdatesToInstances

{
  "instances": ["/zones/us-east1-c/instances/node-1"]
}

O MIG remove a referência à reserva de IP estático do campo preservedStateFromConfig da instância node-1 e trata o endereço IP como temporário. O MIG atribuirá automaticamente um IP externo a eventos de recriação, atualização ou recuperação automática de instâncias subsequentes.

Depois de ter sido não atribuído, o IP estático original permanece reservado. É possível liberar o IP se não precisar mais dele.

Como remover a configuração com estado

Para remover a configuração de uma política com estado para todas as VMs em um MIG, consulte os seguintes documentos:

Para remover a configuração de uma instância por instância de uma VM específica em um MIG, consulte os seguintes documentos:

Como limpar endereços IP estáticos não utilizados

Ao configurar o endereço IP com estado para instâncias gerenciadas em um grupo, é possível optar por liberar as reservas de endereço IP estático associadas manualmente ou automaticamente quando uma instância for excluída permanentemente:

Se você tiver instruído o MIG a nunca excluir as reservas de IP associadas, os endereços IP estáticos permanecerão reservados após as instâncias correspondentes ou o MIG deixar de existir.

Feedback

Queremos saber sobre seus casos de uso, desafios e feedback que envolvem os MIGs com estado. Deixe seu feedback com nossa equipe em mig-discuss@google.com.

A seguir