Configurando 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 automaticamente, atualizadas e recriadas.

Você pode preservar endereços IPv4 internos e externos. Você pode 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

Limitações

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

  • Endereços IPv6 não são suportados.

  • Endereços IP internos não são suportados em redes que não possuem sub-redes – por exemplo, redes legadas.

Um MIG com configuração com estadoum MIG com estado — tem as seguintes limitações:

  • Você não poderá usar o escalonamento automático se o seu MIG tiver configuração com estado.
  • Se quiser usar atualizações contínuas automatizadas, você deverá definir o método de substituição como RECREATE .
  • Para MIGs regionais com estado, você deve desabilitar a redistribuição proativa (definir o tipo de redistribuição como NONE ) para evitar a exclusão de instâncias com estado por meio da 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 poderá 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

Você será cobrado por endereços IP externos de acordo com o preço da rede.

Quando usar endereços IP com estado

Preservar os endereços IP das instâncias é útil nos seguintes cenários:

  • Seu aplicativo exige que um endereço IP permaneça estático após ser atribuído — por exemplo, Kafka.
  • A configuração do seu 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 existentes sem alterar a configuração da rede.

Configurando endereços IP com estado para todas as VMs de um grupo

Configurar endereços IP com estado para todas as VMs em um MIG é útil nos seguintes cenários:

  • Seu aplicativo exige que um endereço IP permaneça estático após ser atribuído. Mas seu aplicativo não exige 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.
  • Seus usuários, incluindo outros aplicativos, acessam seus servidores por meio de endereços IP estáticos que você publica após implantar seu aplicativo.
  • Você gostaria de se beneficiar da recuperação automática e das atualizações automatizadas da instância, preservando ao mesmo tempo o endereço IP estático que é 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 isso na política com estado.

Quando você adiciona a configuração de 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 existentes, o MIG promove endereços IP internos ou externos efêmeros em uso 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 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 de endereço .

Configurando endereços IP com estado na criação de 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 .

    Vá para grupos de instâncias

  2. Selecione seu 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ê deseja incluir no grupo de instâncias gerenciadas.

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

    1. Em Stateful , selecione Sim .
    2. Na lista suspensa Na exclusão permanente da instância , selecione a ação a ser executada no endereço IP com estado quando a instância da VM for excluída. As opções disponíveis são:
      • Desanexar IP: (Padrão.) Cancele a atribuição do endereço na exclusão da instância e mantenha o endereço reservado.
      • Excluir IP: exclua a reserva de endereço IP estático quando uma instância for excluída permanentemente do grupo de instâncias, 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 ter estado, use um ou vários dos seguintes sinalizadores 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 stateful.
  • --stateful-external-ip para marcar um endereço IP externo de uma determinada interface de rede como stateful.
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 ser criado.
  • INSTANCE_TEMPLATE : o nome do modelo de instância a ser usado ao criar novas instâncias.
  • SIZE : O número inicial de instâncias necessárias neste grupo.
  • NI_NAME : (Opcional.) Nome da interface de rede. Se não for fornecida, a opção enabled será necessária e a interface de rede primária chamada nic0 será assumida por padrão. Se você tiver várias interfaces de rede, poderá especificar esse sinalizador para cada IP em cada interface de rede.
  • DELETE_RULE : (Opcional.) Prescreve o que deve acontecer com o recurso de endereço estático associado quando uma instância de VM é excluída permanentemente. As opções disponíveis são as seguintes:

    • 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 do endereço IP estático quando uma instância for excluída permanentemente do grupo de instâncias, 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 endereços IP com estado nas operações de recuperação automática, atualização e recriação da instância.

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 somente para a rede padrão. Você deseja que os endereços sejam atribuídos automaticamente, mas precisa que eles sejam preservados por meio de recuperação automática de instância, atualizações e eventos de recreação. Você armazena a configuração da instância em um 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 são configurados como com monitoração de 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 sinalizador auto-delete está definido 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 o grupo inteiro.

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 monitoração de estado, execute o seguinte comando:

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

A saída é semelhante à 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
...

Você 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 excluir reservas de IP estáticas na exclusão permanente da instância.

Terraforma

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 desejadas para cada VM em seu 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 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 stateful.
  • stateful_external_ip para marcar um endereço IP externo de uma determinada interface de rede como stateful.

O exemplo a seguir configura endereços IP com estado ao criar um MIG regional. Para obter mais informações sobre o recurso usado no exemplo, 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 .

DESCANSAR

Ao criar um MIG, para especificar quais endereços IP nas interfaces de rede do modelo de instância devem ter estado, inclua-os no campo 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 o seguinte:

  • PROJECT : O ID do projeto para a solicitação.
  • REGION : Para MIGs 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 ser criado.
  • INSTANCE_TEMPLATE : o nome do modelo de instância a ser usado ao criar novas instâncias.
  • SIZE : O número inicial de instâncias necessárias neste grupo.
  • NI_NAME : (Opcional.) Nome da interface de rede. Se não for fornecida, a opção enabled será necessária e a interface de rede primária chamada nic0 será assumida por padrão. Se você tiver diversas interfaces de rede, poderá especificar vários NI_NAMES .
  • DELETE_RULE : (opcional) prescreve o que deve 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 as seguintes:

    • 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ço IP estático quando uma instância for excluída permanentemente do grupo de instâncias, 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 endereços IP com estado nas operações de recuperação automática, atualização e recriação da instância.

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 somente para a rede padrão. Você deseja que os endereços sejam atribuídos automaticamente, mas precisa que eles sejam preservados por meio de recuperação automática de instância, atualizações e eventos de recreação. Você armazena a configuração da instância em um 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 são configurados como com monitoração de 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 as instâncias associadas ou o grupo inteiro.

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

Você 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 excluir as reservas de endereços IP estáticos associados na exclusão permanente da instância.

Definir e atualizar configurações com estado para endereços IP em MIG existente

Se você executar uma carga de trabalho em um MIG sem estado (um MIG sem qualquer configuração com estado) e a carga de trabalho exigir endereços IP estáticos, você poderá configurar endereços IP já atribuídos às instâncias de VM gerenciadas para se tornarem com estado. Isso garante que os endereços IP de suas VMs existentes sejam preservados em eventos de recuperação automática, atualizações e recreação de instâncias. Opcionalmente, você pode manter as reservas de endereços IP estáticos após a exclusão das instâncias.

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

  • Configure endereços IP como stateful para todas as instâncias existentes e futuras no grupo. Isso promove os endereços IP efêmeros correspondentes de todas as instâncias existentes para 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 de forma automática e assíncrona a todas as instâncias. As atualizações nas configurações de endereços IP em uma política com estado não interrompem a execução de instâncias de VM. Para saber mais, leia sobre a aplicação de atualizações de políticas com estado .

Console

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

    Vá para grupos de instâncias

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

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

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

    1. Em Stateful , selecione Sim .
    2. Na lista suspensa Na exclusão permanente da instância , selecione a ação a ser executada no endereço IP com estado quando a instância da VM for excluída. As opções disponíveis são:
      • Desanexar IP: (Padrão.) Cancele a atribuição do endereço na exclusão da instância e mantenha o endereço reservado.
      • Excluir IP: exclua a reserva de endereço IP estático quando uma instância for excluída permanentemente do grupo de instâncias, 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 devem ter estado ou para atualizar a configuração de IP com estado para um MIG existente, use um ou vários sinalizadores --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 ser atualizado.
  • NI_NAME : (Opcional.) Nome da interface de rede. Se não for fornecida, a opção enabled será necessária e a interface de rede primária chamada nic0 será assumida por padrão. Se você tiver várias interfaces de rede, poderá especificar esse sinalizador para cada IP em cada interface de rede.
  • DELETE_RULE : (Opcional.) Prescreve o que deve 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 as seguintes:

    • 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 do endereço IP estático quando uma instância for excluída permanentemente do grupo de instâncias, 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 endereços IP com estado nas operações de recuperação automática, atualização e recriação da instância.

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

Exemplo

Você precisa expor um servidor de arquivos, em execução em um MIG com estado denominado example-fs-group , para usuários externos por meio de endereços IP externos estáticos. As instâncias do grupo possuem endereços IP externos temporários. Você deve certificar-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. Você também precisa 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 com monitoração de 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 efêmeros dentro da interface de rede nic0 para endereços IP estáticos para todas as instâncias gerenciadas de forma assíncrona.

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

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

DESCANSAR

Para especificar quais endereços IP devem ter 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 a solicitação.
  • REGION : Para MIGs 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 ser criado.
  • NI_NAME : (obrigatório) nome da interface de rede. A interface de rede primária é denominada nic0 . Se você tiver diversas interfaces de rede, poderá especificar vários NI_NAMES .
  • DELETE_RULE : (opcional) prescreve o que deve 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 as seguintes:

    • 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ço IP estático quando uma instância for excluída permanentemente do grupo de instâncias, 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 endereços IP com estado nas operações de recuperação automática, atualização e recriação da instância.

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

Exemplo

Você precisa expor um servidor de arquivos, em execução em um MIG com estado denominado example-fs-group , para usuários externos por meio de endereços IP externos estáticos. As instâncias do grupo possuem endereços IP externos temporários. Você deve certificar-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. Você também precisa manter os endereços IP reservados para continuidade no caso de exclusão não intencional do grupo.

Corrija o MIG para definir os endereços IP externos como com monitoração de 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 dentro da interface de rede nic0 para endereços IP estáticos para todas as instâncias gerenciadas de forma assíncrona.

Os endereços IP externos agora são preservados em eventos de recuperação automática, atualização e recriação de instâncias. As reservas de endereço IP estático associadas não serão atribuídas e serão preservadas na exclusã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 visualizando o recurso regionInstanceGroupManagers , retornado pelo método regionInstanceGroupManagers.get .

Declarando endereços IP anteriormente com estado como sem estado

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

  • Você reestrutura seu aplicativo para não depender mais de endereços IP estáticos.
  • Você configurou o IP para ter estado por engano e gostaria de revertê-lo.

Você pode 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 efêmero 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 forma automática e assíncrona do estado preservado de todas as instâncias do grupo. Esta 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 têm mais estado. Quando você recria ou atualiza as instâncias, ou quando as instâncias são reparadas automaticamente, o MIG cancela a atribuição dos endereços IP estáticos associados e atribui automaticamente endereços efêmeros. Se você não precisar mais manter as reservas de endereços IP externos estáticos, agora 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 .

    Vá para grupos de instâncias

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

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

  4. Em Configuração com estado , expanda o IP externo e o IP interno que você deseja tornar sem estado.

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

gcloud

Para especificar quais endereços IP de uma política com estado de um MIG devem ser tornados efêmeros, use o sinalizador --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 ser atualizado.
  • NI_NAME : (obrigatório.) Nome da interface de rede. A interface de rede primária é denominada nic0 . Se você tiver várias interfaces de rede, poderá especificar vários NI_NAMES .

Se precisar transformar um endereço IP com estado da interface de rede primária padrão chamada nic0 em um endereço IP efêmero, você 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

Seu 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ê reprojetou seu serviço implantando um balanceador de carga na frente do MIG e roteando o tráfego para as VMs gerenciadas por meio dele. Você não precisa mais manter os endereços IP externos estáticos e gostaria de tornar os endereços IP externos das VMs efêmeros.

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 forma automática e assíncrona do estado preservado de todas as instâncias do grupo. Os endereços IP externos permanecem ativos nas instâncias, mas não têm mais estado. Quando você recria ou atualiza as instâncias, ou quando as instâncias são reparadas automaticamente, o MIG cancela a atribuição dos endereços IP estáticos associados e atribui automaticamente endereços efêmeros. Se você não precisar mais manter as reservas de endereços IP externos estáticos, agora poderá liberá- las.

DESCANSAR

Para especificar quais endereços IP de uma política com estado do MIG devem ser tornados efêmeros, 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 o seguinte:

  • PROJECT : O ID do projeto para a solicitação.
  • REGION : Para MIGs 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 ser criado.
  • NI_NAME : (obrigatório) nome da interface de rede. A interface de rede primária é denominada nic0 . Se você tiver diversas interfaces de rede, poderá especificar vários NI_NAMES .

Exemplo

Seu 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ê reprojetou seu serviço implantando um balanceador de carga na frente do MIG e roteando o tráfego para as VMs gerenciadas por meio dele. Você não precisa mais manter os endereços IP externos estáticos e gostaria de tornar os endereços IP externos das VMs efêmeros.

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 forma automática e assíncrona do estado preservado de todas as instâncias do grupo. Os endereços IP externos permanecem ativos nas instâncias, mas não têm mais estado. Quando você recria ou atualiza as instâncias, ou quando as instâncias são reparadas automaticamente, o MIG cancela a atribuição dos endereços IP estáticos associados e atribui automaticamente endereços efêmeros. Se você não precisar mais manter as reservas de endereços IP externos estáticos, agora poderá liberá- las.

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

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

  • Migração de cargas de trabalho existentes (trazendo endereços IP estáticos reservados existentes) de instâncias de VM autônomas para MIGs com estado para se beneficiar da recuperação automática e das atualizações automatizadas.
  • Atribuição de endereços IP estáticos reservados específicos exigidos pela arquitetura ou configuração da carga de trabalho.

Configurando endereços IP estáticos na criação de VM em um MIG

Você pode reservar e atribuir endereços IP estáticos a instâncias específicas ao criar essas instâncias individualmente em um MIG. Isso é útil para migrar um aplicativo com estado de VMs autônomas existentes 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 executa 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 estabelecida fornecida para os endereços IP.

gcloud

Para criar uma instância com um endereço IP estático predefinido, use o gcloud compute instance-groups managed create-instance com um ou vários dos sinalizadores a seguir:

  • --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 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 para criar.
  • NI_NAME : (opcional.) Nome da interface de rede. Se não for fornecido, a interface de rede primária chamada nic0 é assumida por padrão. Se você tiver várias interfaces de rede, você poderá especificar esse sinalizador para cada IP em cada interface de rede.
  • ADDRESS : (requerido.) Endereço IP estático a ser atribuído à 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 cria automaticamente uma reserva de endereço IP correspondente.
      • Se o endereço IP fornecido for reservado, o MIG atribuirá a reserva à instância.
  • DELETE_RULE : (opcional.) Prescreve o que deve acontecer com um recurso de endereço estático associado quando uma instância da VM for excluída permanentemente. As opções disponíveis são as seguintes:

    • never : (padrão.) Nunca exclua o endereço IP estático. Em vez disso, não atribua o endereço na exclusão da instância e mantenha o endereço reservado.
    • on-permanent-instance-deletion : exclua a reserva de endereço IP estático quando uma instância é excluída permanentemente do grupo de instância-por exemplo, quando você exclui uma instância manualmente ou diminui 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 auto -healing, atualização e recreação da instância.

Exemplo

Você precisa adicionar mais uma instância da VM ao seu cluster de servidor proxy, executando em um MIG chamado proxy-cluster . Você criou uma reserva de endereço IP interno estático chamado proxy-node-03-ip e precisa atribuí-lo ao novo nó. Você deseja manter a reserva de endereço IP, mesmo se decidir excluir 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 chamado proxy-node-03-ip à instância e armazena a configuração com estado para o IP na configuração de instance correspondente. Como o sinalizador auto-delete está definida como never , o IP permanece reservado se você excluir a instância posteriormente.

Terraforma

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

  • 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 amostra a seguir configura endereços IP estáticos na criação da VM em um MIG regional. Para obter mais informações sobre o recurso usado na amostra, consulte 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 .

DESCANSAR

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, use o método de 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 a solicitação.
  • NAME : O nome do MIG.
  • REGION : Para Migs 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 para criar.
  • NI_NAME : (exigido.) Nome da interface de rede. A interface de rede primária é chamada nic0 . Se você tiver várias interfaces de rede, poderá especificar vários 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ê deve e 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ê deve e só pode definir um campo por vez, 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 for reservado, o MIG atribuirá a reserva à instância.
  • DELETE_RULE : (opcional.) Prescreve o que deve acontecer com um recurso de endereço estático associado quando uma instância da VM for excluída permanentemente. As opções disponíveis são as seguintes:

    • NEVER : (padrão.) Nunca exclua o endereço IP estático. Em vez disso, não atribua o endereço na exclusão da instância e mantenha o endereço reservado.
    • ON_PERMANENT_INSTANCE_DELETION : Exclua a reserva de endereço IP estático quando uma instância for excluída permanentemente do grupo de instância - por exemplo, quando você exclui uma instância manualmente ou diminui 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 auto -healing, atualização e recreação da instância.

Exemplo

Você precisa adicionar mais uma instância da VM ao seu cluster de servidor proxy, executando em um MIG chamado proxy-cluster . Você criou uma reserva de endereço IP interno estático chamado proxy-node-03-ip e precisa atribuí-lo ao novo nó. Você deseja manter a reserva de endereço IP, mesmo se decidir excluir o nó no futuro.

Ligue para 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 denominada proxy-node-03 , atribui o endereço IP interno estático fornecido chamado proxy-node-03-ip à instância e armazena a configuração com estado para o IP na configuração per-instância correspondente. Como o campo autoDelete está definido como NEVER , o IP permanece reservado se você excluir a instância posteriormente.

Configurando endereços IP estáticos para uma VM existente em um MIG

Você pode definir um endereço IP estático predefinido ou atualizar a configuração de IP com estado para uma instância gerenciada individualmente - por exemplo:

  • Atribua um endereço IP estático a uma instância existente em um MIG. Para IPs externos estáticos, esta operação requer atualização de instância e, para IPs internos estáticos, isso requer recreação de instância.
  • Atualize a regra de exclusão para 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 o qual você configura um IP externo, o MIG adiciona configuração de acesso à interface de rede correspondente aos seguintes valores padrão:

"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 da VM em uma configuração IP MIG, adicione ou atualize ou atualize a configuração de instance associada.

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

  • --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á existir uma configuração por instância para a instância, use o comando gcloud compute instance-groups managed instance-configs update COM UM OU MULTIMANTO --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 fornecido, a interface de rede primária chamada nic0 é assumida por padrão. Se você tiver várias interfaces de rede, você poderá especificar esse sinalizador para cada IP em cada interface de rede.
  • ADDRESS : endereço IP estático a ser atribuído à 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 cria automaticamente uma reserva de endereço IP correspondente.
      • Se o endereço IP fornecido for reservado, o MIG atribuirá a reserva à instância.
    • Este subflast é opcional se o endereço já estiver definido na configuração por instance da instância. Caso contrário, é necessário.
    • Se omitido, o endereço configurado permanece inalterado.
  • DELETE_RULE : (opcional.) Prescreve o que deve acontecer com um recurso de endereço estático associado quando uma instância da VM for excluída permanentemente. As opções disponíveis são as seguintes:

    • never : (padrão.) Nunca exclua o endereço IP estático. Em vez disso, não atribua o endereço na exclusão da instância e mantenha o endereço reservado.
    • on-permanent-instance-deletion : exclua a reserva de endereço IP estático quando uma instância é excluída permanentemente do grupo de instância-por exemplo, quando você exclui uma instância manualmente ou diminui o tamanho do grupo.
    • Se omitido, o valor padrão será definido para uma nova configuração de IP com estado; O valor permanece inalterado em uma configuração existente.

    Independentemente do valor da regra de exclusão, o grupo sempre preserva os endereços IP com estado nas operações de auto -healing, atualização e recreação da instância.

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

  • MINIMAL_ACTION : (opcional.) Execute pelo menos a ação especificada ao aplicar a atualização da configuração por instância na instância. Deve ser usado junto com --update-instance . O valor deve ser um dos seguintes:

    • none : sem ação.
    • refresh : aplique atualizações possíveis para aplicar sem interromper a instância.
    • restart : pare a instância e inicie -a novamente.
    • replace : recrie a instância.

Se omitido, a ação menos disruptiva exigida pela atualização é 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 possui uma configuração correspondente por instance, onde um disco de dados com estado está configurado. O servidor de arquivos foi acessível apenas 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 a reserva de endereço file-server-ip . Agora você precisa atribuir este 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 PER-Instance para a instância file-server :
    1. Adiciona configuração de IP externa com estado, apontando para a reserva de endereço file-server-ip .
    2. Mantém a configuração de disco de dados com estado existente inalterada.
  2. Aplica a atualização da configuração por Instance à instância file-server imediatamente porque o sinalizador --update-instance está incluído: atualiza a instância e atribui o endereço IP externo estático da reserva de file-server-ip .

DESCANSAR

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

Se as configurações por instance ainda não existirem para as instâncias em determinadas, use o método de instanceGroupManagers.updatePerInstanceConfigs ou regionInstanceGroupManagers.updatePerInstanceConfigs Método com configuração de 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 instance para as instâncias em determinadas, use o método do instanceGroupManagers.patchPerInstanceConfigs ou regionInstanceGroupManagers.patchPerInstanceConfigs Método com configuração estabelecida 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 a solicitação.
  • NAME : O nome do MIG.
  • REGION : Para Migs 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 : (requerir.) O nome da instância para a qual configurar IPS com estado.
  • NI_NAME : (exigido.) Nome da interface de rede. A interface de rede primária é chamada nic0 . Se você tiver várias interfaces de rede, poderá especificar vários 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ê deve e só 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ê deve e 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 for reservado, o MIG atribuirá a reserva à instância.
  • DELETE_RULE : (opcional.) Prescreve o que deve acontecer com um recurso de endereço estático associado quando uma instância da VM for excluída permanentemente. As opções disponíveis são as seguintes:

    • NEVER : (padrão.) Nunca exclua o endereço IP estático. Em vez disso, não atribua o endereço na exclusão da instância e mantenha o endereço reservado.
    • ON_PERMANENT_INSTANCE_DELETION : Exclua a reserva de endereço IP estático quando uma instância for excluída permanentemente do grupo de instância - por exemplo, quando você exclui uma instância manualmente ou diminui o tamanho do grupo.
    • Se omitido, o valor padrão será definido para uma nova configuração de IP com estado; O valor permanece inalterado em uma configuração existente.

    Independentemente do valor da regra de exclusão, o grupo sempre preserva os endereços IP com estado nas operações de auto -healing, atualização e recreação da instância.

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

Os métodos updatePerInstanceConfigs e patchPerInstanceConfigs atualizam as configurações por instance especificadas, mas não aplicam as atualizações de configuração nas instâncias gerenciadas associadas. As alterações são aplicadas a uma instância quando o MIG é instruído a recriar ou atualizar a instância. Você pode 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 possui uma configuração correspondente por instance, onde um disco de dados com estado está configurado. O servidor de arquivos foi acessível apenas 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 a reserva de endereço file-server-ip . Agora você precisa atribuir este IP à instância do servidor de arquivos.

Para atualizar a configuração PER-Instance para file-server com o novo IP externo com estado, ligue para 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 remende a configuração por instance para a instância file-server :

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

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

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

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 de IP com estado, o IP permanecerá reservado se você excluir a instância posteriormente.

Desassociando endereços IP estáticos de uma VM existente em um MIG

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

  • Você pesquisando seu aplicativo para não confiar mais em endereços IP estáticos.
  • Você configurou o IP para ser um estado por engano e gostaria de revertê -lo.

Você 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 excluindo toda a configuração PER-Instance se não contiver outro estado. A aplicação da mudança tem os seguintes efeitos:

  • O endereço IP permanece ativo na instância, mas não é mais com estado.
  • Quando você recrie ou atualiza a instância, ou quando a instância é criada automaticamente, o MIG não atribui a reserva de endereço IP estático associado e assina automaticamente um endereço efêmero.
  • Depois de não ter sido atribuído, 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 em execução da VM, a menos que você 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 de instance associada, use o comando gcloud compute instance-groups managed instance-configs update COM OS --remove-stateful-internal-ips ou --remove-stateful-external-ips sinalizadores:

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 : (requerido.) O nome da instância para remover a configuração de IP com estado.
  • NI_NAME : (exigido.) Nome da interface de rede. A interface de rede primária é chamada nic0 . Se você tiver várias interfaces de rede, você poderá especificar vários NI_NAMES .
  • --update-instance : (Opcional. Padrão.) Aplique as alterações imediatamente à instância. Se você usar o sinalizador --no-update-instance , as alterações permanecerão não aplicadas e serão aplicadas quando você recriar ou aplicar a atualização na instância posteriormente.
  • MINIMAL_ACTION : (opcional.) Execute pelo menos a ação especificada ao aplicar a atualização da configuração por instância na instância. Esse sinalizador só pode ser usado junto com o sinalizador --update-instance . O valor deve ser um dos seguintes:

    • none : sem ação.
    • refresh : aplique atualizações possíveis para aplicar sem interromper a instância.
    • restart : pare a instância e inicie -a novamente.
    • replace : recrie a instância.

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

Exemplo

Seu aplicativo foi exposto aos usuários por meio de endereços IP externos estáticos publicados específicos das instâncias da VM em um MIG chamado example-group . Você pesquisou seu serviço implantando um balanceador de carga em frente ao MIG e roteando o tráfego para as VMs gerenciadas por ele. Você não precisa mais manter os endereços IP externos estáticos e gostaria de criar os endereços IP externos do VMS efêmero.

Para fazer 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 para o endereço IP externo dentro da interface da rede nic0 da configuração PER-Instance para node-1 .
  2. Aplica a atualização da configuração por instância à instância node-1 VM imediatamente porque o --update-instance está incluído. A instância da VM não é interrompida e continua servindo a partir do mesmo IP, que não é mais com estado. O MIG remove a referência à reserva de IP estática do preservedStateFromConfig da instância gerenciada, do FromConfig e trata o endereço IP externo como efêmero. O MIG assinará automaticamente um IP externo em eventos subsequentes de recreação, atualização ou criação automática de instância.
  3. Depois de não ter sido atribuído , o IP estático original permanece reservado. Você pode liberar o IP se não precisar mais.

DESCANSAR

Para remover uma configuração de IP com estado da configuração por instance associada, use o método do instanceGroupManagers.patchPerInstanceConfigs ou regionInstanceGroupManagers.patchPerInstanceConfigs Método :

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 a solicitação.
  • NAME : O nome do MIG.
  • REGION : Para Migs 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 : (requerido.) O nome da instância para remover a configuração de IP com estado.
  • NI_NAME : (exigido.) Nome da interface de rede. A interface de rede primária é chamada nic0 . Se você tiver várias interfaces de rede, poderá especificar vários NI_NAMES .
  • FINGERPRINT : (opcional.) A impressão digital para a configuração fornecida se já existir. Usado para bloqueio otimista. A operação falha se a impressão digital for diferente da fornecida, pois indica que a configuração por instância foi alterada desde a última lida. Para ver a última impressão digital, consulte a saída do método listPerInstanceConfigs para um MIG regional ou zonal . Se fingerprint for omitida, a operação prossegue sem comparação de impressão digital.

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

Exemplo

Seu aplicativo foi exposto aos usuários por meio de endereços IP externos estáticos publicados específicos das instâncias da VM em um MIG chamado example-group . Você pesquisou seu serviço implantando um balanceador de carga em frente ao MIG e roteando o tráfego para as VMs gerenciadas por ele. Você não precisa mais manter os endereços IP externos estáticos e gostaria de criar os endereços IP externos do VMS efêmero.

Para fazer com que os endereços IP externos com estado das VMs em um MIG efêmero, execute o método a seguir para cada instância, por exemplo, para node-1 e forneça valor null para a configuração Stateful 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 para o endereço IP com estado na interface de rede nic0 da configuração PER-Instance para node-1 . A atualização de configuração ainda não foi aplicada à instância do node-1 VM. O MIG aplica a atualização de configuração na próxima recreação ou atualização da instância.

Para aplicar a atualização da configuração por instance na instância do node-1 VM, 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ática do campo preservedStateFromConfig para a instância node-1 e trata o endereço IP como efêmero. O MIG assinará automaticamente um IP externo em eventos subsequentes de recreação, atualização ou criação automática de instância.

Depois de não ter sido atribuído , o IP estático original permanece reservado. Você pode liberar o IP se não precisar mais.

Removendo a configuração do estado

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

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

Limpando endereços IP estáticos não utilizados

Ao configurar o endereço IP com estado para instâncias gerenciadas em um grupo, você pode escolher se deve liberar as reservas de endereço IP estático associadas manualmente ou automaticamente quando uma instância for excluída permanentemente :

  • Para liberar reservas de endereço IP estático automaticamente na exclusão permanente da instância, defina o parâmetro autoDelete como ON_PERMANENT_INSTANCE_DELETION .
  • Para liberar reservas de endereço IP estático manualmente, defina o parâmetro autoDelete como NEVER . Para limpar as reservas de endereço IP estático não utilizado, por exemplo, a fim de evitar cobranças desnecessárias, consulte os seguintes documentos:

Se você instruiu o MIG a nunca excluir as reservas de IP associadas, os endereços IP estáticos permanecem reservados após as instâncias correspondentes ou o MIG deixa de existir.

Opinião

Queremos aprender sobre seus casos de uso, desafios e feedback sobre os MIGs com estado. Você pode compartilhar seus comentários com nossa equipe em [email protected] .

O que vem a seguir