Configura direcciones IP con estado en MIG


Mediante la configuración de direcciones IP con estado en un grupo de instancias administrado (MIG), te aseguras de que las direcciones IP se conserven cuando las instancias de VMs del grupo se reparan de forma automática, se actualizan y se vuelven a crear.

Puedes conservar direcciones IPv4 internas y externas. Puedes configurar las direcciones IP para que se asignen de forma automática o asignar direcciones IP específicas a cada instancia de VM en un MIG.

Antes de comenzar

  • Revisa cuándo usar MIG con estado y cómo funcionan los MIG con estado.
  • Si aún no lo hiciste, configura la autenticación. La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud. Para ejecutar un código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine de la siguiente manera.

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

    Console

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

    gcloud

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

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

      Para usar las muestras de Terraform de esta página en un entorno de desarrollo local, instala e inicializa gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.

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

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

        gcloud auth application-default login

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

      Para obtener más información, consulta Set up authentication for a local development environment.

      REST

      Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.

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

        gcloud init

      Si deseas obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud.

Limitaciones

Un MIG con direcciones IP con estado tiene las siguientes limitaciones:

  • Las direcciones IPv6 no son compatibles.

  • Las direcciones IP internas no son compatibles con redes que no tienen subredes, por ejemplo, redes heredadas.

Un MIG con configuración con estado, un MIG con estado, tiene las siguientes limitaciones:

  • No puedes usar el ajuste de escala automático si tu MIG tiene una configuración con estado.
  • Si deseas usar actualizaciones progresivas automáticas, debes establecer el método de reemplazo en RECREATE.
  • Para los MIGs regionales con estado, debes inhabilitar la redistribución proactiva (establece el tipo de redistribución en NONE) para evitar la eliminación de instancias con estado por la redistribución automática entre zonas.
  • Si usas una configuración de todas las instancias para anular las propiedades de la plantilla de instancias, no puedes especificarlas en ninguna configuración por instancia y, al mismo tiempo, en todas las instancias del grupo de instancias.

Precios

Las direcciones IP externas se cobran según los precios de las herramientas de redes.

Cuándo usar direcciones IP con estado

Conservar las direcciones IP de las instancias es útil en las siguientes situaciones:

  • La aplicación requiere que una dirección IP permanezca estática después de que se haya asignado (por ejemplo, Kafka).
  • La configuración de tu aplicación depende de direcciones IP específicas, por ejemplo, un servidor DNS.
  • Los usuarios, incluidas otras aplicaciones, acceden a tu servidor a través de una dirección IP estática dedicada (por ejemplo, un servidor de archivos).
  • Debes migrar las cargas de trabajo existentes sin cambiar la configuración de red.

Configura direcciones IP con estado para todas las VMs de un grupo

La configuración de direcciones IP con estado para todas las VMs de un MIG es útil en las siguientes situaciones:

  • La aplicación requiere que una dirección IP permanezca estática después de que se haya asignado. Sin embargo, la aplicación no requiere la asignación de direcciones IP específicas a instancias específicas. Las direcciones IP se pueden asignar de forma automática cuando se crea la instancia.
  • Tus usuarios, incluidas otras aplicaciones, acceden a los servidores a través de las direcciones IP estáticas que publicas después de implementar la aplicación.
  • Es ideal que te beneficies de la reparación automática y las actualizaciones automáticas de instancias y, a su vez, conserves la dirección IP estática que se asigna de forma automática cuando se crea la instancia.

Para mantener las direcciones IP internas o externas estáticas para las instancias de VMs existentes y futuras en el grupo, configura esa opción en la política con estado.

Cuando agregas una configuración de dirección IP con estado a la política con estado del grupo, el MIG aplica la configuración de la siguiente manera:

  • Para las instancias nuevas, el MIG asigna y reserva de forma automática direcciones IP estáticas.
  • Para las instancias existentes, el MIG promueve las direcciones IP internas o externas efímeras en uso a direcciones estáticas mediante la reserva de las direcciones IP estáticas correspondientes.
  • Para las instancias existentes sin direcciones IP externas, el MIG asigna y reserva direcciones IP estáticas y agrega configuración de acceso a la interfaz de red correspondiente con los siguientes valores predeterminados:

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

Para reservar una dirección IP estática, el MIG crea un recurso Address.

Configura direcciones IP con estado en la creación de MIG

Usa la consola de Google Cloud, gcloud CLI, Terraform o REST.

Console

  1. En la consola de Google Cloud, ve a la página Grupos de instancias.

    Ir a Grupos de instancias

  2. Elige el proyecto y haz clic en Continuar.

  3. Haga clic en Crear grupo de instancias.

  4. Elige Nuevo grupo de instancias administrado (con estado).

  5. Especifica un Nombre para el grupo de instancias.

  6. Selecciona una plantilla de instancia.

  7. En Cantidad de instancias, especifica la cantidad que quieres incluir en el grupo de instancias administrado.

  8. En Configuración con estado, expande la IP externa o la IP interna que deseas que tenga estado.

    1. En Con estado, selecciona .
    2. En el menú desplegable Eliminación permanente de instancias, selecciona la acción que se realizará en la dirección IP con estado cuando se borre la instancia de VM. Las opciones disponibles son las siguientes:
      • Desconectar IP: (Predeterminado). Anular la asignación de la dirección cuando se borra la instancia y mantener la dirección reservada.
      • Borrar IP: Borrar la reserva de la dirección IP estática cuando una instancia se borra de forma permanente del grupo de instancias, por ejemplo, cuando borras una instancia de forma manual o disminuyes el tamaño del grupo.
    3. Después de terminar la configuración con estado, haz clic en Listo.
  9. Haz clic en Crear.

gcloud

Cuando creas un MIG, para especificar qué direcciones IP en las interfaces de red de la plantilla de instancias deben tener estado, usa una o varias de las siguientes marcas con el comando gcloud compute instance-groups managed create:

  • --stateful-internal-ip para marcar una dirección IP interna de una interfaz de red determinada como con estado.
  • --stateful-external-ip para marcar una dirección IP externa de una interfaz de red determinada como con 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]

Reemplaza lo siguiente:

  • INSTANCE_GROUP_NAME: El nombre del MIG que se creará.
  • INSTANCE_TEMPLATE: El nombre de la plantilla de instancias que se usará cuando se creen instancias nuevas.
  • SIZE: La cantidad inicial de instancias que necesitas en este grupo.
  • NI_NAME: Nombre de la interfaz de red. Si no se proporciona, entonces la opción enabled es obligatoria y la interfaz de red principal llamada nic0 se supone de manera predeterminada. Si tienes varias interfaces de red, puedes especificar esta marca para cada IP en cada interfaz de red.
  • DELETE_RULE: Indica qué debe suceder con el recurso estático Address asociado cuando se borra una instancia de VM de forma permanente. Las opciones disponibles son las siguientes:

    • never: Nunca borrar la dirección IP estática. En su lugar, se anula la asignación de la dirección cuando se borra la instancia y se mantiene la dirección reservada.
    • on-permanent-instance-deletion: Borrar la reserva de la dirección IP estática cuando una instancia se borra de forma permanente del grupo de instancias, por ejemplo, cuando borras una instancia de forma manual o disminuyes el tamaño del grupo.

    Sin importar el valor de la regla de eliminación, el grupo siempre conserva las direcciones IP con estado en las operaciones de reparación automática, actualización y recreación de las instancias.

Ejemplo

Debes crear un grupo regional de instancias de VMs con direcciones IP internas estáticas para las redes predeterminadas y personalizadas y las direcciones IP externas estáticas solo para la red predeterminada. Deseas que las direcciones se asignen de forma automática, pero necesitas que se conserven en eventos de reparación automática, actualizaciones y recreación de la instancia. La configuración de la instancia se almacena en una plantilla de instancia llamada node-template.

Para crear el grupo, ejecuta el siguiente 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

Las IP internas dentro de las interfaces de red nic0 y nic1 y la IP externa dentro de la interfaz de red nic0 se configuran como con estado para todas las instancias del grupo. El grupo reserva automáticamente direcciones IP internas y externas estáticas para cada instancia. Debido a que la marca auto-delete está configurada como on-permanent-instance-deletion, el grupo borrará de forma automática las reservas de direcciones IP estáticas cuando borres las instancias asociadas o todo el grupo.

Para verificar que las IP internas dentro de las interfaces de red nic0 y nic1 y la IP externa dentro de la interfaz de red nic0 estén configuradas como con estado, ejecuta el siguiente comando:

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

El resultado se ve de la manera siguiente:

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

Puedes ver que la política con estado del grupo declara las IP internas dentro de las interfaces de red nic0 y nic1 y las IP externas dentro de la interfaz de red nic0 como con estado con la regla para borrar las reservas de IP estáticas cuando se borra la instancia de forma permanente.

Terraform

Si aún no creaste una plantilla de instancias, en la que se especifica el tipo de máquina, la imagen de disco de arranque, la red y otras propiedades de VM que quieres para cada VM en tu MIG, crea una plantilla de instancias.

Cuando creas un MIG, para especificar qué direcciones IP dentro de las interfaces de red de la plantilla de instancias deben tener estado, usa uno o varios de los siguientes bloques:

  • stateful_internal_ip para marcar una dirección IP interna de una interfaz de red determinada como con estado.
  • stateful_external_ip para marcar una dirección IP externa de una interfaz de red determinada como con estado.

En el siguiente ejemplo, se configuran direcciones IP con estado cuando se crea un MIG regional. Para obtener más información sobre el recurso usado en la muestra, consulta 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"
  }
}

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

REST

Cuando creas un MIG, para especificar qué direcciones IP dentro de las interfaces de red de la plantilla de instancias deben tener estado, inclúyelas en el campo statefulPolicy del cuerpo de la solicitud de los métodos instanceGroupManagers.insert o 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"
  }
}

Reemplaza lo siguiente:

  • PROJECT: El ID del proyecto para la solicitud.
  • REGION: Para los MIG regionales, la región en la que se encuentra el grupo. Para los MIG zonales, reemplaza regions/REGION por zones/ZONE y especifica la zona en la que se encuentra el MIG.
  • NAME: El nombre del MIG que se creará.
  • INSTANCE_TEMPLATE: El nombre de la plantilla de instancia que se usará cuando se creen instancias nuevas.
  • SIZE: La cantidad inicial de instancias que necesitas en este grupo.
  • NI_NAME: Nombre de la interfaz de red. Si no se proporciona, entonces la opción enabled es obligatoria y la interfaz de red principal llamada nic0 se supone de manera predeterminada. Si tienes varias interfaces de red, puedes especificar varios NI_NAMES.
  • DELETE_RULE: (Opcional) Indica qué debe suceder con el recurso estático Address asociado cuando se borra una instancia de VM de forma permanente. Las opciones disponibles son las siguientes:

    • NEVER: Nunca borrar la dirección IP estática (predeterminado). En su lugar, se anula la asignación de la dirección cuando se borra la instancia y se mantiene la dirección reservada.
    • ON_PERMANENT_INSTANCE_DELETION: Borrar la reserva de la dirección IP estática cuando una instancia se borra de forma permanente del grupo de instancias, por ejemplo, cuando borras una instancia de forma manual o disminuyes el tamaño del grupo.

    Sin importar el valor de la regla de eliminación, el grupo siempre conserva las direcciones IP con estado en las operaciones de reparación automática, actualización y recreación de las instancias.

Ejemplo

Debes crear un grupo regional de instancias de VMs con direcciones IP internas estáticas para las redes predeterminadas y personalizadas y las direcciones IP externas estáticas solo para la red predeterminada. Deseas que las direcciones se asignen de forma automática, pero necesitas que se conserven en eventos de reparación automática, actualizaciones y recreación de la instancia. La configuración de la instancia se almacena en una plantilla de instancia llamada node-template.

Para crear el grupo, usa el 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"
  }
}

Las IP internas dentro de las interfaces de red nic0 y nic1 y las IP externas dentro de la interfaz de red nic0 se configuran como con estado para todas las instancias del grupo. El grupo reserva automáticamente direcciones IP internas y externas estáticas para cada instancia. Debido a que el campo auto-delete está configurado como ON_PERMANENT_INSTANCE_DELETION, el grupo borrará de forma automática las reservas de direcciones IP estáticas cuando borres las instancias asociadas o todo el grupo.

Usa el método regionInstanceGroupManagers.get para verificar que las IP internas dentro de las interfaces de red nic0 y nic1 y las IP externas dentro de la interfaz de red nic0 estén configuradas en la política con estado del nuevo recurso regionInstanceGroupManagers:

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

La respuesta contiene la política con 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" }
      }
    }
  }
  ...
}

Puedes ver que la política con estado del grupo declara las IP internas dentro de las interfaces de red nic0 y nic1 y las IP externas dentro de la interfaz de red nic0 como con estado con la regla para borrar las reservas de direcciones IP estáticas asociadas cuando se borra la instancia de forma permanente.

Establece y actualiza la configuración con estado de las direcciones IP en un MIG existente

Si ejecutas una carga de trabajo en un MIG sin estado (un MIG sin ninguna configuración con estado) y la carga de trabajo requiere direcciones IP estáticas, puedes configurar las direcciones IP que ya están asignadas a las instancias de VMs administradas para que tengan estado. Esto garantiza que las direcciones IP de tus VMs existentes se conserven en los eventos de reparación automática, actualización y recreación de las instancias. De forma opcional, puedes conservar las reservas de direcciones IP estáticas después de que se borren las instancias.

Si configuras una política con estado para las direcciones IP en un MIG existente, puedes hacer lo siguiente:

  • Configurar las direcciones IP como con estado para todas las instancias existentes y futuras del grupo Esto asciende las direcciones IP efímeras correspondientes de todas las instancias existentes a direcciones IP estáticas.
  • Actualizar la configuración con estado existente para las direcciones IP.

El MIG aplica la configuración actualizada en la política con estado de forma automática y asíncrona a todas las instancias. Las actualizaciones de los parámetros de configuración de direcciones IP en una política con estado no interrumpen las instancias de VMs en ejecución. Para obtener más información, lee sobre la aplicación de actualizaciones de políticas con estado.

Console

  1. En la consola de Google Cloud, ve a la página Grupos de instancias.

    Ir a Grupos de instancias

  2. Haz clic en el nombre del grupo de instancias para el que deseas especificar direcciones IP con estado.

  3. Haz clic en Editar para modificar este grupo de instancias administrado.

  4. En Configuración con estado, expande la IP externa o la IP interna que deseas que tenga estado.

    1. En Con estado, selecciona .
    2. En el menú desplegable Eliminación permanente de instancias, selecciona la acción que se realizará en la dirección IP con estado cuando se borre la instancia de VM. Las opciones disponibles son las siguientes:
      • Desconectar IP: (Predeterminado). Anular la asignación de la dirección cuando se borra la instancia y mantener la dirección reservada.
      • Borrar IP: Borrar la reserva de la dirección IP estática cuando una instancia se borra de forma permanente del grupo de instancias, por ejemplo, cuando borras una instancia de forma manual o disminuyes el tamaño del grupo.
    3. Después de actualizar la configuración con estado, haz clic en Listo.
    4. Haz clic en Guardar para completar la actualización.

gcloud

Si deseas especificar qué direcciones IP deben tener estado o actualizar la configuración de IP con estado de un MIG existente, usa una o varias marcas --stateful-internal-ip o --stateful-external-ip con el 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]

Reemplaza lo siguiente:

  • INSTANCE_GROUP_NAME: Es el nombre del MIG que se actualizará.
  • NI_NAME: Nombre de la interfaz de red. Si no se proporciona, entonces la opción enabled es obligatoria y la interfaz de red principal llamada nic0 se supone de manera predeterminada. Si tienes varias interfaces de red, puedes especificar esta marca para cada IP en cada interfaz de red.
  • DELETE_RULE: Describe lo que debe suceder con un recurso Address estático asociado cuando se borra una instancia de VM de forma permanente. Las opciones disponibles son las siguientes:

    • never: Nunca borrar la dirección IP estática. En su lugar, se anula la asignación de la dirección cuando se borra la instancia y se mantiene la dirección reservada.
    • on-permanent-instance-deletion: Borrar la reserva de la dirección IP estática cuando una instancia se borra de forma permanente del grupo de instancias, por ejemplo, cuando borras una instancia de forma manual o disminuyes el tamaño del grupo.

    Sin importar el valor de la regla de eliminación, el grupo siempre conserva las direcciones IP con estado en las operaciones de reparación automática, actualización y recreación de las instancias.

Si una dirección IP especificada ya está configurada en la política con estado de una interfaz de red determinada, el comando actualiza la configuración.

Ejemplo

Debes exponer un servidor de archivos, que se ejecuta en un MIG con estado llamado example-fs-group, a usuarios externos mediante direcciones IP externas estáticas. Las instancias del grupo tienen direcciones IP externas efímeras. Debes asegurarte de que las direcciones IP se conserven en las operaciones de reparación automática y actualización de las instancias para que los usuarios externos tengan acceso continuo a los servidores a través de las direcciones IP publicadas. También debes mantener las direcciones IP reservadas para la continuidad en caso de la eliminación accidental del grupo.

Actualiza el MIG para definir las direcciones IP externas como con estado mediante el siguiente comando:

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

Como resultado, el grupo asciende las direcciones IP externas efímeras dentro de la interfaz de red nic0 a direcciones IP estáticas para todas las instancias administradas de forma asíncrona.

Las direcciones IP externas ahora se conservan en los eventos de reparación automática, actualización y recreación de las instancias. Las reservas de direcciones IP estáticas asociadas se anulan y se conservan cuando se borra la instancia porque la regla auto-delete no especificada se configura como never de forma predeterminada.

Puedes verificar que la IP externa con estado esté configurada en la política con estado si ejecutas el comando gcloud compute instance-groups managed describe example-fs-group.

REST

Si deseas especificar qué direcciones IP deben tener estado o actualizar la configuración de IP con estado de un MIG existente, usa los métodos instanceGroupManagers.patch o 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" }
      }
    }
  }
}

Reemplaza lo siguiente:

  • PROJECT: El ID del proyecto para la solicitud.
  • REGION: Para los MIG regionales, la región en la que se encuentra el grupo. Para los MIG zonales, reemplaza regions/REGION por zones/ZONE y especifica la zona en la que se encuentra el MIG.
  • NAME: El nombre del MIG que se creará.
  • NI_NAME: El nombre de la interfaz de red (obligatorio). La interfaz de red principal se llama nic0. Si tienes varias interfaces de red, puedes especificar varios NI_NAMES.
  • DELETE_RULE: (Opcional) Indica qué debe suceder con el recurso estático Address asociado cuando se borra una instancia de VM de forma permanente. Las opciones disponibles son las siguientes:

    • NEVER: Nunca borrar la dirección IP estática (predeterminado). En su lugar, se anula la asignación de la dirección cuando se borra la instancia y se mantiene la dirección reservada.
    • ON_PERMANENT_INSTANCE_DELETION: Borrar la reserva de la dirección IP estática cuando una instancia se borra de forma permanente del grupo de instancias, por ejemplo, cuando borras una instancia de forma manual o disminuyes el tamaño del grupo.

    Sin importar el valor de la regla de eliminación, el grupo siempre conserva las direcciones IP con estado en las operaciones de reparación automática, actualización y recreación de las instancias.

Si una dirección IP especificada ya está configurada en la política con estado, el método aplica parches a la configuración.

Ejemplo

Debes exponer un servidor de archivos, que se ejecuta en un MIG con estado llamado example-fs-group, a usuarios externos mediante direcciones IP externas estáticas. Las instancias del grupo tienen direcciones IP externas efímeras. Debes asegurarte de que las direcciones IP se conserven en las operaciones de reparación automática y actualización de las instancias para que los usuarios externos tengan acceso continuo a los servidores a través de la interfaz de red publicada. También debes mantener las direcciones IP reservadas para la continuidad en caso de la eliminación accidental del grupo.

Aplica un parche en el MIG para definir las direcciones IP externas como con 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, el grupo asciende las direcciones IP externas efímeras dentro de la interfaz de red nic0 a direcciones IP estáticas para todas las instancias administradas de forma asíncrona.

Las direcciones IP externas ahora se conservan en los eventos de reparación automática, actualización y recreación de las instancias. Las reservas de direcciones IP estáticas asociadas se anularán y se conservarán cuando se borre la instancia porque la regla autoDelete está configurada como NEVER.

Verifica que la dirección IP externa esté configurada en la política con estado mediante la visualización del recurso regionInstanceGroupManagers que el método regionInstanceGroupManagers.get muestra.

Declara como sin estado direcciones IP que tenían estado

Es posible que debas configurar una dirección IP con estado para que sea efímera, por ejemplo, por los siguientes motivos:

  • Vuelves a diseñar tu aplicación para que ya no dependa de direcciones IP estáticas.
  • Configuraste la IP para que tenga estado por error y deseas revertir esto.

Puedes quitar la configuración de IP con estado de la política con estado del grupo para declarar una dirección IP dentro de una interfaz de red determinada como efímera para todas las instancias administradas.

Cuando quitas la configuración de IP con estado de la política con estado, el MIG quita las direcciones IP de forma automática y asíncrona del estado preservado de todas las instancias en el grupo. Esta operación no interrumpe las instancias de VMs en ejecución. Las direcciones IP permanecen activas en las instancias, pero ya no tienen estado. Cuando vuelves a crear o actualizas las instancias o cuando las instancias se reparan de manera automática, el MIG anula la asignación de las direcciones IP estáticas asociadas y asigna direcciones efímeras de forma automática. Si ya no necesitas conservar las reservas de direcciones IP externas estáticas, ahora puedes liberarlas.

Para obtener más información, lee los siguientes documentos:

Console

  1. En la consola de Google Cloud, ve a la página Grupos de instancias.

    Ir a Grupos de instancias

  2. Haz clic en el nombre del grupo de instancias del que quieres quitar la configuración con estado de las direcciones IP.

  3. Haz clic en Editar para modificar este grupo de instancias administrado.

  4. En Configuración con estado, expande la IP externa y la IP interna que deseas configurar sin estado.

    1. Cambia la opción Con estado a No.
    2. Haz clic en Listo.
  5. Una vez realizadas las modificaciones, haz clic en Guardar.

gcloud

Si deseas especificar qué direcciones IP de la política con estado de un MIG quieres que sean efímeras, usa las marcas --remove-stateful-internal-ips o --remove-stateful-external-ips con el 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,...]

Reemplaza lo siguiente:

  • INSTANCE_GROUP_NAME: Es el nombre del MIG que se actualizará.
  • NI_NAME: (Obligatorio) Nombre de la interfaz de red. La interfaz de red principal se llama nic0. Si tienes varias interfaces de red, puedes especificar varios NI_NAMES.

Si necesitas convertir una dirección IP con estado de la interfaz de red principal predeterminada llamada nic0 en una dirección IP efímera, también puedes usar el siguiente comando:

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

Ejemplo

Tu aplicación se expuso a los usuarios a través de direcciones IP externas estáticas publicadas de las instancias de VMs en un MIG llamado example-group. Rediseñaste el servicio mediante la implementación de un balanceador de cargas frente al MIG y el enrutamiento del tráfico a las VMs administradas a través de él. Ya no necesitas mantener las direcciones IP externas estáticas y quieres que las direcciones IP externas de las VM sean efímeras.

Para hacer que las direcciones IP externas con estado de las VMs de un MIG sean efímeras, ejecuta el siguiente comando:

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

El MIG quita las direcciones IP externas estáticas de la interfaz de red nic0 de forma automática y asíncrona del estado preservado de todas las instancias del grupo. Las direcciones IP externas permanecen activas en las instancias, pero ya no tienen estado. Cuando vuelves a crear o actualizas las instancias o cuando las instancias se reparan de manera automática, el MIG anula la asignación de las direcciones IP estáticas asociadas y asigna direcciones efímeras de forma automática. Si ya no necesitas conservar las reservas de direcciones IP externas estáticas, ahora puedes liberarlas.

REST

Si deseas especificar qué direcciones IP de la política con estado de un MIG quieres que sean efímeras, quita la configuración de cada IP de la política con estado del MIG mediante los métodos instanceGroupManagers.patch o 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
      }
    }
  }
}

Reemplaza lo siguiente:

  • PROJECT: El ID del proyecto para la solicitud.
  • REGION: Para los MIG regionales, la región en la que se encuentra el grupo. Para los MIG zonales, reemplaza regions/REGION por zones/ZONE y especifica la zona en la que se encuentra el MIG.
  • INSTANCE_GROUP_NAME: El nombre del MIG que se creará.
  • NI_NAME: El nombre de la interfaz de red (obligatorio). La interfaz de red principal se llama nic0. Si tienes varias interfaces de red, puedes especificar varios NI_NAMES.

Ejemplo

Tu aplicación se expuso a los usuarios a través de direcciones IP externas estáticas publicadas de las instancias de VMs en un MIG llamado example-group. Rediseñaste el servicio mediante la implementación de un balanceador de cargas frente al MIG y el enrutamiento del tráfico a las VMs administradas a través de él. Ya no necesitas mantener las direcciones IP externas estáticas y quieres que las direcciones IP externas de las VMs sean efímeras.

Para hacer que las direcciones IP externas con estado de las VMs en un MIG sean efímeras, aplica un parche al MIG:

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

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

El MIG quita las direcciones IP externas estáticas de la interfaz de red nic0 de forma automática y asíncrona del estado preservado de todas las instancias del grupo. Las direcciones IP externas permanecen activas en las instancias, pero ya no tienen estado. Cuando vuelves a crear o actualizas las instancias o cuando las instancias se reparan de manera automática, el MIG anula la asignación de las direcciones IP estáticas asociadas y asigna direcciones efímeras de forma automática. Si ya no necesitas conservar las reservas de direcciones IP externas estáticas, ahora puedes liberarlas.

Configura direcciones IP con estado de forma individual para las VM de un MIG

La configuración de direcciones IP con estado de forma individual para las VMs de un MIG es útil en las siguientes situaciones:

  • Migrar las cargas de trabajo existentes (con las direcciones IP estáticas reservadas existentes) de las instancias de VMs independientes a los MIG con estado para beneficiarse de la reparación automática y las actualizaciones automáticas.
  • Asignar direcciones IP estáticas reservadas específicas necesarias según la configuración de la arquitectura o la carga de trabajo.

Configura direcciones IP estáticas durante la creación de VM en un MIG

Puedes reservar y asignar direcciones IP estáticas a instancias específicas cuando creas esas instancias de forma individual en un MIG. Esto es útil para migrar una aplicación con estado de las VMs independientes existentes a un MIG con estado en una situación en la que la arquitectura, la configuración o los usuarios dependen de direcciones IP estáticas específicas.

Cuando creas de forma manual una instancia en un MIG y proporcionas una dirección IP estática, el MIG realiza las siguientes acciones:

  1. Crea una reserva de dirección IP interna o externa estática para las direcciones IP proporcionadas si aún no existen.
  2. Crea una instancia a partir de la plantilla de instancia con el nombre de instancia y las direcciones IP que se proporcionan.
  3. Crea una configuración por instancia con la configuración con estado que se proporciona para las direcciones IP.

gcloud

Para crear una instancia con una dirección IP estática predefinida, usa el comando gcloud compute instance-groups managed create-instance con una o varias de las siguientes marcas:

  • --stateful-internal-ip para establecer una dirección IP interna estática de una interfaz de red determinada.
  • --stateful-external-ip para establecer una dirección IP externa estática de una interfaz de red determinada.
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]

Reemplaza lo siguiente:

  • INSTANCE_GROUP_NAME: el nombre del MIG
  • INSTANCE_NAME: El nombre de la instancia que se creará.
  • NI_NAME: Nombre de la interfaz de red. Si no se proporciona, la interfaz de red principal llamada nic0 se supone de manera predeterminada. Si tienes varias interfaces de red, puedes especificar esta marca para cada IP en cada interfaz de red.
  • ADDRESS: Dirección IP estática (obligatoria) que se asignará a la instancia en uno de los siguientes formatos:

    • Address. URL de una reserva de dirección IP estática, por ejemplo: "projects/example-project/regions/us-east1/addresses/example-ip-name".
    • Literal, por ejemplo: "130.211.181.55".
      • Si la dirección IP proporcionada aún no está reservada, el MIG crea de forma automática una reserva de dirección IP correspondiente.
      • Si la dirección IP proporcionada está reservada, el MIG asigna la reserva a la instancia.
  • DELETE_RULE: Describe lo que debe suceder con un recurso Address estático asociado cuando se borra una instancia de VM de forma permanente. Las opciones disponibles son las siguientes:

    • never: Nunca borrar la dirección IP estática. En su lugar, se anula la asignación de la dirección cuando se borra la instancia y se mantiene la dirección reservada.
    • on-permanent-instance-deletion: Borrar la reserva de la dirección IP estática cuando una instancia se borra de forma permanente del grupo de instancias, por ejemplo, cuando borras una instancia de forma manual o disminuyes el tamaño del grupo.

    Sin importar el valor de la regla de eliminación, el grupo siempre conserva las direcciones IP con estado en las operaciones de reparación automática, actualización y recreación de las instancias.

Ejemplo

Debes agregar una instancia de VM más al clúster del servidor proxy, que se ejecuta en un MIG llamado proxy-cluster. Creaste una reserva de dirección IP interna estática llamada proxy-node-03-ip y debes asignarla al nodo nuevo. Deseas conservar la reserva de dirección IP incluso si decides borrar el nodo en el futuro.

Ejecuta el siguiente comando para crear el nodo:

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

El comando crea una instancia llamada proxy-node-03, asigna la dirección IP interna estática proporcionada llamada proxy-node-03-ip a la instancia y almacena la configuración con estado de la IP en la configuración por instancia correspondiente. Debido a que la marca auto-delete está configurada como never, la IP permanece reservada si borras la instancia más adelante.

Terraform

Para crear una VM con una dirección IP estática predefinida, usa uno o varios de los siguientes bloques:

  • preserved_state.internal_ip para marcar una dirección IP interna de una interfaz de red determinada como con estado.
  • preserved_state.external_ip para marcar una dirección IP externa de una interfaz de red determinada como con estado.

En el siguiente ejemplo, se configuran direcciones IP estáticas durante la creación de VM en un MIG regional. Para obtener más información sobre el recurso usado en la muestra, consulta recurso google_compute_region_per_instance_config. Para un MIG zonal, usa el método 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
      }
    }
  }
}

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

REST

Si deseas crear una o varias instancias en un MIG, establecer los nombres de instancia personalizados y asignar direcciones IP estáticas predefinidas a estas instancias, usa los métodos instanceGroupManagers.createInstances o 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"
          },
          ...
        },
        ...
      }
    },
    ...
  ]
}

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto para la solicitud.
  • NAME: el nombre del MIG
  • REGION: Para los MIG regionales, la región en la que se encuentra el grupo. Para los MIG zonales, reemplaza regions/REGION por zones/ZONE y especifica la zona en la que se encuentra el MIG.
  • INSTANCE_NAME: El nombre de la instancia que se creará.
  • NI_NAME: (Obligatorio) Nombre de la interfaz de red. La interfaz de red principal se llama nic0. Si tienes varias interfaces de red, puedes especificar varios NI_NAMES.
  • ADDRESS: Dirección IP estática para asignar a la instancia en el formato de una URL de una reserva de dirección IP estática, por ejemplo: "projects/example-project/regions/us-east1/addresses/example-ip-name". Debes y puedes asignar solo un campo a la vez, ya sea address o literal, cuando asignas una dirección IP estática.
  • LITERAL: (Opcional). Dirección IP estática que se asignará a la instancia en el formato literal, por ejemplo, "130.211.181.55". Debes y puedes asignar solo un campo a la vez, ya sea address o literal, cuando asignas una dirección IP estática.
    • Si la dirección IP literal proporcionada aún no está reservada, el MIG crea de forma automática una reserva de dirección IP correspondiente.
    • Si la dirección IP literal proporcionada está reservada, el MIG asigna la reserva a la instancia.
  • DELETE_RULE: Describe lo que debe suceder con un recurso Address estático asociado cuando se borra una instancia de VM de forma permanente. Las opciones disponibles son las siguientes:

    • NEVER: Nunca borrar la dirección IP estática. En su lugar, se anula la asignación de la dirección cuando se borra la instancia y se mantiene la dirección reservada.
    • ON_PERMANENT_INSTANCE_DELETION: Borrar la reserva de la dirección IP estática cuando una instancia se borra de forma permanente del grupo de instancias, por ejemplo, cuando borras una instancia de forma manual o disminuyes el tamaño del grupo.

    Sin importar el valor de la regla de eliminación, el grupo siempre conserva las direcciones IP con estado en las operaciones de reparación automática, actualización y recreación de las instancias.

Ejemplo

Debes agregar una instancia de VM más al clúster del servidor proxy, que se ejecuta en un MIG llamado proxy-cluster. Creaste una reserva de dirección IP interna estática llamada proxy-node-03-ip y debes asignarla al nodo nuevo. Deseas conservar la reserva de dirección IP incluso si decides borrar el nodo en el futuro.

Llama al método regionInstanceGroupManagers.createInstances para crear una instancia 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"
          }
        }
      }
    }
  ]
}

El método crea una instancia llamada proxy-node-03, asigna la dirección IP interna estática proporcionada llamada proxy-node-03-ip a la instancia y almacena la configuración con estado de la IP en la configuración por instancia correspondiente. Debido a que el campo autoDelete está configurado como NEVER, la IP permanece reservada si borras la instancia más adelante.

Configura direcciones IP estáticas para una VM existente de un MIG

Puedes configurar una dirección IP estática predefinida o actualizar la configuración de IP con estado de una instancia administrada de forma individual, por ejemplo:

  • Asigna una dirección IP estática a una instancia existente de un MIG. Para las IP externas estáticas, esta operación requiere que se actualice la instancia y para las IP internas estáticas, se requiere recreación de instancias.
  • Actualiza la regla de eliminación de una dirección IP estática ya asignada. Esta operación se puede realizar sin interrumpir la instancia en ejecución.

En el caso de una instancia existente sin una dirección IP externa, para la que configuras una IP con estado externa, el MIG agrega configuración de acceso a la interfaz de red correspondiente con los siguientes valores predeterminados:

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

gcloud

Si deseas configurar una dirección IP con estado de forma individual para una instancia de VM en un MIG, agrega o actualiza la configuración de IP con estado en la configuración por instancia asociada.

Si aún no existe una configuración por instancia para la instancia, usa el comando gcloud compute instance-groups managed instance-configs create con una o varias de las siguientes marcas:

  • --stateful-internal-ip para establecer una dirección IP interna estática de una interfaz de red determinada.
  • --stateful-external-ip para establecer una dirección IP externa estática de una interfaz de red determinada.
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]

Si ya existe una configuración por instancia para la instancia, usa el comando gcloud compute instance-groups managed instance-configs update con una o varias marcas --stateful-internal-ip o --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]

Reemplaza lo siguiente:

  • INSTANCE_GROUP_NAME: el nombre del MIG
  • INSTANCE_NAME: Es el nombre de la instancia para la que se configurarán las direcciones IP con estado.
  • NI_NAME: Nombre de la interfaz de red. Si no se proporciona, la interfaz de red principal llamada nic0 se supone de manera predeterminada. Si tienes varias interfaces de red, puedes especificar esta marca para cada IP en cada interfaz de red.
  • ADDRESS: Dirección IP estática que se asignará a la instancia en uno de los siguientes formatos:
    • Address. URL de una reserva de dirección IP estática, por ejemplo: "projects/example-project/regions/us-east1/addresses/example-ip-name".
    • Literal. Por ejemplo: "130.211.181.55".
      • Si la dirección IP proporcionada aún no está reservada, el MIG crea de forma automática una reserva de dirección IP correspondiente.
      • Si la dirección IP proporcionada está reservada, el MIG asigna la reserva a la instancia.
    • Esta marca secundaria es opcional si la dirección ya está definida en la configuración por instancia de la instancia. De lo contrario, es obligatoria.
    • Si se omite, la dirección configurada no se modifica.
  • DELETE_RULE: Describe lo que debe suceder con un recurso Address estático asociado cuando se borra una instancia de VM de forma permanente. Las opciones disponibles son las siguientes:

    • never: Nunca borrar la dirección IP estática. En su lugar, se anula la asignación de la dirección cuando se borra la instancia y se mantiene la dirección reservada.
    • on-permanent-instance-deletion: Borrar la reserva de la dirección IP estática cuando una instancia se borra de forma permanente del grupo de instancias, por ejemplo, cuando borras una instancia de forma manual o disminuyes el tamaño del grupo.
    • Si se omite, se establece el valor predeterminado para una nueva configuración de IP con estado. El valor no se modifica en una configuración existente.

    Sin importar el valor de la regla de eliminación, el grupo siempre conserva las direcciones IP con estado en las operaciones de reparación automática, actualización y recreación de las instancias.

  • --update-instance:(Opcional y Default.) Aplica los cambios de inmediato a la instancia. Si usas la marca --no-update-instance, los cambios permanecerán sin aplicar y se aplicarán cuando vuelvas a crear la instancia o le apliques la actualización más adelante.

  • MINIMAL_ACTION: Realiza al menos la acción especificada cuando se aplique la actualización de la configuración por instancia a la instancia. Se debe usar con la marca --update-instance. El valor debe ser uno de los siguientes:

    • none: Ninguna acción
    • refresh: Aplicar actualizaciones que no requieren que se detenga la instancia
    • restart: Detener la instancia y volver a iniciarla
    • replace: Volver a crear la instancia

Si se omite, se usa la acción menos perjudicial que requiere la actualización.

Ejemplo

Tienes una instancia de servidor de archivos llamada file-server, que es una única instancia en un MIG con estado llamado fs-group. El grupo tiene una configuración por instancia correspondiente, en la que se configura un disco de datos con estado. Solo se puede acceder al servidor de archivos de forma interna, pero ahora tienes usuarios que necesitan acceder a él de forma externa a través de una dirección IP estática. Reservaste la IP externa estática mediante la creación de la reserva de dirección file-server-ip. Ahora debes asignar esta IP a la instancia del servidor de archivos.

Ejecuta el siguiente comando para configurar la IP externa con estado para la instancia del servidor de archivos:

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

El comando realiza lo siguiente:

  1. Actualiza la configuración por instancia para la instancia file-server:
    1. Agrega una configuración de IP externa con estado que apunta a la reserva de dirección file-server-ip.
    2. Mantiene la configuración del disco de datos con estado existente sin cambios.
  2. Aplica la actualización de configuración por instancia a la instancia file-server de inmediato porque se incluye la marca --update-instance: actualiza la instancia y asigna la dirección IP externa estática de la reserva file-server-ip.

REST

Si deseas configurar las IP con estado de forma individual para las instancias de VMs de un MIG, agrega o actualiza la configuración de IP con estado en los parámetros de configuración por instancia asociados.

Si aún no existe una configuración por instancia para las instancias determinadas, usa elinstanceGroupManagers.updatePerInstanceConfigs método o el método regionInstanceGroupManagers.updatePerInstanceConfigs con configuración con estado para una o varias direcciones 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"
    },
    ...
  ]
}

Si ya existe una configuración por instancia para las instancias determinadas, usa el método instanceGroupManagers.patchPerInstanceConfigs o el método regionInstanceGroupManagers.patchPerInstanceConfigs con configuración con estado para una o varias direcciones 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"
    },
    ...
  ]
}

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto para la solicitud.
  • NAME: el nombre del MIG
  • REGION: Para los MIG regionales, la región en la que se encuentra el grupo. Para los MIG zonales, reemplaza regions/REGION por zones/ZONE y especifica la zona en la que se encuentra el MIG.
  • INSTANCE_NAME: (Obligatorio) Es el nombre de la instancia para la que se configurarán las IP con estado.
  • NI_NAME: (Obligatorio) Nombre de la interfaz de red. La interfaz de red principal se llama nic0. Si tienes varias interfaces de red, puedes especificar varios NI_NAMES.
  • ADDRESS: Dirección IP estática para asignar a la instancia en el formato de una URL de una reserva de dirección IP estática, por ejemplo: "projects/example-project/regions/us-east1/addresses/example-ip-name". Debes y puedes configurar solo un campo a la vez, ya sea dirección o literal, cuando asignes una dirección IP estática.
  • LITERAL: Dirección IP estática que se asignará a la instancia en el formato literal. Por ejemplo: "130.211.181.55". Cuando asignas una dirección IP estática, debes y puedes configurar solo un campo a la vez, ya sea dirección o literal.
    • Si la dirección IP literal proporcionada aún no está reservada, el MIG crea de forma automática una reserva de dirección IP correspondiente.
    • Si la dirección IP literal proporcionada está reservada, el MIG asigna la reserva a la instancia.
  • DELETE_RULE: Describe lo que debe suceder con un recurso Address estático asociado cuando se borra una instancia de VM de forma permanente. Las opciones disponibles son las siguientes:

    • NEVER: Nunca borrar la dirección IP estática. En su lugar, se anula la asignación de la dirección cuando se borra la instancia y se mantiene la dirección reservada.
    • ON_PERMANENT_INSTANCE_DELETION: Borrar la reserva de la dirección IP estática cuando una instancia se borra de forma permanente del grupo de instancias, por ejemplo, cuando borras una instancia de forma manual o disminuyes el tamaño del grupo.
    • Si se omite, se establece el valor predeterminado para una nueva configuración de IP con estado. El valor no se modifica en una configuración existente.

    Sin importar el valor de la regla de eliminación, el grupo siempre conserva las direcciones IP con estado en las operaciones de reparación automática, actualización y recreación de las instancias.

  • FINGERPRINT: La huella digital de la configuración determinada si ya existe (opcional). Se usa para el bloqueo optimista. La operación falla si la huella digital es diferente a la proporcionada, ya que indica que la configuración por instancia se cambió desde la última vez que se leyó. Si quieres ver la huella digital más reciente, consulta el resultado del método listPerInstanceConfigs para un MIG regional o zonal. Si se omite fingerprint, la operación continúa sin la comparación de huellas digitales.

Los métodos updatePerInstanceConfigs y patchPerInstanceConfigs actualizan la configuración especificada por instancia, pero no aplican las actualizaciones de configuración a las instancias administradas asociadas. Los cambios se aplican a una instancia cuando se le indica al MIG que vuelva a crear la instancia o que la actualice. Puedes aplicar la actualización de forma manual para aplicar los cambios a una instancia.

Ejemplo

Tienes una instancia de servidor de archivos llamada file-server, que es una única instancia en un MIG con estado llamado fs-group. El grupo tiene una configuración por instancia correspondiente, en la que se configura un disco de datos con estado. Solo se puede acceder al servidor de archivos de forma interna, pero ahora tienes usuarios que necesitan acceder a él de forma externa a través de una dirección IP estática. Reservaste la IP externa estática mediante la creación de la reserva de dirección file-server-ip. Ahora debes asignar esta IP a la instancia del servidor de archivos.

Si deseas actualizar la configuración por instancia de file-server con la nueva IP externa con estado, llama al 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"
          }
        }
      }
    }
  ]
}

El método aplica parches a la configuración por instancia para la instancia file-server:

  1. Agrega una configuración de IP externa con estado que apunta a la reserva de la dirección file-server-ip.
  2. Mantiene la configuración del disco de datos con estado existente sin cambios.

La actualización de la configuración aún no se aplicó a la instancia de VM file-server. El MIG aplicará la actualización de la configuración cuando vuelvas a crear la instancia o le apliques la actualización más adelante.

Para aplicar la actualización de la configuración por instancia a la instancia de VM file-server, llama al método regionInstanceGroupManagers.applyUpdatesToInstances para la instancia:

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

El método asigna la dirección IP externa estática configurada de la reserva file-server-ip a la instancia administrada. El método actualiza la instancia file-server para asignar una dirección IP externa.

Debido a que autoDelete se establece como NEVER en la configuración de IP con estado, la IP permanecerá reservada si borras la instancia más adelante.

Desasocia direcciones IP estáticas de una VM existente en un MIG

Es posible que debas desasociar una dirección IP estática de una VM existente, lo que hace que la interfaz de red sea efímera para la VM. Esto es útil en las siguientes situaciones:

  • Vuelves a diseñar tu aplicación para que ya no dependa de direcciones IP estáticas.
  • Configuraste la IP para que tenga estado por error y deseas revertir esto.

Puedes desasociar una dirección IP estática de una VM existente en un MIG y hacer que la dirección IP sea efímera para una VM individual si quitas la configuración con estado de la IP de la configuración por instancia asociada o si borras toda la configuración por instancia si no contiene ningún otro estado. Aplicar el cambio tiene los siguientes efectos:

  • La dirección IP permanece activa en la instancia, pero ya no tiene estado.
  • Cuando vuelves a crear la instancia o la actualizas, o cuando la instancia se repara de forma automática, el MIG anula la asignación de la reserva de dirección IP estática asociada y asigna una dirección efímera de forma automática.
  • Una vez que se anula la asignación, la dirección IP estática permanece reservada.

Quitar una configuración de IP con estado de una configuración por instancia no interrumpe las instancias de VMs en ejecución, a menos que decidas hacerlo de forma explícita.

Para obtener más información, consulta los siguientes documentos:

gcloud

Para quitar una configuración de IP con estado de la configuración por instancia asociada, usa el comando gcloud compute instance-groups managed instance-configs update con las marcas --remove-stateful-internal-ips o --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]

Reemplaza lo siguiente:

  • INSTANCE_GROUP_NAME: el nombre del MIG
  • INSTANCE_NAME: (Obligatorio) El nombre de la instancia a la que se le quitará la configuración de IP con estado.
  • NI_NAME: (Obligatorio) Nombre de la interfaz de red. La interfaz de red principal se llama nic0. Si tienes varias interfaces de red, puedes especificar varios NI_NAMES.
  • --update-instance:(Opcional y Default.) Aplica los cambios de inmediato a la instancia. Si usas la marca --no-update-instance, los cambios permanecerán sin aplicar y se aplicarán cuando vuelvas a crear la instancia o le apliques la actualización más adelante.
  • MINIMAL_ACTION: Realiza al menos la acción especificada cuando se aplique la actualización de la configuración por instancia a la instancia. Esta marca solo se puede usar junto con la marca --update-instance. El valor debe ser uno de los siguientes:

    • none: Ninguna acción
    • refresh: Aplicar actualizaciones que se pueden aplicar sin detener la instancia.
    • restart: Detener la instancia y volver a iniciarla
    • replace: Volver a crear la instancia

    Si se omite, se usa la acción menos perjudicial que requiere la actualización.

Ejemplo

Tu aplicación se expuso a los usuarios a través de direcciones IP externas estáticas publicadas específicas de las instancias de VMs en un MIG llamado example-group. Rediseñaste el servicio mediante la implementación de un balanceador de cargas frente al MIG y el enrutamiento del tráfico a las VMs administradas a través de él. Ya no necesitas mantener las direcciones IP externas estáticas y quieres que las direcciones IP externas de las VMs sean efímeras.

Para que las direcciones IP externas con estado de las VM en un MIG sean efímeras, ejecuta el siguiente comando para cada instancia, por ejemplo, para node-1:

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

El comando realiza lo siguiente:

  1. Quita la configuración con estado de la dirección IP externa dentro de la interfaz de red nic0 de la configuración por instancia para node-1.
  2. Aplica la actualización de configuración por instancia a la instancia de VM node-1 de inmediato porque se incluye la marca --update-instance. La instancia de VM no se interrumpe y mantiene la entrega desde la misma IP, que ya no tiene estado. El MIG quita la referencia a la reserva de IP estática de preservedStateFromConfig de la instancia administrada y trata la dirección IP externa como efímera. El MIG asignará de forma automática una IP externa en los eventos posteriores de recreación, actualización o reparación automática de instancias.
  3. Una vez que se haya anulado la asignación, la IP estática original permanecerá reservada. Puedes liberar la IP si ya no la necesitas.

REST

Para quitar una configuración de IP con estado de la configuración por instancia asociada, usa el método instanceGroupManagers.patchPerInstanceConfigs o el 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"
    },
    ...
  ]
}

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto para la solicitud.
  • NAME: el nombre del MIG
  • REGION: Para los MIG regionales, la región en la que se encuentra el grupo. Para los MIG zonales, reemplaza regions/REGION por zones/ZONE y especifica la zona en la que se encuentra el MIG.
  • INSTANCE_NAME: (Obligatorio) El nombre de la instancia a la que se le quitará la configuración de IP con estado.
  • NI_NAME: (Obligatorio) Nombre de la interfaz de red. La interfaz de red principal se llama nic0. Si tienes varias interfaces de red, puedes especificar varios NI_NAMES.
  • FINGERPRINT: La huella digital de la configuración determinada si ya existe (opcional). Se usa para el bloqueo optimista. La operación falla si la huella digital es diferente a la proporcionada, ya que indica que la configuración por instancia se cambió desde la última vez que se leyó. Si quieres ver la huella digital más reciente, consulta el resultado del método listPerInstanceConfigs para un MIG regional o zonal. Si se omite fingerprint, la operación continúa sin la comparación de huellas digitales.

El método patchPerInstanceConfigs actualiza la configuración por instancia especificada, pero no aplica las actualizaciones de configuración a las instancias administradas asociadas. Los cambios se aplican a una instancia cuando se le indica al MIG que vuelva a crear la instancia o que la actualice. Puedes aplicar la actualización de forma manual para aplicar los cambios a una instancia.

Ejemplo

Tu aplicación se expuso a los usuarios a través de direcciones IP externas estáticas publicadas específicas de las instancias de VMs en un MIG llamado example-group. Rediseñaste el servicio mediante la implementación de un balanceador de cargas frente al MIG y el enrutamiento del tráfico a las VMs administradas a través de él. Ya no necesitas mantener las direcciones IP externas estáticas y quieres que las direcciones IP externas de las VMs sean efímeras.

Para que las direcciones IP externas con estado de las VMs en un MIG sean efímeras, ejecuta el siguiente método para cada instancia, por ejemplo, para node-1 y proporciona el valor null a la configuración con estado de la interfaz de red:

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
        }
      }
    }
  ]
}

El método quita la configuración de la dirección IP con estado dentro de la interfaz de red nic0 de la configuración por instancia para node-1. La actualización de la configuración aún no se aplicó a la instancia de VM node-1. El MIG aplica la actualización de la configuración en la próxima recreación o actualización de la instancia.

Para aplicar la actualización de la configuración por instancia a la instancia de VM node-1, llama al método regionInstanceGroupManagers.applyUpdatesToInstances de la instancia:

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

El MIG quita la referencia a la reserva de IP estática del campo preservedStateFromConfig de la instancia node-1 y trata la dirección IP como efímera. El MIG asignará de forma automática una IP externa en los eventos posteriores de recreación, actualización o reparación automática de instancias.

Una vez que se haya anulado la asignación, la IP estática original permanecerá reservada. Puedes liberar la IP si ya no la necesitas.

Quita la configuración con estado

Para quitar la configuración de una política con estado para todas las VMs de un MIG, consulta los siguientes documentos:

Para quitar la configuración de una configuración por instancia de una VM específica de un MIG, consulta los siguientes documentos:

Limpia direcciones IP estáticas sin usar

Cuando configuras una dirección IP con estado para las instancias administradas de un grupo, puedes elegir si deseas liberar las reservas de direcciones IP estáticas asociadas de forma manual o automática cuando una instancia se borre de forma permanente:

  • Para liberar las reservas de direcciones IP estáticas de forma automática cuando se borra la instancia de manera permanente, establece el parámetro autoDelete como ON_PERMANENT_INSTANCE_DELETION.
  • Para liberar las reservas de direcciones IP estáticas de forma manual, establece el parámetro autoDelete en NEVER. Para limpiar las reservas de direcciones IP estáticas sin usar, por ejemplo, para evitar cargos innecesarios, consulta los siguientes documentos:

Si le indicaste al MIG que nunca borre las reservas de IP asociadas, las direcciones IP estáticas permanecen reservadas después de las instancias correspondientes o el MIG dejan de existir.

Comentarios

Queremos conocer tus casos de uso, desafíos y comentarios sobre los MIG con estado. Puedes compartir tus comentarios con nuestro equipo en mig-discuss@google.com.

¿Qué sigue?