Configurar endereços IP com estado em MIGs

Ao configurar endereços IP com estado num grupo de instâncias geridas (GIG), garante que os endereços IP são preservados quando as instâncias de VM no grupo são autorreparadas, atualizadas e recriadas.

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

Antes de começar

  • Reveja quando usar MIGs com estado e como funcionam os MIGs com estado.
  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Google Cloud serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se no Compute Engine selecionando uma das seguintes opções:

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

    Console

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

    gcloud

    1. Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    2. Set a default region and zone.

    Terraform

    Para usar os exemplos do Terraform nesta página num ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e, em seguida, configure as credenciais predefinidas da aplicação com as suas credenciais de utilizador.

      Instale a CLI Google Cloud.

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

      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, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Para mais informações, consulte Set up authentication for a local development environment.

    REST

    Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.

      Instale a CLI Google Cloud.

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

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

Limitações

Um MIG com endereços IP com estado tem as seguintes limitações:

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

  • Os endereços IP internos não são suportados em redes que não tenham sub-redes, por exemplo, redes antigas.

Um MIG com uma configuração com estado, ou seja, um MIG com estado, tem as seguintes limitações:

  • Não pode usar o dimensionamento automático se o MIG tiver uma configuração com estado.
  • Se quiser usar atualizações contínuas automáticas, tem de definir o método de substituição como RECREATE.
  • Para os MIGs regionais com estado, tem de desativar a redistribuição proativa (defina o tipo de redistribuição como NONE) para impedir a eliminação de instâncias com estado pela redistribuição automática entre zonas.
  • Se usar uma configuração de todas as instâncias para substituir as propriedades do modelo de instância, não pode 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

A cobrança dos endereços IP externos é feita de acordo com os preços de rede.

Quando usar endereços IP com estado

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

  • A sua aplicação requer que um endereço IP permaneça estático depois de ter sido atribuído, por exemplo, o Kafka.
  • A configuração da sua aplicação depende de endereços IP específicos, por exemplo, um servidor DNS.
  • Os utilizadores, incluindo outras aplicações, acedem ao seu servidor através de um endereço IP estático dedicado, por exemplo, um servidor de ficheiros.
  • Tem de migrar cargas de trabalho existentes sem alterar a configuração de rede.

Configurar endereços IP com estado para todas as VMs num grupo

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

  • A sua aplicação requer que um endereço IP permaneça estático depois de ter sido atribuído. No entanto, a sua aplicação 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 seus utilizadores, incluindo outras aplicações, acedem aos seus servidores através de endereços IP estáticos que publica após implementar a sua aplicação.
  • Quer beneficiar da autorreparação de instâncias e das atualizações automáticas, ao mesmo tempo que 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 para instâncias de VM existentes e futuras no grupo, configure-o na política com estado.

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

  • Para novas instâncias, o MIG atribui e reserva automaticamente endereços IP estáticos.
  • Para instâncias existentes, o MIG promove endereços IP internos ou externos efémeros em utilização para endereços estáticos, reservando os endereços IP estáticos correspondentes.
  • Para instâncias existentes 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 predefinidos:

    "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 de endereço.

Configurar endereços IP com estado na criação de MIGs

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

Consola

  1. Na Google Cloud consola, aceda à página Grupos de instâncias.

    Aceda a Grupos de instâncias

  2. Selecione o projeto e clique em Continuar.

  3. Clique em Criar grupo de instâncias.

  4. Selecione Novo grupo de instâncias geridas (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 quer incluir no grupo de instâncias gerido.

  8. Em Configuração com estado, expanda as secções IP externo e IP interno para configurar esses tipos de endereços IP como com estado.

    1. Para Com estado, selecione Sim.
    2. Na lista Na eliminação permanente da instância, selecione a ação a realizar no endereço IP com estado quando a instância de VM for eliminada. As opções disponíveis são:
      • Desassociar IP: (predefinição). Desatribuir a morada na eliminação da instância e manter a morada reservada.
      • Eliminar IP: elimina a reserva de endereço IP estático quando uma instância é eliminada permanentemente do grupo de instâncias, por exemplo, quando elimina uma instância manualmente ou diminui o tamanho do grupo.
    3. Depois de concluir a configuração com estado, clique em Concluído.
  9. Clique em Criar.

gcloud

Quando criar um MIG, para especificar que endereços IP nas interfaces de rede do modelo de instância devem ter estado, use um ou vários dos seguintes flags com o comando gcloud compute instance-groups managed create:

  • --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 o seguinte:

  • INSTANCE_GROUP_NAME: o nome do MIG a criar.
  • INSTANCE_TEMPLATE: o nome do modelo de instância a usar quando criar novas instâncias.
  • SIZE: o número inicial de instâncias de que precisa neste grupo.
  • NI_NAME: (opcional.) Nome da interface de rede. Se não for fornecida, a opção enabled é obrigatória e a interface de rede principal denominada nic0 é assumida por predefinição. Se tiver várias interfaces de rede, pode especificar esta flag para cada IP em cada interface de rede.
  • DELETE_RULE: (opcional.) Prescreve o que deve acontecer ao recurso de endereço estático associado quando uma instância da VM é eliminada permanentemente. As opções disponíveis são as seguintes:

    • never: (predefinição.) Nunca elimine o endereço IP estático. Em alternativa, desassocie o endereço na eliminação da instância e mantenha o endereço reservado.
    • on-permanent-instance-deletion: elimine a reserva de endereço IP estático quando uma instância é eliminada permanentemente do grupo de instâncias, por exemplo, quando elimina uma instância manualmente ou diminui o tamanho do grupo.

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

Exemplo

Tem de criar um grupo regional de instâncias de VM com endereços IP internos estáticos para as redes predefinidas e personalizadas, e endereços IP externos estáticos apenas para a rede predefinida. Quer que os endereços sejam atribuídos automaticamente, mas precisa que sejam preservados através da autorreparação de instâncias, das atualizações e dos eventos de recriação. Armazena a configuração da instância num modelo de instância denominado 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 nas interfaces de rede nic0 e nic1, e o IP externo na interface de rede nic0 estão configurados como com estado para todas as instâncias no grupo. O grupo reserva automaticamente endereços IP estáticos internos e externos para cada instância. Uma vez que a flag auto-delete está definida como on-permanent-instance-deletion, o grupo elimina automaticamente as reservas de endereços IP estáticos quando elimina as instâncias associadas ou todo o grupo.

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

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

O resultado é semelhante ao seguinte:

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

Pode ver que a política com estado do grupo declara IPs internos nas interfaces de rede nic0 e nic1 e IPs externos na interface de rede nic0 como com estado com a regra para eliminar reservas de IP estáticas na eliminação permanente de instâncias.

Terraform

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

Quando cria um MIG, para especificar que endereços IP nas interfaces de rede do modelo de instância devem ter estado, use um ou vários dos seguintes blocos:

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

A amostra seguinte configura endereços IP com estado ao criar um MIG regional. Para mais informações sobre o recurso usado no exemplo, consulte o google_compute_region_instance_group_managerrecurso.

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 os comandos básicos do Terraform.

REST

Quando cria um MIG, para especificar que endereços IP nas interfaces de rede do modelo de instância devem ser com estado, inclua-os no campo statefulPolicy no corpo do pedido 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 o seguinte:

  • PROJECT: o ID do projeto para o pedido.
  • REGION: para GIGs regionais, a região onde o grupo está localizado. Para MIGs zonais, substitua regions/REGION por zones/ZONE e especifique a zona onde o MIG está localizado.
  • NAME: o nome do MIG a criar.
  • INSTANCE_TEMPLATE: O nome do modelo de instância a usar quando criar novas instâncias.
  • SIZE: o número inicial de instâncias de que precisa neste grupo.
  • NI_NAME: (opcional.) Nome da interface de rede. Se não for fornecida, a opção enabled é obrigatória e a interface de rede principal denominada nic0 é assumida por predefinição. Se tiver várias interfaces de rede, pode especificar vários NI_NAMES.
  • DELETE_RULE: (Opcional) Prescreve o que deve acontecer a um recurso de Address estático associado quando uma instância de VM é eliminada permanentemente. As opções disponíveis são as seguintes:

    • NEVER: (Predefinição) Nunca elimine o endereço IP estático. Em alternativa, desassocie o endereço na eliminação da instância e mantenha o endereço reservado.
    • ON_PERMANENT_INSTANCE_DELETION: elimine a reserva de endereço IP estático quando uma instância é eliminada permanentemente do grupo de instâncias, por exemplo, quando elimina uma instância manualmente ou diminui o tamanho do grupo.

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

Exemplo

Tem de criar um grupo regional de instâncias de VM com endereços IP internos estáticos para as redes predefinidas e personalizadas, e endereços IP externos estáticos apenas para a rede predefinida. Quer que os endereços sejam atribuídos automaticamente, mas precisa que sejam preservados através da autorreparação de instâncias, das atualizações e dos eventos de recriação. Armazena a configuração da instância num modelo de instância denominado node-template.

Para criar o grupo, 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 nas interfaces de rede nic0 e nic1, e os IPs externos na interface de rede nic0, estão configurados como com estado para todas as instâncias no grupo. O grupo reserva automaticamente endereços IP estáticos internos e externos para cada instância. Uma vez que o campo auto-delete está definido como ON_PERMANENT_INSTANCE_DELETION, o grupo elimina automaticamente as reservas de endereços IP estáticos quando elimina instâncias associadas ou todo o grupo.

Use o método regionInstanceGroupManagers.get para verificar se os IPs internos nas interfaces de rede nic0 e nic1 e os IPs externos na 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" }
      }
    }
  }
  ...
}

Pode ver que a política com estado do grupo declara IPs internos nas interfaces de rede nic0 e nic1 e IPs externos na interface de rede nic0 como com estado com a regra para eliminar as reservas de endereços IP estáticos associadas na eliminação permanente de instâncias.

Definir e atualizar a configuração com estado para endereços IP no MIG existente

Se executar uma carga de trabalho num MIG sem estado (um MIG sem qualquer configuração com estado) e a carga de trabalho exigir endereços IP estáticos, pode configurar os endereços IP já atribuídos às instâncias de VMs geridas para que se tornem com estado. Isto garante que os endereços IP das suas VMs existentes são preservados em eventos de atualização, recriação e autocura de instâncias. Opcionalmente, pode manter as reservas de endereços IP estáticos depois de as instâncias terem sido eliminadas.

Ao configurar uma política com estado para endereços IP num MIG existente, pode fazer o seguinte:

  • Configure os endereços IP como com estado para todas as instâncias existentes e futuras no grupo. Isto promove os endereços IP efémeros correspondentes de todas as instâncias existentes a endereços IP estáticos.
  • Atualize a configuração com estado existente para endereços IP.

O MIG aplica a configuração atualizada na política com estado automaticamente e de forma assíncrona a todas as instâncias. As atualizações às configurações de endereços IP numa política com estado não interrompem as instâncias de VMs em execução. Para saber mais, leia acerca da aplicação de atualizações de políticas com estado.

Consola

  1. Na Google Cloud consola, aceda à página Grupos de instâncias.

    Aceda a Grupos de instâncias

  2. Clique no nome do grupo de instâncias para o qual quer especificar endereços IP com estado.

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

  4. Clique em Configuração com estado e por instância para expandir a secção.

  5. Na secção Configuração do grupo, clique no IP externo e no IP interno que quer tornar com estado.

    1. Para Com estado, selecione Sim.
    2. Na lista Na eliminação permanente da instância, selecione a ação a realizar no endereço IP com estado quando a instância de VM for eliminada. As opções disponíveis são:
      • Desassociar IP: (predefinição). Desatribuir a morada na eliminação da instância e manter a morada reservada.
      • Eliminar IP: elimina a reserva de endereço IP estático quando uma instância é eliminada permanentemente do grupo de instâncias, por exemplo, quando elimina uma instância manualmente ou diminui o tamanho do grupo.
    3. Depois de atualizar a configuração com estado, clique em Concluído.
    4. Clique em Guardar para concluir a atualização.

gcloud

Para especificar que endereços IP devem ser com estado ou para atualizar a configuração de IP com estado para um MIG existente, use um ou vários flags --stateful-internal-ip ou --stateful-external-ip com o comando 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 o seguinte:

  • INSTANCE_GROUP_NAME: o nome do MIG a atualizar.
  • NI_NAME: (opcional.) Nome da interface de rede. Se não for fornecida, a opção enabled é obrigatória e a interface de rede principal denominada nic0 é assumida por predefinição. Se tiver várias interfaces de rede, pode especificar esta flag para cada IP em cada interface de rede.
  • DELETE_RULE: (opcional.) Prescreve o que deve acontecer a um recurso de endereço estático associado quando uma instância da VM é eliminada permanentemente. As opções disponíveis são as seguintes:

    • never: (predefinição.) Nunca elimine o endereço IP estático. Em alternativa, desassocie o endereço na eliminação da instância e mantenha o endereço reservado.
    • on-permanent-instance-deletion: elimine a reserva de endereço IP estático quando uma instância é eliminada permanentemente do grupo de instâncias, por exemplo, quando elimina uma instância manualmente ou diminui o tamanho do grupo.

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

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

Exemplo

Tem de expor um servidor de ficheiros, executado num MIG com estado denominado example-fs-group, a utilizadores externos através de endereços IP externos estáticos. As instâncias no grupo têm endereços IP externos efémeros. Tem de garantir que os endereços IP são preservados na autorreparação e nas atualizações das instâncias para que os utilizadores externos tenham acesso contínuo aos servidores através dos endereços IP publicados. Também tem de manter os endereços IP reservados para continuidade em caso de eliminação não intencional de grupos.

Atualize o MIG para definir os endereços IP externos como com estado através do seguinte comando:

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

Como resultado, o grupo promove endereços IP externos efémeros na interface de rede nic0 para endereços IP estáticos para todas as instâncias geridas de forma assíncrona.

Os endereços IP externos são agora preservados em eventos de autocura, atualização e recriação de instâncias. As reservas de endereços IP estáticos associadas são anuladas e preservadas na eliminação da instância porque a regra auto-delete não especificada está definida como never por predefinição.

Pode verificar 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 que endereços IP devem ser com estado ou para atualizar a configuração de IP com estado para um MIG existente, 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 o seguinte:

  • PROJECT: o ID do projeto para o pedido.
  • REGION: para GIGs regionais, a região onde o grupo está localizado. Para MIGs zonais, substitua regions/REGION por zones/ZONE e especifique a zona onde o MIG está localizado.
  • NAME: o nome do MIG a criar.
  • NI_NAME: (Obrigatório) Nome da interface de rede. A interface de rede principal tem o nome nic0. Se tiver várias interfaces de rede, pode especificar vários NI_NAMES.
  • DELETE_RULE: (Opcional) Prescreve o que deve acontecer a um recurso de Address estático associado quando uma instância de VM é eliminada permanentemente. As opções disponíveis são as seguintes:

    • NEVER: (Predefinição) Nunca elimine o endereço IP estático. Em alternativa, desassocie o endereço na eliminação da instância e mantenha o endereço reservado.
    • ON_PERMANENT_INSTANCE_DELETION: elimine a reserva de endereço IP estático quando uma instância é eliminada permanentemente do grupo de instâncias, por exemplo, quando elimina uma instância manualmente ou diminui o tamanho do grupo.

    Independentemente do valor da regra de eliminação, o grupo preserva sempre os endereços IP com estado nas operações de autocura, 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 corrige a configuração.

Exemplo

Tem de expor um servidor de ficheiros, executado num MIG com estado denominado example-fs-group, a utilizadores externos através de endereços IP externos estáticos. As instâncias no grupo têm endereços IP externos efémeros. Tem de garantir que os endereços IP são preservados na autorreparação e nas atualizações das instâncias para que os utilizadores externos tenham acesso contínuo aos servidores através da interface de rede publicada. Também tem de manter os endereços IP reservados para continuidade em caso de eliminação não intencional de grupos.

Aplique uma correção ao 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 efémeros na interface de rede nic0 para endereços IP estáticos para todas as instâncias geridas de forma assíncrona.

Os endereços IP externos são agora preservados em eventos de autocura, atualização e recriação de instâncias. As reservas de endereços IP estáticos associadas são anuladas e preservadas na eliminação da instância porque a regra autoDelete está definida como NEVER.

Verifique se o endereço IP externo está configurado na política com estado, vendo o recurso regionInstanceGroupManagers devolvido pelo método regionInstanceGroupManagers.get.

Declarar endereços IP com estado anterior como sem estado

Pode ter de configurar um endereço IP com estado para se tornar efémero, por exemplo, pelos seguintes motivos:

  • Reestruturar a sua app para deixar de depender de endereços IP estáticos.
  • Configurou o IP como Stateful por engano e quer reverter essa configuração.

Pode remover a configuração de IP com estado da política com estado do grupo para declarar um endereço IP numa determinada interface de rede como efémero para todas as instâncias geridas.

Quando remove a configuração de IP com estado da política com estado, o GIG remove os endereços IP automaticamente e de forma assíncrona do estado preservado de todas as instâncias no grupo. Esta operação não interrompe as instâncias de VMs em execução. Os endereços IP permanecem ativos nas instâncias, mas deixam de ser com estado. Quando recria ou atualiza as instâncias, ou quando as instâncias são reparadas automaticamente, o MIG desatribui os endereços IP estáticos associados e atribui automaticamente endereços efémeros. Se já não precisar de manter as reservas de endereços IP externos estáticos, pode agora libertá-las.

Para saber mais, leia os seguintes documentos:

Consola

  1. Na Google Cloud consola, aceda à página Grupos de instâncias.

    Aceda a Grupos de instâncias

  2. Clique no nome do grupo de instâncias do qual quer remover a configuração com estado para endereços IP.

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

  4. Clique em Configuração com estado e por instância para expandir a secção.

  5. Na secção Configuração do grupo, expanda o IP externo e o IP interno que quer tornar sem estado.

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

gcloud

Para especificar que endereços IP da política com estado de um MIG devem ser efémeros, use a flag --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 o seguinte:

  • INSTANCE_GROUP_NAME: o nome do MIG a atualizar.
  • NI_NAME: (obrigatório) Nome da interface de rede. A interface de rede principal tem o nome nic0. Se tiver várias interfaces de rede, pode especificar vários NI_NAMES.

Se precisar de transformar um endereço IP com estado da interface de rede principal predefinida denominada nic0 num endereço IP efémero, também pode usar o seguinte comando:

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

Exemplo

A sua aplicação foi exposta aos utilizadores através de endereços IP externos estáticos publicados das instâncias de VM num MIG denominado example-group. Reestruturou o seu serviço implementando um balanceador de carga à frente do MIG e encaminhando o tráfego para as VMs geridas através dele. Já não precisa de manter os endereços IP externos estáticos e quer tornar os endereços IP externos das VMs efémeros.

Para tornar os endereços IP externos com estado das VMs num MIG efémeros, 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 forma 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 deixam de ter estado. Quando recria ou atualiza as instâncias, ou quando as instâncias são reparadas automaticamente, o MIG desatribui os endereços IP estáticos associados e atribui automaticamente endereços efémeros. Se já não precisar de manter as reservas de endereços IP externos estáticos, pode libertá-las.

REST

Para especificar que endereços IP da política com estado de um MIG devem ser efémeros, remova a configuração de cada IP da política com estado do MIG através do 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 o seguinte:

  • PROJECT: o ID do projeto para o pedido.
  • REGION: para GIGs regionais, a região onde o grupo está localizado. Para MIGs zonais, substitua regions/REGION por zones/ZONE e especifique a zona onde o MIG está localizado.
  • INSTANCE_GROUP_NAME: o nome do MIG a criar.
  • NI_NAME: (Obrigatório) Nome da interface de rede. A interface de rede principal tem o nome nic0. Se tiver várias interfaces de rede, pode especificar vários NI_NAMES.

Exemplo

A sua aplicação foi exposta aos utilizadores através de endereços IP externos estáticos publicados das instâncias de VM num MIG denominado example-group. Reestruturou o seu serviço implementando um balanceador de carga à frente do MIG e encaminhando o tráfego para as VMs geridas através dele. Já não precisa de manter os endereços IP externos estáticos e quer tornar os endereços IP externos das VMs efémeros.

Para tornar os endereços IP externos com estado das VMs num MIG efémeros, aplique uma patch ao 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 forma 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 deixam de ter estado. Quando recria ou atualiza as instâncias, ou quando as instâncias são reparadas automaticamente, o MIG desatribui os endereços IP estáticos associados e atribui automaticamente endereços efémeros. Se já não precisar de manter as reservas de endereços IP externos estáticos, pode agora libertá-las.

Configurar endereços IP com estado individualmente para VMs num MIG

Configurar endereços IP com estado individualmente para VMs num MIG é útil nos seguintes cenários:

  • Migrar cargas de trabalho existentes (transferir endereços IP estáticos reservados existentes) de instâncias de VMs autónomas para GIGs com estado para beneficiar da autorreparação e das atualizações automáticas.
  • Atribuir endereços IP estáticos reservados específicos exigidos pela arquitetura ou pela configuração da carga de trabalho.

Configurar endereços IP estáticos na criação de VMs num MIG

Pode reservar e atribuir endereços IP estáticos a instâncias específicas quando cria individualmente essas instâncias num MIG. Isto é útil para migrar uma aplicação com estado de VMs autónomas existentes para um MIG com estado numa situação em que a arquitetura, a configuração ou os utilizadores dependem de endereços IP estáticos específicos.

Quando cria manualmente uma instância num MIG e fornece um endereço IP estático, o MIG executa as seguintes ações:

  1. Cria uma reserva de endereço IP interno ou externo estático para os endereços IP fornecidos, se ainda não existirem.
  2. Cria uma instância a partir do modelo de instância com 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 um ou vários dos seguintes flags:

  • --stateful-internal-ip para definir um endereço IP interno estático de uma interface de rede específica.
  • --stateful-external-ip para definir um endereço IP externo estático de uma interface de rede específica.
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 o seguinte:

  • INSTANCE_GROUP_NAME: o nome do MIG.
  • INSTANCE_NAME: o nome da instância a criar.
  • NI_NAME: (opcional.) Nome da interface de rede. Se não for fornecida, a interface de rede principal denominada nic0 é assumida por predefinição. Se tiver várias interfaces de rede, pode especificar esta flag para cada IP em cada interface de rede.
  • ADDRESS: (obrigatório) Endereço IP estático a atribuir à instância num dos seguintes formatos:

    • Morada. 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 cria automaticamente uma reserva de endereço IP correspondente.
      • Se o endereço IP fornecido estiver reservado, o MIG atribui a reserva à instância.
  • DELETE_RULE: (opcional.) Prescreve o que deve acontecer a um recurso de endereço estático associado quando uma instância de VM é eliminada permanentemente. As opções disponíveis são as seguintes:

    • never: (predefinição.) Nunca elimine o endereço IP estático. Em alternativa, desassocie o endereço na eliminação da instância e mantenha o endereço reservado.
    • on-permanent-instance-deletion: elimine a reserva de endereço IP estático quando uma instância é eliminada permanentemente do grupo de instâncias, por exemplo, quando elimina uma instância manualmente ou diminui o tamanho do grupo.

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

Exemplo

Tem de adicionar mais uma instância de VM ao cluster do servidor proxy, em execução num GIG denominado proxy-cluster. Criou uma reserva de endereço IP interno estático denominada proxy-node-03-ip e tem de a atribuir ao novo nó. Quiser manter a reserva de endereço IP, mesmo que decida eliminar o nó no futuro.

Execute o seguinte comando para criar o nó:

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 denominada proxy-node-03, atribui o endereço IP interno estático fornecido denominado proxy-node-03-ip à instância e armazena a configuração com estado para o IP na configuração por instância correspondente. Uma vez que a flag auto-delete está definida como never, o IP permanece reservado se eliminar a instância mais tarde.

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.

A configuração de exemplo seguinte configura endereços IP estáticos na criação de VMs num MIG regional. Para mais informações sobre o recurso usado no exemplo, consulte o google_compute_region_per_instance_configrecurso. 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 os comandos básicos do Terraform.

REST

Para criar uma ou várias instâncias num MIG, definir nomes de instâncias personalizados e atribuir endereços IP estáticos predefinidos a estas instâncias, 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 o seguinte:

  • PROJECT_ID: o ID do projeto para o pedido.
  • NAME: o nome do MIG.
  • REGION: para GIGs regionais, a região onde o grupo está localizado. Para MIGs zonais, substitua regions/REGION por zones/ZONE e especifique a zona onde o MIG está localizado.
  • INSTANCE_NAME: o nome da instância a criar.
  • NI_NAME: (obrigatório) Nome da interface de rede. A interface de rede principal tem o nome nic0. Se tiver várias interfaces de rede, pode especificar vários NI_NAMES.
  • ADDRESS: (opcional.) Endereço IP estático a atribuir à 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". Tem de definir e só pode definir um campo de cada vez, address ou literal, quando atribui um endereço IP estático.
  • LITERAL: (opcional.) Endereço IP estático a atribuir à instância no formato literal, por exemplo: "130.211.181.55". Tem de definir apenas um campo de cada vez, address ou literal, quando atribui um endereço IP estático.
    • Se o endereço IP literal fornecido ainda não estiver reservado, o MIG cria automaticamente uma reserva de endereço IP correspondente.
    • Se o endereço IP literal fornecido estiver reservado, o MIG atribui a reserva à instância.
  • DELETE_RULE: (opcional.) Prescreve o que deve acontecer a um recurso de endereço estático associado quando uma instância de VM é eliminada permanentemente. As opções disponíveis são as seguintes:

    • NEVER: (predefinição.) Nunca elimine o endereço IP estático. Em alternativa, desassocie o endereço na eliminação da instância e mantenha o endereço reservado.
    • ON_PERMANENT_INSTANCE_DELETION: elimine a reserva de endereço IP estático quando uma instância é eliminada permanentemente do grupo de instâncias, por exemplo, quando elimina uma instância manualmente ou diminui o tamanho do grupo.

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

Exemplo

Tem de adicionar mais uma instância de VM ao cluster do servidor proxy, em execução num GIG denominado proxy-cluster. Criou uma reserva de endereço IP interno estático denominada proxy-node-03-ip e tem de a atribuir ao novo nó. Quiser manter a reserva de endereço IP, mesmo que decida eliminar o nó no futuro.

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

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 com o nome 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 na configuração por instância correspondente. Uma vez que o campo autoDelete está definido como NEVER, o IP permanece reservado se eliminar a instância posteriormente.

Configurar endereços IP estáticos para uma VM existente num MIG

Pode definir um endereço IP estático predefinido ou atualizar a configuração de IP com estado para uma instância gerida individualmente, por exemplo:

  • Atribua um endereço IP estático a uma instância existente num MIG. Para IPs externos estáticos, esta operação requer a atualização da instância e, para IPs internos estáticos, requer a recriação da instância.
  • Atualize a regra de eliminação de um endereço IP estático já atribuído. Esta operação pode ser feita sem interromper a instância em execução.

Para uma instância existente sem um endereço IP externo, para a qual configura um IP externo com estado, o MIG adiciona configuração de acesso à interface de rede correspondente com os seguintes valores predefinidos:

"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 num MIG, adicione ou atualize a configuração de IP com estado na configuração por instância associada.

Se ainda não existir uma configuração por instância para a instância, use o comando gcloud compute instance-groups managed instance-configs create com um ou vários dos seguintes flags:

  • --stateful-internal-ip para definir um endereço IP interno estático de uma interface de rede específica.
  • --stateful-external-ip para definir um endereço IP externo estático de uma interface de rede específica.
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á existir uma configuração por instância para a instância, use o comando gcloud compute instance-groups managed instance-configs update com uma ou várias flags --stateful-internal-ip ou --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 o seguinte:

  • INSTANCE_GROUP_NAME: o nome do MIG.
  • INSTANCE_NAME: O nome da instância para a qual configurar endereços IP com estado.
  • NI_NAME: (opcional.) Nome da interface de rede. Se não for fornecida, a interface de rede principal denominada nic0 é assumida por predefinição. Se tiver várias interfaces de rede, pode especificar esta flag para cada IP em cada interface de rede.
  • ADDRESS: endereço IP estático a atribuir à instância num dos seguintes formatos:
    • Morada. 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 cria automaticamente uma reserva de endereço IP correspondente.
      • Se o endereço IP fornecido estiver reservado, o MIG atribui a reserva à instância.
    • Esta subflag é opcional se o endereço já estiver definido na configuração por instância da instância. Caso contrário, é obrigatório.
    • Se for omitido, o endereço configurado permanece inalterado.
  • DELETE_RULE: (opcional.) Prescreve o que deve acontecer a um recurso de endereço estático associado quando uma instância de VM é eliminada permanentemente. As opções disponíveis são as seguintes:

    • never: (predefinição.) Nunca elimine o endereço IP estático. Em alternativa, desassocie o endereço na eliminação da instância e mantenha o endereço reservado.
    • on-permanent-instance-deletion: elimine a reserva de endereço IP estático quando uma instância é eliminada permanentemente do grupo de instâncias, por exemplo, quando elimina uma instância manualmente ou diminui o tamanho do grupo.
    • Se for omitido, o valor predefinido é definido para uma nova configuração de IP com estado; o valor permanece inalterado numa configuração existente.

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

  • --update-instance: (opcional. Default.) Aplicar as alterações imediatamente à instância. Se usar a flag --no-update-instance, as alterações permanecem não aplicadas e são aplicadas quando recria ou aplica a atualização à instância mais tarde.

  • MINIMAL_ACTION: (opcional.) Realize, pelo menos, a ação especificada quando aplicar a atualização da configuração por instância à instância. Tem de ser usado em conjunto com a flag --update-instance. O valor tem de ser um dos seguintes:

    • none: nenhuma ação.
    • refresh: aplique atualizações que sejam possíveis aplicar sem parar a instância.
    • restart: pare a instância e, em seguida, inicie-a novamente.
    • replace: recrie a instância.

Se for omitido, é usada a ação menos disruptiva exigida pela atualização.

Exemplo

Tem uma instância do servidor de ficheiros denominada file-server, que é uma única instância num MIG com estado denominado fs-group. O grupo tem uma configuração por instância correspondente, em que é configurado um disco de dados com estado. O servidor de ficheiros só estava acessível internamente, mas agora tem utilizadores que precisam de aceder externamente através de um endereço IP estático. Reservou o IP externo estático criando uma reserva de endereço file-server-ip. Agora, tem de atribuir este IP à instância do servidor de ficheiros.

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

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 para a instância file-server:
    1. Adiciona a 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 existente inalterada.
  2. Aplica a atualização de configuração por instância à instância file-server imediatamente porque a flag --update-instance está incluída: atualiza a instância e atribui o endereço IP externo estático da reserva file-server-ip.

REST

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

Se ainda não existirem configurações por instância para as instâncias indicadas, use o método instanceGroupManagers.updatePerInstanceConfigs ou o método 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 já existirem configurações por instância para as instâncias indicadas, 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 o seguinte:

  • PROJECT_ID: o ID do projeto para o pedido.
  • NAME: o nome do MIG.
  • REGION: para GIGs regionais, a região onde o grupo está localizado. Para MIGs zonais, substitua regions/REGION por zones/ZONE e especifique a zona onde o MIG está localizado.
  • INSTANCE_NAME: (obrigatório) O nome da instância para a qual configurar IPs com estado.
  • NI_NAME: (obrigatório) Nome da interface de rede. A interface de rede principal tem o nome nic0. Se tiver várias interfaces de rede, pode especificar vários NI_NAMES.
  • ADDRESS: (opcional.) Endereço IP estático a atribuir à 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". Tem de definir e só pode definir um campo de cada vez, seja o endereço ou o literal, quando atribui um endereço IP estático.
  • LITERAL: (opcional.) Endereço IP estático a atribuir à instância no formato literal. Por exemplo: "130.211.181.55". Tem de e só pode definir um campo de cada vez, seja o endereço ou o literal, quando atribui um endereço IP estático.
    • Se o endereço IP literal fornecido ainda não estiver reservado, o MIG cria automaticamente uma reserva de endereço IP correspondente.
    • Se o endereço IP literal fornecido estiver reservado, o MIG atribui a reserva à instância.
  • DELETE_RULE: (opcional.) Prescreve o que deve acontecer a um recurso de endereço estático associado quando uma instância de VM é eliminada permanentemente. As opções disponíveis são as seguintes:

    • NEVER: (predefinição.) Nunca elimine o endereço IP estático. Em alternativa, desassocie o endereço na eliminação da instância e mantenha o endereço reservado.
    • ON_PERMANENT_INSTANCE_DELETION: elimine a reserva de endereço IP estático quando uma instância é eliminada permanentemente do grupo de instâncias, por exemplo, quando elimina uma instância manualmente ou diminui o tamanho do grupo.
    • Se for omitido, o valor predefinido é definido para uma nova configuração de IP com estado; o valor permanece inalterado numa configuração existente.

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

  • FINGERPRINT: (opcional.) A impressão digital da configuração fornecida, se já existir. Usado para bloqueio otimista. A operação falha se a impressão digital for diferente da fornecida, uma vez que indica que a configuração por instância foi alterada desde a última leitura. Para ver a impressão digital mais recente, consulte o resultado do método listPerInstanceConfigs para um MIG regional ou zonal. Se fingerprint for omitido, a operação prossegue sem a comparação de impressões digitais.

Os métodos updatePerInstanceConfigs e patchPerInstanceConfigs atualizam as configurações especificadas por instância, mas não aplicam as atualizações de configuração às instâncias geridas associadas. As alterações são aplicadas a uma instância quando o MIG recebe instruções para recriar ou atualizar a instância. Pode aplicar a atualização manualmente para aplicar as alterações a uma instância.

Exemplo

Tem uma instância do servidor de ficheiros denominada file-server, que é uma única instância num MIG com estado denominado fs-group. O grupo tem uma configuração por instância correspondente, em que é configurado um disco de dados com estado. O servidor de ficheiros só estava acessível internamente, mas agora tem utilizadores que precisam de aceder externamente através de um endereço IP estático. Reservou o IP externo estático criando uma reserva de endereço file-server-ip. Agora, tem de atribuir este IP à instância do servidor de ficheiros.

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 aplica patches à configuração por instância para file-server instance:

  1. Adiciona a 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 existente inalterada.

A atualização da configuração ainda não foi aplicada à instância de VM file-server. O MIG aplica a atualização de configuração quando recria ou aplica a atualização à instância mais tarde.

Para aplicar a atualização de 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 a partir da reserva file-server-ip à instância gerida. O método atualiza a instância file-server para atribuir um endereço IP externo.

Uma vez que autoDelete está definido como NEVER na configuração de IP com estado, o IP permanece reservado se eliminar a instância mais tarde.

Desassociar endereços IP estáticos de uma VM existente num GIG

Pode ter de desassociar um endereço IP estático de uma VM existente, tornando a interface de rede efémera para a VM. Isto é útil nos seguintes cenários:

  • Reestruturar a sua app para deixar de depender de endereços IP estáticos.
  • Configurou o IP como Stateful por engano e quer reverter essa configuração.

Pode desassociar um endereço IP estático de uma VM existente no MIG e tornar o endereço IP efémero para uma VM individual removendo a configuração com estado do IP da configuração por instância associada ou eliminando toda a configuração por instância se não contiver outro estado. A aplicar a alteração tem os seguintes efeitos:

  • O endereço IP permanece ativo na instância, mas deixa de ter estado.
  • Quando recria ou atualiza a instância, ou quando a instância é reparada automaticamente, o MIG desatribui a reserva de endereço IP estático associada e atribui automaticamente um endereço efémero.
  • Depois de ter sido anulado, 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 as instâncias de VM em execução, a menos que opte explicitamente por fazê-lo.

Para saber mais, consulte os seguintes documentos:

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 o seguinte:

  • INSTANCE_GROUP_NAME: o nome do MIG.
  • INSTANCE_NAME: (obrigatório) O nome da instância para a qual remover a configuração de IP com estado.
  • NI_NAME: (obrigatório) Nome da interface de rede. A interface de rede principal tem o nome nic0. Se tiver várias interfaces de rede, pode especificar vários NI_NAMES.
  • --update-instance: (opcional. Default.) Aplicar as alterações imediatamente à instância. Se usar a flag --no-update-instance, as alterações permanecem não aplicadas e são aplicadas quando recria ou aplica a atualização à instância mais tarde.
  • MINIMAL_ACTION: (opcional.) Realize, pelo menos, a ação especificada quando aplicar a atualização da configuração por instância à instância. Esta flag só pode ser usada em conjunto com a flag --update-instance. O valor tem de ser um dos seguintes:

    • none: nenhuma ação.
    • refresh: aplique atualizações que sejam possíveis aplicar sem parar a instância.
    • restart: pare a instância e, em seguida, inicie-a novamente.
    • replace: recrie a instância.

    Se for omitido, é usada a ação menos disruptiva exigida pela atualização.

Exemplo

A sua aplicação foi exposta aos utilizadores através de endereços IP externos estáticos publicados específicos das instâncias de VM num MIG denominado example-group. Reestruturou o seu serviço implementando um balanceador de carga à frente do MIG e encaminhando o tráfego para as VMs geridas através dele. Já não precisa de manter os endereços IP externos estáticos e quer tornar os endereços IP externos das VMs efémeros.

Para tornar os endereços IP externos com estado das VMs num MIG efémeros, 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 de configuração por instância à instância de VM node-1 imediatamente porque a flag --update-instance está incluída. A instância de VM não é interrompida e continua a publicar a partir do mesmo IP, que já não tem estado. O MIG remove a referência à reserva de IP estático da preservedStateFromConfig da instância gerida e trata o endereço IP externo como temporário. O MIG atribui automaticamente um IP externo na recriação, atualização ou eventos de autorreparação de instâncias subsequentes.
  3. Depois de ter sido desatribuído, o IP estático original permanece reservado. Pode libertar o IP se já não precisar 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 o 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 o seguinte:

  • PROJECT_ID: o ID do projeto para o pedido.
  • NAME: o nome do MIG.
  • REGION: para GIGs regionais, a região onde o grupo está localizado. Para MIGs zonais, substitua regions/REGION por zones/ZONE e especifique a zona onde o MIG está localizado.
  • INSTANCE_NAME: (obrigatório) O nome da instância para a qual remover a configuração de IP com estado.
  • NI_NAME: (obrigatório) Nome da interface de rede. A interface de rede principal tem o nome nic0. Se tiver várias interfaces de rede, pode especificar vários NI_NAMES.
  • FINGERPRINT: (opcional.) A impressão digital da configuração fornecida, se já existir. Usado para bloqueio otimista. A operação falha se a impressão digital for diferente da fornecida, uma vez que indica que a configuração por instância foi alterada desde a última leitura. Para ver a impressão digital mais recente, consulte o resultado do método listPerInstanceConfigs para um MIG regional ou zonal. Se fingerprint for omitido, a operação prossegue sem a comparação de impressões digitais.

O método patchPerInstanceConfigs atualiza as configurações especificadas por instância, mas não aplica as atualizações de configuração às instâncias geridas associadas. As alterações são aplicadas a uma instância quando o MIG recebe instruções para recriar ou atualizar a instância. Pode aplicar a atualização manualmente para aplicar as alterações a uma instância.

Exemplo

A sua aplicação foi exposta aos utilizadores através de endereços IP externos estáticos publicados específicos das instâncias de VM num MIG denominado example-group. Reestruturou o seu serviço implementando um balanceador de carga à frente do MIG e encaminhando o tráfego para as VMs geridas através dele. Já não precisa de manter os endereços IP externos estáticos e quer tornar os endereços IP externos das VMs efémeros.

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

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 da configuração por instância para node-1.nic0 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 de configuração por instância à instância de VM node-1, execute 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 para a instância node-1 e trata o endereço IP como efémero. O MIG atribui automaticamente um IP externo em eventos de recriação, atualização ou autocura de instâncias subsequentes.

Depois de ter sido desatribuído, o IP estático original permanece reservado. Pode libertar o IP se já não precisar dele.

Remover configuração com estado

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

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

Limpar endereços IP estáticos não usados

Quando configura um endereço IP com estado para instâncias geridas num grupo, pode escolher se quer libertar as reservas de endereços IP estáticos associadas manual ou automaticamente quando uma instância é eliminada permanentemente:

  • Para libertar automaticamente as reservas de endereços IP estáticos na eliminação permanente de instâncias, defina o parâmetro autoDelete como ON_PERMANENT_INSTANCE_DELETION.
  • Para libertar manualmente as reservas de endereços IP estáticos, defina o parâmetro autoDelete como NEVER. Para limpar as reservas de endereços IP estáticos não usados, por exemplo, para evitar cobranças desnecessárias, consulte os seguintes documentos:

Se tiver dado instruções ao MIG para nunca eliminar as reservas de IP associadas, os endereços IP estáticos permanecem reservados depois de as instâncias correspondentes ou o MIG deixarem de existir.

Feedback

Queremos saber mais sobre os seus exemplos de utilização, desafios e feedback acerca dos MIGs com estado. Pode partilhar o seu feedback com a nossa equipa através do endereço de email mig-discuss@google.com.

O que se segue?