Configurar direcciones IP con estado en grupos de instancias gestionados

Si configuras direcciones IP con reconocimiento del estado en un grupo de instancias gestionado (MIG), te aseguras de que las direcciones IP se conserven cuando las instancias de máquina virtual del grupo se reparen automáticamente, se actualicen y se vuelvan a crear.

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

Antes de empezar

  • Consulta cuándo usar grupos de instancias gestionados con reconocimiento del estado y cómo funcionan.
  • Si aún no lo has hecho, configura la autenticación. La autenticación verifica tu identidad para acceder a Trusted Cloud by S3NS servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

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

    Console

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

    gcloud

    1. Instala Google Cloud CLI y, a continuación, inicia sesión en gcloud CLI con tu identidad federada. Después de iniciar sesión, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init
    2. Set a default region and zone.

    Terraform

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

      Instala Google Cloud CLI y, a continuación, inicia sesión en gcloud CLI con tu identidad federada.

      Create local authentication credentials for your user account:

      gcloud auth application-default login

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

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

    REST

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

      Instala Google Cloud CLI y, a continuación, inicia sesión en gcloud CLI con tu identidad federada.

    Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Trusted Cloud .

Limitaciones

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

  • No se admiten direcciones IPv6.

  • Las direcciones IP internas no se admiten en redes que no tengan subredes, como las redes antiguas.

Un MIG con configuración con reconocimiento del estado (un MIG con reconocimiento del estado) tiene las siguientes limitaciones:

  • No puedes usar el autoescalado si tu MIG tiene una configuración con reconocimiento del estado.
  • Si quieres usar actualizaciones continuas automatizadas, debes definir el método de sustitución en RECREATE.
  • En el caso de los MIGs regionales con reconocimiento del estado, debes inhabilitar la redistribución proactiva (establecer el tipo de redistribución en NONE) para evitar que se eliminen instancias con reconocimiento del estado mediante la redistribución automática entre zonas.
  • Si usas una configuración de todas las instancias para anular las propiedades de la plantilla de instancia, no puedes especificar esas propiedades en ninguna configuración por instancia y, al mismo tiempo, en la configuración de todas las instancias del grupo.

Precios

Se te cobra por las direcciones IP externas según los precios de la red.

Cuándo usar direcciones IP con estado

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

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

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

Configurar direcciones IP con estado para todas las VMs de un MIG es útil en los siguientes casos:

  • Tu aplicación requiere que una dirección IP permanezca estática después de que se le haya asignado. Sin embargo, tu aplicación no requiere que se asignen direcciones IP específicas a instancias concretas. Las direcciones IP se pueden asignar automáticamente al crear la instancia.
  • Tus usuarios, incluidas otras aplicaciones, acceden a tus servidores a través de direcciones IP estáticas que publicas después de implementar tu aplicación.
  • Quieres beneficiarte de la reparación automática de instancias y de las actualizaciones automatizadas, pero conservar la dirección IP estática que se asigna automáticamente al crear la instancia.

Para mantener las direcciones IP internas o externas estáticas de las instancias de VM actuales y futuras del grupo, configúralas en la política con estado.

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

  • En el caso de las instancias nuevas, el MIG asigna y reserva automáticamente direcciones IP estáticas.
  • En el caso de las instancias que ya existen, el MIG convierte las direcciones IP internas o externas efímeras en uso en direcciones estáticas reservando las direcciones IP estáticas correspondientes.
  • En el caso de las instancias que no tengan direcciones IP externas, el MIG asigna y reserva direcciones IP estáticas, y añade una 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.

Configurar direcciones IP con reconocimiento del estado al crear un MIG

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

Consola

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

    Ir a Grupos de instancias

  2. Selecciona el proyecto y haz clic en Continuar.

  3. Haz clic en Crear grupo de instancias.

  4. Selecciona Nuevo grupo de instancias gestionado (con reconocimiento del estado).

  5. Especifica un Nombre para el grupo de instancias.

  6. Selecciona una plantilla de instancia.

  7. En Número de instancias, especifica el número de instancias que quieres incluir en el grupo de instancias gestionadas.

  8. En Configuración con estado, despliega las secciones IP externa e IP interna para configurar esos tipos de direcciones IP como con estado.

    1. En Stateful (Con estado), selecciona Yes (Sí).
    2. En la lista Al eliminar la instancia de forma permanente, selecciona la acción que se debe realizar en la dirección IP con estado cuando se elimine la instancia de VM. Estas son las opciones disponibles:
      • Desasociar IP: (opción predeterminada). Anula la asignación de la dirección al eliminar la instancia y mantén la dirección reservada.
      • Eliminar IP: elimina la reserva de dirección IP estática cuando se elimina una instancia de forma permanente del grupo de instancias. Por ejemplo, cuando eliminas una instancia manualmente o reduces el tamaño del grupo.
    3. Cuando hayas terminado de configurar el estado, haz clic en Hecho.
  9. Haz clic en Crear.

gcloud

Cuando crees un MIG, para especificar qué direcciones IP de las interfaces de red de la plantilla de instancia 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 como con estado una dirección IP interna de una interfaz de red determinada.
  • --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]

Haz los cambios siguientes:

  • INSTANCE_GROUP_NAME: nombre del MIG que se va a crear.
  • INSTANCE_TEMPLATE: el nombre de la plantilla de instancia que se usará al crear instancias.
  • SIZE: número inicial de instancias que necesitas en este grupo.
  • NI_NAME: (opcional). Nombre de la interfaz de red. Si no se proporciona, se requiere la opción enabled y se asume de forma predeterminada la interfaz de red principal llamada nic0. Si tienes varias interfaces de red, puedes especificar esta marca para cada IP de cada interfaz de red.
  • DELETE_RULE: (opcional). Indica qué debe ocurrir con el recurso Address estático asociado cuando se elimina de forma permanente una instancia de VM. Estas son las opciones disponibles:

    • never: (predeterminado). No elimines nunca la dirección IP estática. En su lugar, desasigna la dirección al eliminar la instancia y mantén la dirección reservada.
    • on-permanent-instance-deletion: elimina la reserva de dirección IP estática cuando se elimina una instancia de forma permanente del grupo de instancias (por ejemplo, cuando eliminas una instancia manualmente o reduces el tamaño del grupo).

    Independientemente del 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 instancias.

Ejemplo

Debe crear un grupo regional de instancias de VM con direcciones IP internas estáticas para las redes predeterminadas y personalizadas, y direcciones IP externas estáticas solo para la red predeterminada. Quieres que las direcciones se asignen automáticamente, pero necesitas que se conserven en caso de reparación automática, actualización o recreación de instancias. Almacenas la configuración de la instancia 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 IPs internas de las interfaces de red nic0 y nic1, y la IP externa 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. Como la marca auto-delete tiene el valor on-permanent-instance-deletion, el grupo eliminará automáticamente las reservas de direcciones IP estáticas cuando elimines las instancias asociadas o todo el grupo.

Para verificar que las IPs internas de las interfaces de red nic0 y nic1 y la IP externa 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

La salida es similar a la 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 IPs internas en las interfaces de red nic0 y nic1, e IPs externas en la interfaz de red nic0 como con estado, con la regla de eliminar las reservas de IPs estáticas al eliminar permanentemente la instancia.

Terraform

Si aún no has creado una plantilla de instancia, que especifica el tipo de máquina, la imagen del disco de arranque, la red y otras propiedades de la VM que quieras para cada VM de tu MIG, crea una plantilla de instancia.

Cuando cree un MIG, para especificar qué direcciones IP de las interfaces de red de la plantilla de instancia deben tener estado, utilice uno o varios de los siguientes bloques:

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

En el siguiente ejemplo se configuran direcciones IP con reconocimiento del estado al crear un MIG regional. Para obtener más información sobre el recurso utilizado en el ejemplo, consulta google_compute_region_instance_group_managerrecurso.

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

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

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

REST

Cuando cree un MIG, para especificar qué direcciones IP de las interfaces de red de la plantilla de instancia deben tener estado, inclúyalas en el campo statefulPolicy del cuerpo de la solicitud del método 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"
  }
}

Haz los cambios siguientes:

  • PROJECT: el ID del proyecto de la solicitud.
  • REGION: en el caso de los grupos de instancias gestionados regionales, la región en la que se encuentra el grupo. En el caso de los MIGs zonales, sustituye regions/REGION por zones/ZONE y especifica la zona en la que se encuentra el MIG.
  • NAME: el nombre del MIG que se va a crear.
  • INSTANCE_TEMPLATE: nombre de la plantilla de instancia que se va a usar al crear instancias.
  • SIZE: número inicial de instancias que necesitas en este grupo.
  • NI_NAME: (opcional). Nombre de la interfaz de red. Si no se proporciona, se requiere la opción enabled y se asume de forma predeterminada la interfaz de red principal llamada nic0. Si tienes varias interfaces de red, puedes especificar varios NI_NAMES.
  • DELETE_RULE: (opcional) indica qué debe ocurrir con un recurso de dirección estática asociado cuando se elimina de forma permanente una instancia de VM. Estas son las opciones disponibles:

    • NEVER: (Predeterminado) Nunca se elimina la dirección IP estática. En su lugar, desasigna la dirección al eliminar la instancia y mantén la dirección reservada.
    • ON_PERMANENT_INSTANCE_DELETION: elimina la reserva de dirección IP estática cuando se elimina una instancia de forma permanente del grupo de instancias (por ejemplo, cuando eliminas una instancia manualmente o reduces el tamaño del grupo).

    Independientemente del 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 instancias.

Ejemplo

Debes crear un grupo regional de instancias de VM con direcciones IP internas estáticas para las redes predeterminadas y personalizadas, y direcciones IP externas estáticas solo para la red predeterminada. Quieres que las direcciones se asignen automáticamente, pero necesitas que se conserven en caso de reparación automática, actualización o recreación de instancias. Almacenas la configuración de la instancia 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 IPs internas de las interfaces de red nic0 y nic1, y las IPs externas 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. Como el campo auto-delete está definido como ON_PERMANENT_INSTANCE_DELETION, el grupo eliminará automáticamente las reservas de direcciones IP estáticas cuando elimines las instancias asociadas o todo el grupo.

Usa el método regionInstanceGroupManagers.get para verificar que las IPs internas de las interfaces de red nic0 y nic1, así como las IPs externas de la interfaz de red nic0, se han configurado 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 IPs internas de las interfaces de red nic0 y nic1, y las IPs externas de la interfaz de red nic0 como con estado, con la regla de eliminar las reservas de direcciones IP estáticas asociadas cuando se elimine la instancia de forma permanente.

Definir y actualizar la configuración con reconocimiento del estado de las direcciones IP en un MIG

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 se hayan asignado a las instancias de VM gestionadas para que tengan estado. De esta forma, las direcciones IP de tus VMs se conservan en caso de reparación automática, actualización o recreación de instancias. Si quieres, puedes conservar las reservas de direcciones IP estáticas después de eliminar las instancias.

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

  • Configura las direcciones IP como con estado para todas las instancias actuales y futuras del grupo. De esta forma, se ascienden a direcciones IP estáticas las direcciones IP efímeras correspondientes de todas las instancias.
  • Actualiza la configuración con estado de las direcciones IP.

El MIG aplica la configuración actualizada en la política con reconocimiento del estado de forma automática y asíncrona a todas las instancias. Las actualizaciones de las configuraciones de direcciones IP en una política con estado no interrumpen las instancias de VM en ejecución. Para obtener más información, consulta cómo aplicar actualizaciones de políticas con estado.

Consola

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

    Ir a Grupos de instancias

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

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

  4. Haz clic en Configuración con estado y por instancia para desplegar la sección.

  5. En la sección Configuración de grupo, haz clic en la IP externa y en la IP interna que quieras que tenga estado.

    1. En Stateful (Con estado), selecciona Yes (Sí).
    2. En la lista Al eliminar la instancia de forma permanente, selecciona la acción que se debe realizar en la dirección IP con estado cuando se elimine la instancia de VM. Estas son las opciones disponibles:
      • Desasociar IP: (opción predeterminada). Anula la asignación de la dirección al eliminar la instancia y mantén la dirección reservada.
      • Eliminar IP: elimina la reserva de dirección IP estática cuando se elimina una instancia de forma permanente del grupo de instancias. Por ejemplo, cuando eliminas una instancia manualmente o reduces el tamaño del grupo.
    3. Una vez que hayas actualizado la configuración con estado, haz clic en Hecho.
    4. Haz clic en Guardar para completar la actualización.

gcloud

Para especificar qué direcciones IP deben tener estado o para actualizar la configuración de IP con estado de un MIG, 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]

Haz los cambios siguientes:

  • INSTANCE_GROUP_NAME: el nombre del MIG que se va a actualizar.
  • NI_NAME: (opcional). Nombre de la interfaz de red. Si no se proporciona, se requiere la opción enabled y se asume de forma predeterminada la interfaz de red principal llamada nic0. Si tienes varias interfaces de red, puedes especificar esta marca para cada IP de cada interfaz de red.
  • DELETE_RULE: (opcional). Indica qué debe ocurrir con un recurso Address estático asociado cuando se elimina de forma permanente una instancia de VM. Estas son las opciones disponibles:

    • never: (predeterminado). No elimines nunca la dirección IP estática. En su lugar, desasigna la dirección al eliminar la instancia y mantén la dirección reservada.
    • on-permanent-instance-deletion: elimina la reserva de dirección IP estática cuando se elimina una instancia de forma permanente del grupo de instancias (por ejemplo, cuando eliminas una instancia manualmente o reduces el tamaño del grupo).

    Independientemente del 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 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 ejecute en un MIG con estado llamado example-fs-group a usuarios externos a través de 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 la reparación automática y las actualizaciones de las instancias para que los usuarios externos tengan acceso continuo a los servidores a través de las direcciones IP publicadas. También debe conservar las direcciones IP reservadas para mantener la continuidad en caso de que se elimine un grupo por error.

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

Por lo tanto, el grupo convierte las direcciones IP externas efímeras de la interfaz de red nic0 en direcciones IP estáticas para todas las instancias gestionadas 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 instancias. Las reservas de direcciones IP estáticas asociadas se desasignan y se conservan al eliminar la instancia porque la regla auto-delete no especificada tiene el valor never de forma predeterminada.

Para comprobar que la dirección IP externa con estado se ha configurado en la política con estado, ejecuta el comando gcloud compute instance-groups managed describe example-fs-group.

REST

Para especificar qué direcciones IP deben tener estado o para actualizar la configuración de IP con estado de un MIG, usa el método 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" }
      }
    }
  }
}

Haz los cambios siguientes:

  • PROJECT: el ID del proyecto de la solicitud.
  • REGION: en el caso de los grupos de instancias gestionados regionales, la región en la que se encuentra el grupo. En el caso de los MIGs zonales, sustituye regions/REGION por zones/ZONE y especifica la zona en la que se encuentra el MIG.
  • NAME: el nombre del MIG que se va a 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.
  • DELETE_RULE: (opcional) indica qué debe ocurrir con un recurso de dirección estática asociado cuando se elimina de forma permanente una instancia de VM. Estas son las opciones disponibles:

    • NEVER: (Predeterminado) Nunca se elimina la dirección IP estática. En su lugar, desasigna la dirección al eliminar la instancia y mantén la dirección reservada.
    • ON_PERMANENT_INSTANCE_DELETION: elimina la reserva de dirección IP estática cuando se elimina una instancia de forma permanente del grupo de instancias (por ejemplo, cuando eliminas una instancia manualmente o reduces el tamaño del grupo).

    Independientemente del 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 instancias.

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

Ejemplo

Debes exponer un servidor de archivos que se ejecute en un MIG con estado llamado example-fs-group a usuarios externos a través de 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 la reparación automática y las actualizaciones 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 debe conservar las direcciones IP reservadas para mantener la continuidad en caso de que se elimine un grupo por error.

Aplica un parche al 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" }
      }
    }
  }
}

Por lo tanto, el grupo convierte las direcciones IP externas efímeras de la interfaz de red nic0 en direcciones IP estáticas para todas las instancias gestionadas 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 instancias. Las reservas de direcciones IP estáticas asociadas se desasignarán y se conservarán al eliminar la instancia, ya que la regla autoDelete está definida como NEVER.

Verifica que la dirección IP externa esté configurada en la política con estado. Para ello, consulta el recurso regionInstanceGroupManagers, que devuelve el método regionInstanceGroupManagers.get.

Declarar como sin estado direcciones IP que antes tenían estado

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

  • Reestructuras tu aplicación para que deje de depender de direcciones IP estáticas.
  • Has configurado la IP como con estado por error y quieres deshacerlo.

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

Cuando quitas la configuración de IP con estado de la política con estado, la MIG elimina las direcciones IP de forma automática y asíncrona del estado conservado de todas las instancias del grupo. Esta operación no interrumpe las instancias de VM en ejecución. Las direcciones IP siguen activas en las instancias, pero ya no tienen estado. Cuando recreas o actualizas las instancias, o cuando las instancias se reparan automáticamente, el MIG desasigna las direcciones IP estáticas asociadas y asigna automáticamente direcciones efímeras. Si ya no necesitas mantener las reservas de direcciones IP externas estáticas, puedes liberarlas.

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

Consola

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

    Ir a Grupos de instancias

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

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

  4. Haz clic en Configuración con estado y por instancia para desplegar la sección.

  5. En la sección Configuración de grupo, despliega las opciones IP externa e IP interna que quieras convertir en sin estado.

    1. Cambia la opción Con estado a No.
    2. Haz clic en Listo.
  6. Cuando hayas hecho los cambios, haz clic en Guardar.

gcloud

Para especificar qué direcciones IP de la política con estado de un MIG quieres que sean efímeras, usa la marca --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,...]

Haz los cambios siguientes:

  • INSTANCE_GROUP_NAME: el nombre del MIG que se va a 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 ha expuesto a los usuarios a través de las direcciones IP externas estáticas publicadas de las instancias de VM de un MIG llamado example-group. Has rediseñado tu servicio desplegando un balanceador de carga delante del MIG y enrutando el tráfico a las VMs gestionadas 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 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 elimina las direcciones IP externas estáticas de la interfaz de red nic0 de forma automática y asíncrona del estado conservado de todas las instancias del grupo. Las direcciones IP externas siguen activas en las instancias, pero ya no tienen estado. Cuando vuelvas a crear o actualizar las instancias, o cuando se reparen automáticamente, el MIG desasignará las direcciones IP estáticas asociadas y asignará automáticamente direcciones efímeras. Si ya no necesitas mantener las reservas de direcciones IP externas estáticas, puedes liberarlas.

REST

Para especificar qué direcciones IP de la política con estado de un MIG deben ser efímeras, elimina la configuración de cada IP de la política con estado del MIG mediante el método 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
      }
    }
  }
}

Haz los cambios siguientes:

  • PROJECT: el ID del proyecto de la solicitud.
  • REGION: en el caso de los grupos de instancias gestionados regionales, la región en la que se encuentra el grupo. En el caso de los MIGs zonales, sustituye 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 va a 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.

Ejemplo

Tu aplicación se ha expuesto a los usuarios a través de las direcciones IP externas estáticas publicadas de las instancias de VM de un MIG llamado example-group. Has rediseñado tu servicio desplegando un balanceador de carga delante del MIG y dirigiendo el tráfico a las VMs gestionadas 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 de 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 elimina las direcciones IP externas estáticas de la interfaz de red nic0 de forma automática y asíncrona del estado conservado de todas las instancias del grupo. Las direcciones IP externas siguen activas en las instancias, pero ya no tienen estado. Cuando vuelvas a crear o actualizar las instancias, o cuando se reparen automáticamente, el MIG desasignará las direcciones IP estáticas asociadas y asignará automáticamente direcciones efímeras. Si ya no necesitas mantener las reservas de direcciones IP externas estáticas, puedes liberarlas.

Configurar direcciones IP con estado individualmente para las VMs de un MIG

Configurar direcciones IP con estado individualmente para las VMs de un MIG es útil en los siguientes casos:

  • Migrar cargas de trabajo (con direcciones IP estáticas reservadas) de instancias de VM independientes a MIGs con reconocimiento del estado para aprovechar las ventajas de la reparación automática y las actualizaciones automatizadas.
  • Asignar direcciones IP estáticas reservadas específicas que requiera la arquitectura o la configuración de la carga de trabajo.

Configurar direcciones IP estáticas al crear una VM en un MIG

Puede reservar y asignar direcciones IP estáticas a instancias concretas cuando cree esas instancias individualmente en un MIG. Esto resulta útil para migrar una aplicación con estado de máquinas virtuales independientes a un MIG con estado en situaciones en las que la arquitectura, la configuración o los usuarios dependen de direcciones IP estáticas específicas.

Cuando creas manualmente 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 estática u externa 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 proporcionados.
  3. Crea una configuración por instancia con la configuración con estado proporcionada 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 definir una dirección IP interna estática de una interfaz de red determinada.
  • --stateful-external-ip para definir 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]

Haz los cambios siguientes:

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

    • Dirección 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 se ha reservado, el MIG crea automáticamente 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: (opcional). Indica qué debe ocurrir con un recurso Address estático asociado cuando se elimina de forma permanente una instancia de VM. Estas son las opciones disponibles:

    • never: (predeterminado). No elimines nunca la dirección IP estática. En su lugar, desasigna la dirección al eliminar la instancia y mantén la dirección reservada.
    • on-permanent-instance-deletion: elimina la reserva de dirección IP estática cuando se elimina una instancia de forma permanente del grupo de instancias (por ejemplo, cuando eliminas una instancia manualmente o reduces el tamaño del grupo).

    Independientemente del 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 instancias.

Ejemplo

Debes añadir otra instancia de VM a tu clúster de servidores proxy, que se ejecute en un MIG llamado proxy-cluster. Has creado una reserva de dirección IP interna estática llamada proxy-node-03-ip y necesitas asignarla al nuevo nodo. Quieres conservar la reserva de la dirección IP aunque decidas eliminar 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. Como la marca auto-delete tiene el valor never, la IP sigue reservada si eliminas 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 como con estado una dirección IP interna de una interfaz de red determinada.
  • 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 al crear una VM en un MIG regional. Para obtener más información sobre el recurso utilizado en el ejemplo, consulta google_compute_region_per_instance_configrecurso. En el caso de un MIG zonal, usa el 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 cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

REST

Para crear una o varias instancias en un MIG, definir nombres de instancia personalizados y asignar direcciones IP estáticas predefinidas a estas instancias, usa el método 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"
          },
          ...
        },
        ...
      }
    },
    ...
  ]
}

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto de la solicitud.
  • NAME: el nombre del MIG.
  • REGION: en el caso de los grupos de instancias gestionados regionales, la región en la que se encuentra el grupo. En el caso de los MIGs zonales, sustituye regions/REGION por zones/ZONE y especifica la zona en la que se encuentra el MIG.
  • INSTANCE_NAME: nombre de la instancia que se va a 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: (opcional). Dirección IP estática que se asignará a la instancia, con 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". Solo puedes definir un campo a la vez, ya sea address o literal, al asignar una dirección IP estática.
  • LITERAL: (opcional). Dirección IP estática que se asignará a la instancia en formato literal. Por ejemplo: "130.211.181.55". Solo puedes definir un campo a la vez, ya sea address o literal, al asignar una dirección IP estática.
    • Si la dirección IP literal proporcionada aún no se ha reservado, el MIG crea automáticamente 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: (opcional). Indica qué debe ocurrir con un recurso Address estático asociado cuando se elimina de forma permanente una instancia de VM. Estas son las opciones disponibles:

    • NEVER: (predeterminado). No elimines nunca la dirección IP estática. En su lugar, desasigna la dirección al eliminar la instancia y mantén la dirección reservada.
    • ON_PERMANENT_INSTANCE_DELETION: elimina la reserva de dirección IP estática cuando se elimina una instancia de forma permanente del grupo de instancias (por ejemplo, cuando eliminas una instancia manualmente o reduces el tamaño del grupo).

    Independientemente del 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 instancias.

Ejemplo

Debes añadir otra instancia de VM a tu clúster de servidores proxy, que se ejecute en un MIG llamado proxy-cluster. Has creado una reserva de dirección IP interna estática llamada proxy-node-03-ip y necesitas asignarla al nuevo nodo. Quieres conservar la reserva de la dirección IP aunque decidas eliminar 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 proxy-node-03-ip a la instancia y almacena la configuración con estado de la IP en la configuración por instancia correspondiente. Como el campo autoDelete está definido como NEVER, la IP sigue reservada si eliminas la instancia más adelante.

Configurar direcciones IP estáticas para una VM de un MIG

Puedes definir una dirección IP estática predefinida o actualizar la configuración de IP con estado de una instancia gestionada de forma individual. Por ejemplo:

  • Asigna una dirección IP estática a una instancia de un MIG. En el caso de las IPs externas estáticas, esta operación requiere que se actualice la instancia, mientras que, en el caso de las IPs internas estáticas, requiere que se vuelva a crear la instancia.
  • 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 que ya exista y no tenga una dirección IP externa, pero para la que configures una IP externa con estado, el MIG añade una 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

Para configurar una dirección IP con estado individualmente para una instancia de VM en un MIG, añade 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 definir una dirección IP interna estática de una interfaz de red determinada.
  • --stateful-external-ip para definir 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]

Haz los cambios siguientes:

  • INSTANCE_GROUP_NAME: el nombre del MIG.
  • INSTANCE_NAME: Nombre de la instancia para la que se van a configurar las direcciones IP con estado.
  • NI_NAME: (opcional). Nombre de la interfaz de red. Si no se proporciona, se asume de forma predeterminada la interfaz de red principal llamada nic0. Si tienes varias interfaces de red, puedes especificar esta marca para cada IP de cada interfaz de red.
  • ADDRESS: dirección IP estática que se asignará a la instancia en uno de los siguientes formatos:
    • Dirección 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 se ha reservado, el MIG crea automáticamente una reserva de dirección IP correspondiente.
      • Si la dirección IP proporcionada está reservada, el MIG asigna la reserva a la instancia.
    • Esta submarca es opcional si la dirección ya se ha definido en la configuración por instancia de la instancia. De lo contrario, es obligatorio.
    • Si se omite, la dirección configurada no cambia.
  • DELETE_RULE: (opcional). Indica qué debe ocurrir con un recurso Address estático asociado cuando se elimina de forma permanente una instancia de VM. Estas son las opciones disponibles:

    • never: (predeterminado). No elimines nunca la dirección IP estática. En su lugar, desasigna la dirección al eliminar la instancia y mantén la dirección reservada.
    • on-permanent-instance-deletion: elimina la reserva de dirección IP estática cuando se elimina una instancia de forma permanente del grupo de instancias (por ejemplo, cuando eliminas una instancia manualmente o reduces el tamaño del grupo).
    • Si se omite, se asigna el valor predeterminado a una nueva configuración de IP con estado. El valor no cambia en una configuración ya existente.

    Independientemente del 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 instancias.

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

  • MINIMAL_ACTION: (opcional). Realiza al menos la acción especificada al aplicar la actualización de configuración por instancia a la instancia. Debe usarse junto con la marca --update-instance. El valor debe ser uno de los siguientes:

    • none: no se realiza ninguna acción.
    • refresh: aplica las actualizaciones que se puedan aplicar sin detener la instancia.
    • restart: detén la instancia y, a continuación, vuelve a iniciarla.
    • replace: recrea la instancia.

Si se omite, se usará la acción menos disruptiva que requiera la actualización.

Ejemplo

Tienes una instancia de servidor de archivos llamada file-server, que es una sola instancia de 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 reconocimiento del estado. El servidor de archivos solo ha sido accesible internamente, pero ahora tienes usuarios que necesitan acceder a él externamente a través de una dirección IP estática. Has reservado la dirección IP externa estática creando una 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 de 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 de la instancia file-server:
    1. Añade la configuración de IP externa con estado, que apunta a la reserva de direcciones file-server-ip.
    2. Mantiene sin cambios la configuración del disco de datos con reconocimiento del estado.
  2. Aplica inmediatamente la actualización de la configuración por instancia a la instancia file-server 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

Para configurar IPs con estado individualmente para las instancias de VM de un MIG, añade o actualiza la configuración de IPs con estado en las configuraciones por instancia asociadas.

Si aún no hay configuraciones por instancia para las instancias en cuestión, usa el método instanceGroupManagers.updatePerInstanceConfigs o el método regionInstanceGroupManagers.updatePerInstanceConfigs con una configuración con reconocimiento del 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 existen configuraciones por instancia para las instancias en cuestión, usa el método instanceGroupManagers.patchPerInstanceConfigs o el método regionInstanceGroupManagers.patchPerInstanceConfigs con una configuración con reconocimiento del 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"
    },
    ...
  ]
}

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto de la solicitud.
  • NAME: el nombre del MIG.
  • REGION: en el caso de los grupos de instancias gestionados regionales, la región en la que se encuentra el grupo. En el caso de los MIGs zonales, sustituye regions/REGION por zones/ZONE y especifica la zona en la que se encuentra el MIG.
  • INSTANCE_NAME: (obligatorio) El nombre de la instancia en la que se van a configurar las IPs con reconocimiento del 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: (opcional). Dirección IP estática que se asignará a la instancia, con 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". Solo puedes definir un campo a la vez (ya sea la dirección o el literal) al asignar una dirección IP estática.
  • LITERAL: (opcional). Dirección IP estática que se asignará a la instancia en formato literal. Por ejemplo: "130.211.181.55". Solo puedes definir un campo a la vez (address o literal) al asignar una dirección IP estática.
    • Si la dirección IP literal proporcionada aún no se ha reservado, el MIG crea automáticamente 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: (opcional). Indica qué debe ocurrir con un recurso Address estático asociado cuando se elimina de forma permanente una instancia de VM. Estas son las opciones disponibles:

    • NEVER: (predeterminado). No elimines nunca la dirección IP estática. En su lugar, desasigna la dirección al eliminar la instancia y mantén la dirección reservada.
    • ON_PERMANENT_INSTANCE_DELETION: elimina la reserva de dirección IP estática cuando se elimina una instancia de forma permanente del grupo de instancias (por ejemplo, cuando eliminas una instancia manualmente o reduces el tamaño del grupo).
    • Si se omite, se asigna el valor predeterminado a una nueva configuración de IP con estado. El valor no cambia en una configuración ya existente.

    Independientemente del 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 instancias.

  • FINGERPRINT: (opcional). La huella digital de la configuración dada, si ya existe. Se usa para el bloqueo optimista. La operación falla si la huella digital es diferente de la proporcionada, ya que indica que la configuración por instancia se ha cambiado desde la última lectura. Para ver la huella digital más reciente, consulta el resultado del método listPerInstanceConfigs para un MIG regional u zonal. Si se omite fingerprint, la operación se lleva a cabo sin comparar la huella digital.

Los métodos updatePerInstanceConfigs y patchPerInstanceConfigs actualizan las configuraciones por instancia especificadas, pero no aplican las actualizaciones de configuración a las instancias gestionadas asociadas. Los cambios se aplican a una instancia cuando se le indica al MIG que la recree o la actualice. Puedes aplicar la actualización manualmente para aplicar los cambios a una instancia.

Ejemplo

Tienes una instancia de servidor de archivos llamada file-server, que es una sola instancia de 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 reconocimiento del estado. El servidor de archivos solo ha sido accesible internamente, pero ahora tienes usuarios que necesitan acceder a él externamente a través de una dirección IP estática. Has reservado la dirección IP externa estática creando una reserva de dirección file-server-ip. Ahora debes asignar esta IP a la instancia del servidor de archivos.

Para 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 un parche a la configuración por instancia de file-server instance:

  1. Añade una configuración de IP externa con estado que apunta a la reserva de direcciones file-server-ip.
  2. Mantiene sin cambios la configuración del disco de datos con reconocimiento del estado.

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

Para aplicar la actualización de configuración por instancia a la instancia de VM file-server, llama al método regionInstanceGroupManagers.applyUpdatesToInstances de 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 gestionada. El método actualiza la instancia file-server para asignar una dirección IP externa.

Como autoDelete tiene asignado el valor NEVER en la configuración de IP con estado, la IP seguirá reservada si eliminas la instancia más adelante.

Desasociar direcciones IP estáticas de una VM de un MIG

Es posible que tengas que desasociar una dirección IP estática de una máquina virtual, lo que hará que la interfaz de red de la máquina virtual sea efímera. Esto resulta útil en los siguientes casos:

  • Reestructuras tu aplicación para que deje de depender de direcciones IP estáticas.
  • Has configurado la IP como con estado por error y quieres deshacerlo.

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

  • La dirección IP sigue activa en la instancia, pero ya no tiene estado.
  • Cuando recreas o actualizas la instancia, o cuando la instancia se corrige automáticamente, el MIG desasigna la reserva de dirección IP estática asociada y asigna automáticamente una dirección efímera.
  • Una vez que se ha desasignado, la dirección IP estática sigue reservada.

Si quitas una configuración de IP con estado de una configuración por instancia, no se interrumpirán las instancias de VM en ejecución, a menos que decidas hacerlo explícitamente.

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]

Haz los cambios siguientes:

  • INSTANCE_GROUP_NAME: el nombre del MIG.
  • INSTANCE_NAME: (obligatorio) Nombre de la instancia de la que se va a quitar la configuración de IP con reconocimiento del 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. Default.) Aplica los cambios inmediatamente a la instancia. Si usas la marca --no-update-instance, los cambios no se aplicarán y se aplicarán cuando vuelvas a crear la instancia o apliques la actualización más adelante.
  • MINIMAL_ACTION: (opcional). Realiza al menos la acción especificada al aplicar la actualización de 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: no se realiza ninguna acción.
    • refresh: aplica las actualizaciones que se puedan aplicar sin detener la instancia.
    • restart: detén la instancia y, a continuación, vuelve a iniciarla.
    • replace: recrea la instancia.

    Si se omite, se usará la acción menos disruptiva que requiera la actualización.

Ejemplo

Tu aplicación se ha expuesto a los usuarios a través de direcciones IP externas estáticas publicadas específicas de las instancias de VM de un MIG llamado example-group. Has rediseñado tu servicio desplegando un balanceador de carga delante del MIG y enrutando el tráfico a las VMs gestionadas 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 de 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. Elimina la configuración con estado de la dirección IP externa de la interfaz de red nic0 de la configuración por instancia de node-1.
  2. Aplica la actualización de la configuración por instancia a la instancia de VM node-1 inmediatamente porque se incluye la marca --update-instance. La instancia de VM no se interrumpe y sigue sirviendo desde la misma IP, que ya no tiene estado. El MIG elimina la referencia a la reserva de IP estática de la preservedStateFromConfig de la instancia gestionada y trata la dirección IP externa como efímera. El MIG asignará automáticamente una IP externa en los eventos posteriores de recreación, actualización o reparación automática de la instancia.
  3. Después de desasignarse, la IP estática original sigue reservada. Puedes liberar la IP si ya no la necesitas.

REST

Para quitar una configuración de IP con reconocimiento del 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"
    },
    ...
  ]
}

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto de la solicitud.
  • NAME: el nombre del MIG.
  • REGION: en el caso de los grupos de instancias gestionados regionales, la región en la que se encuentra el grupo. En el caso de los MIGs zonales, sustituye regions/REGION por zones/ZONE y especifica la zona en la que se encuentra el MIG.
  • INSTANCE_NAME: (obligatorio) Nombre de la instancia de la que se va a quitar la configuración de IP con reconocimiento del 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: (opcional). La huella digital de la configuración dada, si ya existe. Se usa para el bloqueo optimista. La operación falla si la huella digital es diferente de la proporcionada, ya que indica que la configuración por instancia se ha cambiado desde la última lectura. Para ver la huella digital más reciente, consulta el resultado del método listPerInstanceConfigs para un MIG regional u zonal. Si se omite fingerprint, la operación se lleva a cabo sin comparar la huella digital.

El método patchPerInstanceConfigs actualiza las configuraciones por instancia especificadas, pero no aplica las actualizaciones de configuración a las instancias gestionadas asociadas. Los cambios se aplican a una instancia cuando se le indica al MIG que la recree o la actualice. Puedes aplicar la actualización manualmente para aplicar los cambios a una instancia.

Ejemplo

Tu aplicación se ha expuesto a los usuarios a través de direcciones IP externas estáticas específicas de las instancias de VM de un MIG llamado example-group. Has rediseñado tu servicio implementando un balanceador de carga delante del MIG y dirigiendo el tráfico a las VMs gestionadas a través de él. Ya no necesitas mantener las direcciones IP externas estáticas y quieres que las direcciones IP externas de las máquinas virtuales sean efímeras.

Para que las direcciones IP externas con estado de las VMs de un MIG sean efímeras, ejecuta el siguiente método en cada instancia (por ejemplo, en 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
        }
      }
    }
  ]
}

Este método elimina la configuración de la dirección IP con estado de la nic0interfaz de red de la configuración por instancia de node-1. La actualización de la configuración aún no se ha aplicado a la instancia de VM node-1. El MIG aplica la actualización de la configuración en la siguiente 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, ejecuta el 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"]
}

La MIG elimina 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á automáticamente una IP externa en los eventos posteriores de recreación, actualización o reparación automática de la instancia.

Después de desasignarse, la IP estática original sigue reservada. Puedes liberar la IP si ya no la necesitas.

Quitar la configuración con reconocimiento del estado

Para quitar la configuración de una política con estado de 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:

Eliminar direcciones IP estáticas sin usar

Cuando configures una dirección IP con reconocimiento del estado para las instancias gestionadas de un grupo, puedes elegir si quieres liberar las reservas de direcciones IP estáticas asociadas de forma manual o automática cuando se elimine de forma permanente una instancia:

  • Para liberar automáticamente las reservas de direcciones IP estáticas al eliminar permanentemente una instancia, asigna el valor ON_PERMANENT_INSTANCE_DELETION al parámetro autoDelete.
  • Para liberar manualmente las reservas de direcciones IP estáticas, define el parámetro autoDelete en NEVER. Para eliminar las reservas de direcciones IP estáticas que no se utilicen, por ejemplo, para evitar cargos innecesarios, consulta los siguientes documentos:

Si has indicado a la MIG que nunca elimine las reservas de IP asociadas, las direcciones IP estáticas seguirán reservadas después de que las instancias correspondientes o la MIG dejen de existir.

Comentarios

Queremos conocer tus casos prácticos, tus retos y tus comentarios sobre los MIGs con estado. Puedes enviar tus comentarios a nuestro equipo a través de la dirección mig-discuss@google.com.

Siguientes pasos