Configurar discos persistentes con reconocimiento del estado en MIGs


Configurar discos persistentes como con reconocimiento del estado te permite beneficiarte de la reparación automática y las actualizaciones automatizadas de las instancias de VM, al tiempo que conservas el estado de los discos.

Puedes configurar cualquier disco definido en la plantilla de instancia para que tenga estado en todas las instancias de un grupo de instancias gestionado (MIG) añadiendo el nombre del dispositivo de ese disco a la política con estado del MIG.

También puedes configurar discos persistentes con reconocimiento del estado individualmente para las instancias de un MIG definiendo configuraciones por instancia. No es necesario definir estos discos en la plantilla de instancia.

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 Google Cloud 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 Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    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.

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

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

      gcloud auth application-default login

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

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

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

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud 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 Google Cloud .

Limitaciones

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.

  • Una MIG regional con estado no coordina automáticamente la conmutación por error entre zonas. Cuando usas un MIG regional, puedes hacer que tu aplicación con estado sea resistente a los fallos zonales desplegando réplicas redundantes en varias zonas y aprovechando la función de replicación de datos de tu aplicación.

Cuándo usar discos persistentes con reconocimiento del estado

Usa discos persistentes con reconocimiento del estado para aprovechar las ventajas de la reparación automática y las actualizaciones automáticas de las VMs, sin dejar de conservar los datos de los discos. Para obtener más información, consulta los casos prácticos de las MIGs con estado.

Cuando configuras discos con reconocimiento del estado, estos discos se conservan al reparar automáticamente, actualizar o volver a crear instancias de VM. Sin embargo, esto también significa que los discos con estado no se pueden volver a crear a partir de la imagen original ni actualizar a una nueva imagen.

Como práctica recomendada, te sugerimos que mantengas tus discos de arranque sin estado.

Mantener el disco de arranque sin reconocimiento del estado tiene las siguientes ventajas:

  • Puedes reparar un disco de arranque que se haya dañado recreándolo a partir de su imagen original. La reparación automática realiza estas reparaciones automáticamente.
  • Puedes actualizar un disco de arranque a la imagen más reciente con nuevas versiones y parches de seguridad.

Para obtener más información, consulta cómo gestionan el estado conservado las funciones de recuperación automática y actualización.

Configurar discos persistentes con reconocimiento del estado para todas las VMs de un MIG

Para configurar como con reconocimiento del estado cualquier disco definido en una plantilla de instancia, añade el nombre del dispositivo de ese disco a la política con reconocimiento del estado del MIG. El MIG trata los discos con ese nombre de dispositivo como con estado para todas las instancias de VM actuales y futuras.

Configurar discos con reconocimiento del estado al crear un MIG

Consola

  1. En la consola, ve a la página Grupos de instancias. Google 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. Si no hay ninguna plantilla disponible, crea una plantilla de instancia.

  7. En el campo Número de instancias, especifica el número de instancias del grupo de instancias.

  8. En la sección Configuración con estado se muestran los discos especificados en la plantilla de instancia. Haz clic en un disco para editar su configuración con estado.

    1. En Con estado, selecciona .
    2. En el menú desplegable Al eliminar la instancia de forma permanente, selecciona la acción que se debe realizar en el disco con reconocimiento del estado cuando se elimine la instancia de VM. Estas son las opciones disponibles:

      • Desvincular disco: (opción predeterminada). No elimines nunca el disco; desvincula el disco cuando se elimine la VM.
      • Eliminar disco: elimina el disco con estado cuando se elimine de forma permanente la VM del grupo de instancias; por ejemplo, cuando se elimine manualmente la instancia gestionada o cuando se reduzca el tamaño del grupo.
    3. Cuando hayas terminado de configurar el estado, haz clic en Hecho.

  9. Haz clic en Crear.

gcloud

Para especificar qué discos de una plantilla de instancia deben tener estado en la creación de un MIG, usa la marca --stateful-disk con el comando gcloud compute instance-groups managed create:

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template INSTANCE_TEMPLATE \
    --size SIZE \
    --stateful-disk device-name=DEVICE_NAME[,auto-delete=DELETE_RULE]

Haz los cambios siguientes:

  • INSTANCE_GROUP_NAME: nombre del grupo de instancias gestionado que se va a crear.
  • INSTANCE_TEMPLATE: nombre de la plantilla de instancia que se usará al crear instancias.
  • SIZE: número inicial de VMs que necesitas en este grupo.
  • DEVICE_NAME: el nombre del dispositivo de un disco especificado en la plantilla de instancia.
  • DELETE_RULE: valor que indica qué debe ocurrir con un disco con estado cuando se elimina una máquina virtual. Las opciones disponibles son las siguientes:

    • never: (predeterminado). No elimines nunca el disco. En su lugar, desvincula el disco cuando se elimine su VM.
    • on-permanent-instance-deletion: Elimina el disco cuando la instancia de VM se elimine de forma permanente del grupo de instancias; por ejemplo, cuando la instancia gestionada se elimine manualmente o cuando se reduzca el tamaño del grupo.

    Independientemente del valor de la regla de eliminación, los discos con reconocimiento del estado siempre se conservan en las operaciones de reparación automática, actualización y recreación de la VM.

Ejemplo

Quieres desplegar una base de datos con 12 particiones, cada una con un disco de arranque sin estado que contenga el sistema operativo y los archivos binarios de la base de datos, y cada una con un disco de datos con estado. Sigue estos pasos:

  1. Crea una plantilla de instancia con un disco de arranque sin reconocimiento del estado basado en la imagen img-example-db-v01, que tiene un SO y una base de datos preinstalados, y con un disco de datos con reconocimiento del estado:

    gcloud compute instance-templates create example-database-template-v01 \
        --image img-example-db-v01 \
        --create-disk device-name=data-disk,mode=rw,image=empty10GBext4
    

    La marca --create-disk indica al MIG que haga lo siguiente:

    1. Crea un disco de 10 GB para cada instancia de VM a partir de una imagen ext4 vacía, preparada previamente.
    2. Vincula el disco a su VM en modo de lectura y escritura mediante el nombre del dispositivo. data-disk
  2. Crea un MIG a partir de la plantilla de instancia y define el disco de datos como con estado:

    gcloud compute instance-groups managed create example-database-group \
      --template example-database-template-v01 \
      --base-instance-name shard \
      --size 12 \
      --stateful-disk device-name=data-disk,auto-delete=on-permanent-instance-deletion
    

    El nombre del dispositivo data-disk se toma de la plantilla de instancia. El disco de datos se configura para que se elimine junto con la instancia de VM cuando esta se elimine de forma permanente (ya sea porque se elimine la instancia manualmente o porque se reduzca manualmente el tamaño del grupo). El disco de datos se conserva durante la reparación automática, las actualizaciones y la recreación de la VM.

  3. Verifica que el disco de datos esté configurado en la política con estado:

    gcloud compute instance-groups managed describe example-database-group
    
    
    baseInstanceName: shard
    ...
    name: example-database-group
    ...
    statefulPolicy:
      preservedState:
        disks:
          data-disk:
            autoDelete: ON_PERMANENT_INSTANCE_DELETION
    ...
    

    Puedes ver que la política con estado declara los discos con el nombre de dispositivo data-disk como con estado, con una regla para eliminar dichos discos cuando se elimine la máquina virtual de forma permanente.

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 quieres que tengan todas las VMs de tu MIG, crea una plantilla de instancia.

En el siguiente ejemplo se crea un MIG zonal con un disco con estado. Para especificar qué disco de la plantilla de instancia debe tener estado en la creación de MIG, incluye el bloque stateful_disk. Para obtener más información sobre el recurso utilizado en el ejemplo, consulta el recurso google_compute_instance_group_manager. Para crear un MIG regional, usa el recurso google_compute_region_instance_group_manager.

resource "google_compute_instance_group_manager" "default" {
  name               = "example-database-group"
  base_instance_name = "shard"
  target_size        = 12
  zone               = "us-central1-f"
  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
  stateful_disk {
    device_name = "data-disk"
    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

Para especificar qué discos de la plantilla de instancia deben tener estado en la creación de la MIG, inclúyelos en el campo statefulPolicy del cuerpo de la solicitud del instanceGroupManagers.insert método:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instanceGroupManagers

{
  "name": "NAME",
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/TEMPLATE"
    }
  ],
  "targetSize": SIZE,
  "statefulPolicy": {
    "preservedState": {
      "disks": {
        "DEVICE_NAME": {"autoDelete": "DELETE_RULE" },
        "DEVICE_NAME": {"autoDelete": "DELETE_RULE" }
      }
    }
  }
}

Haz los cambios siguientes:

  • PROJECT: el ID del proyecto de la solicitud.
  • ZONE: la zona en la que se encuentra el MIG (se aplica a un MIG zonal).
    • En el caso de un MIG regional, sustituye zones/ZONE por regions/REGION y especifica la región del MIG.
  • NAME: el nombre del MIG que se va a crear.
  • TEMPLATE: el 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.
  • DEVICE_NAME: el nombre del dispositivo de un disco especificado en la plantilla de instancia.
  • DELETE_RULE: valor que indica qué debe ocurrir con el disco con estado cuando se elimine la instancia de VM. Estas son las opciones disponibles:

    • never: (predeterminado). No elimines nunca el disco. Desvincula el disco cuando se elimine la VM.
    • on_permanent_instance_deletion: elimina el disco con estado cuando la VM se elimine de forma permanente del grupo de instancias; por ejemplo, cuando la instancia gestionada se elimine manualmente o cuando se reduzca el tamaño del grupo.

Ejemplo

Quieres desplegar una base de datos con 12 particiones, cada una con un disco de arranque sin estado que contenga el sistema operativo y los archivos binarios de la base de datos, y cada una con un disco de datos con estado. Sigue estos pasos.

  1. Crea una plantilla de instancia con un disco de arranque sin estado basado en la imagen img-example-db-v01, con el SO y la base de datos preinstalados, y con un disco de datos con estado, mediante el método instanceTemplates.insert:

    POST https://compute.googleapis.com/compute/v1/projects/example-project/global/instanceTemplates
    
    {
      "name": "example-database-template-v01",
      "properties": {
        "machineType":"e2-standard-2",
        "disks": [
          {
            "boot": true,
            "deviceName": "boot-disk",
            "initializeParams": {
              "sourceImage": "projects/example-project/global/images/mg-example-db-v01"
            }
          },
          {
            "deviceName": "data-disk",
            "mode": "READ_WRITE",
            "initializeParams": {
              "sourceImage": "projects/example-project/global/images/empty10GBext4"
            }
          }
        ],
        "networkInterfaces": [
          {
            "network": "global/networks/default"
          }
        ]
      }
    }
    

    El disco de datos de la plantilla de instancia tiene el nombre de dispositivo data-disk y se ha configurado para que se cree a partir de una imagen ext4 vacía, preparada previamente, y para que se adjunte en modo de lectura/escritura.

  2. Crea un MIG a partir de la plantilla de instancia y define el disco de datos como con estado mediante el método instanceGroupManagers.insert:

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers
    
    {
      "name": "example-database-group",
      "baseInstanceName": "shard",
      "versions": [
        {
          "instanceTemplate": "global/instanceTemplates/example-database-template-v01"
        }
      ],
      "targetSize": 12,
      "statefulPolicy": {
        "preservedState": {
          "disks": {
            "data-disk": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" }
          }
        }
      }
    }
    

    El MIG crea 12 instancias, cada una con un disco con las siguientes propiedades:

    • Un nombre de dispositivo, data-disk, tomado de la plantilla de instancia.
    • Una regla de eliminación para eliminar el disco de datos cuando se elimine la VM (ya sea porque se haya eliminado la instancia manualmente o porque se haya reducido manualmente el tamaño del grupo).
    • Una entrada en el estado conservado de la política (preservedStateFromPolicy) de cada instancia gestionada para que el disco de datos se conserve en la reparación automática, las actualizaciones y la recreación de instancias.
  3. Usa el método instanceGroupManagers.get para verificar que el disco de datos esté configurado en la política con estado del nuevo recurso instanceGroupManagers:

    GET https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-database-group
    
    
    {
      "name": "example-database-group",
      "baseInstanceName": "shard",
      ...
      "statefulPolicy": {
        "preservedState": {
          "disks": {
            "data-disk": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" }
          }
        }
      }
      ...
    }
    

    Puedes ver que la política con estado declara discos con el nombre de dispositivo data-disk como con estado con la regla de eliminar dichos discos al eliminar la instancia de forma permanente.

Definir y actualizar la configuración con reconocimiento del estado de los discos de un MIG

Si ejecutas una aplicación con estado en un MIG sin estado (un MIG sin ninguna configuración con estado), puedes configurar los discos definidos en la plantilla de instancia para que tengan estado en todas las instancias de este MIG. De esta forma, puedes conservar los discos al volver a crear, reparar automáticamente o actualizar instancias, y, opcionalmente, al eliminarlas.

Puedes realizar las siguientes operaciones:

  • Añade a la política con estado de un MIG los discos definidos en la plantilla de instancia para declararlos con estado. De esta forma, los discos con el nombre de dispositivo indicado se marcan como con estado para todas las instancias actuales y futuras del MIG.
  • Actualiza la política con reconocimiento del estado para cambiar la configuración con reconocimiento del estado de los discos.

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 disco de una política con estado no interrumpen las VMs en ejecución. Para obtener más información, consulta cómo aplicar actualizaciones de políticas con estado.

En el caso de un MIG regional, debes inhabilitar la redistribución proactiva de instancias entre zonas antes de poder configurar discos con reconocimiento del estado. Para obtener más información, consulta cómo gestionan los grupos regionales el estado conservado.

Consola

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

    Ir a Grupos de instancias

  2. Haga clic en el nombre del grupo de instancias en el que quiera especificar la configuración con estado del disco.

  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 del grupo, haz clic en el disco que quieras convertir en un disco con estado. En la sección ampliada, haga lo siguiente:

    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 el disco con reconocimiento del estado cuando se elimine la instancia de VM.

      • Desvincular disco: (opción predeterminada). No elimines nunca el disco; desvincula el disco cuando se elimine la VM.
      • Eliminar disco: elimina el disco con estado cuando su VM se elimina de forma permanente del grupo de instancias; por ejemplo, cuando la instancia gestionada se elimina manualmente o cuando se reduce el tamaño del grupo.

    3. Una vez que hayas actualizado la configuración con estado, haz clic en Hecho.

  6. Haz clic en Guardar para completar la actualización.

gcloud

Para especificar qué discos de la plantilla de instancia deben tener reconocimiento del estado o para actualizar la configuración de los discos con reconocimiento del estado de un MIG, usa una o varias marcas --stateful-disk con el comando gcloud compute instance-groups managed update:

gcloud compute instance-groups managed update NAME \
  --stateful-disk device-name=DEVICE_NAME[,auto-delete=DELETE_RULE]

Haz los cambios siguientes:

  • NAME: nombre del grupo de instancias gestionado que se va a actualizar.
  • DEVICE_NAME: nombre del dispositivo de un disco especificado en la plantilla de instancia.
  • DELETE_RULE: valor que indica qué debe ocurrir con el disco con estado cuando se elimina una instancia de VM. Estas son las opciones disponibles:

    • never: (predeterminado). No elimines nunca el disco, desvincula el disco cuando se elimine su instancia.
    • on-permanent-instance-deletion: elimina el disco con estado cuando se elimina de forma permanente la instancia del grupo de instancias. Por ejemplo, cuando se elimina manualmente la instancia gestionada o cuando se reduce el tamaño del grupo.

Si el nombre de dispositivo especificado ya está configurado en la política con estado, el comando actualiza la configuración.

Ejemplo

Tienes una base de datos con varios fragmentos en un MIG llamado example-database- group. Cada VM del MIG almacena un fragmento en un disco adicional con el nombre de dispositivo data-disk, que se define en la plantilla de instancia. El MIG no tiene ninguna configuración con reconocimiento del estado y quieres conservar los discos de datos al volver a crear las instancias, repararlas automáticamente o actualizarlas. También quieres proteger los discos de datos para que no se eliminen cuando se elimine una VM.

  1. Actualiza el MIG para definir el disco de datos como con estado mediante el siguiente comando:

    gcloud compute instance-groups managed update example-database-group \
      --stateful-disk device-name=data-disk,auto-delete=never
    

    Por lo tanto, el MIG aplica las actualizaciones de configuración de la política con reconocimiento del estado de forma automática y asíncrona a los discos de datos de todas las instancias. Los discos de datos ahora se conservan en la reparación automática, las actualizaciones y la recreación de instancias, y se separan al eliminar la instancia porque la regla auto-delete se ha definido como never.

  2. Para comprobar que el disco de datos está configurado en la política con estado, ejecuta el comando gcloud compute instance-groups managed describe example-database-group.

REST

Para especificar qué discos de la plantilla de instancia deben tener reconocimiento del estado o para actualizar la configuración de los discos con reconocimiento del estado de un MIG, configura los discos en la política con reconocimiento del estado del MIG mediante el método instanceGroupManagers.patch:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instanceGroupManagers/NAME

{
  "statefulPolicy": {
    "preservedState": {
      "disks": {
        "DEVICE_NAME": {"autoDelete": "DELETE_RULE" },
        "DEVICE_NAME": {"autoDelete": "DELETE_RULE" }
      }
    }
  }
}

Haz los cambios siguientes:

  • PROJECT: el ID del proyecto de la solicitud.
  • ZONE: la zona en la que se encuentra el MIG (se aplica a un MIG zonal).
    • En el caso de un MIG regional, sustituye zones/ZONE por regions/REGION y especifica la región del MIG.
  • NAME: nombre del MIG que se va a actualizar.
  • DEVICE_NAME: el nombre del dispositivo de un disco, especificado en la plantilla de instancia, para el que quieres actualizar la configuración con estado.
  • DELETE_RULE: valor que indica qué debe ocurrir con el disco con estado cuando se elimina una instancia de VM. Estas son las opciones disponibles:

    • never: (predeterminado). No elimines nunca el disco, desvincula el disco cuando se elimine su instancia.
    • on-permanent-instance-deletion: elimina el disco con estado cuando se elimine de forma permanente la instancia del grupo de instancias; por ejemplo, cuando se elimine la instancia manualmente o cuando se reduzca el tamaño del grupo.

Si el nombre del dispositivo especificado ya está configurado en la política con estado, el método patch actualiza su configuración.

Ejemplo

Tienes una base de datos con varios fragmentos en un MIG llamado example-database- group. Cada VM del MIG almacena un fragmento en un disco adicional con el nombre de dispositivo data-disk, que se define en la plantilla de instancia. El MIG no tiene ninguna configuración con reconocimiento del estado y quieres conservar los discos de datos al volver a crear las instancias, repararlas automáticamente o actualizarlas. También quieres proteger los discos de datos para que no se eliminen cuando se elimine una VM.

  1. Aplica un parche al MIG para definir el disco de datos como con reconocimiento del estado:

    PATCH https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-database-group
    
    {
      "statefulPolicy": {
        "preservedState": {
          "disks": {
            "data-disk": {"autoDelete": "NEVER" }
          }
        }
      }
    }
    

    El MIG aplica esta configuración con estado automáticamente y de forma asíncrona a los discos de datos de todas las instancias. Los discos de datos se conservarán al reparar automáticamente, actualizar o volver a crear instancias. Los discos de datos se desconectarán al eliminar la instancia porque la regla autoDelete está definida como NEVER.

  2. Comprueba que el disco de datos esté configurado en la política con estado. Para ello, consulta el recurso instanceGroupManagers, que devuelve el método instanceGroupManagers.get.

Declarar discos persistentes con estado como sin estado

Es posible que tengas que configurar un disco con reconocimiento del estado para que se trate como un disco sin reconocimiento del estado. Por ejemplo:

  • Si rediseñas tu aplicación para mover el estado fuera del disco.
  • Si has configurado el disco como con estado por error y quieres volver a la configuración anterior.

Para declarar todos los discos con un nombre de dispositivo determinado como sin estado, elimina la configuración del disco de la política con estado.

La MIG aplica el cambio a la política con reconocimiento del estado de forma automática y asíncrona a todas las instancias. Las actualizaciones de la configuración de disco en una política con estado no interrumpen las instancias de VM en ejecución.

Para obtener más información, consulta Aplicar actualizaciones de políticas con estado.

Consola

  1. En la consola, ve a la página Grupos de instancias. Google 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 los discos.

  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 del grupo, haz clic en los discos con estado que quieras convertir en discos sin estado. En la sección ampliada, haga lo siguiente:

    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é discos de la política con estado de un MIG deben ser sin estado, usa la marca --remove-stateful-disks con el comando gcloud compute instance-groups managed update:

gcloud compute instance-groups managed update NAME \
  --remove-stateful-disks DEVICE_NAME[,DEVICE_NAME,...]

Haz los cambios siguientes:

  • NAME: nombre del MIG que se va a actualizar.
  • DEVICE_NAME: nombre del dispositivo de un disco que se va a quitar de la política con estado y que se va a tratar como sin estado. Puedes proporcionar uno o varios nombres de dispositivo en la lista.

Ejemplo

Ejecutas una aplicación antigua con varios nodos en un MIG llamado example-legacy-group. Cada VM del MIG almacena datos de aplicaciones en un disco de arranque con el nombre de dispositivo boot-disk, que has configurado como con reconocimiento del estado en la política con reconocimiento del estado del MIG. Has movido los datos de la aplicación a un disco adicional y ahora quieres que el disco de arranque no tenga reconocimiento del estado para que sea más fácil actualizarlo a imágenes nuevas.

Para quitar la configuración con estado del disco de arranque, actualiza el grupo de instancias gestionado:

gcloud compute instance-groups managed update example-legacy-group \
  --remove-stateful-disks boot-disk

El MIG elimina la configuración con reconocimiento del estado del nombre del dispositivo boot-disk automáticamente y de forma asíncrona para los discos de arranque de todas las instancias del grupo. Los discos de arranque siguen conectados a las instancias, pero ya no tienen estado. Cuando vuelves a crear o actualizas las instancias, o cuando las instancias se reparan automáticamente, el MIG vuelve a crear los discos de arranque a partir de la imagen especificada en la plantilla de instancia.

REST

Para especificar qué discos de la política con estado de un MIG deben ser sin estado, elimina la configuración de cada disco de la política con estado del MIG mediante el método instanceGroupManagers.patch:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instanceGroupManagers/NAME

{
  "statefulPolicy": {
    "preservedState": {
      "disks": {
        "DEVICE_NAME": null,
        ...
      }
    }
  }
}

Haz los cambios siguientes:

  • PROJECT: el ID del proyecto de la solicitud.
  • ZONE: la zona en la que se encuentra el MIG (se aplica a un MIG zonal).
    • En el caso de un MIG regional, sustituye zones/ZONE por regions/REGION y especifica la región del MIG.
  • NAME: nombre del MIG que se va a actualizar.
  • DEVICE_NAME: el nombre del dispositivo de un disco que quieras quitar de la política con estado. Si se proporciona un valor de null, se eliminará la configuración con reconocimiento del estado de ese disco. Puedes proporcionar uno o varios nombres de dispositivos para eliminarlos.

Ejemplo

Ejecutas una aplicación antigua con varios nodos en un MIG llamado example-legacy-group. Cada VM del MIG almacena datos de aplicaciones en un disco de arranque con el nombre de dispositivo boot-disk, que has configurado como con reconocimiento del estado en la política con reconocimiento del estado del MIG. Has movido los datos de la aplicación a un disco adicional y ahora quieres que el disco de arranque no tenga reconocimiento del estado para que sea más fácil actualizarlo a nuevas imágenes.

Para quitar la configuración con estado del disco de arranque, aplica un parche al grupo de instancias gestionado:

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

{
  "statefulPolicy": {
    "preservedState": {
      "disks": {
        "boot-disk": null
      }
    }
  }
}

El MIG elimina la configuración con reconocimiento del estado del nombre del dispositivo boot-disk automáticamente y de forma asíncrona para los discos de arranque de todas las instancias del grupo. Los discos de arranque siguen conectados a las instancias, pero ya no tienen estado. Cuando vuelves a crear o actualizas las instancias, o cuando las instancias se reparan automáticamente, el MIG vuelve a crear los discos de arranque a partir de la imagen especificada en la plantilla de instancia.

Quitar discos persistentes con reconocimiento del estado de un MIG

Puede que tengas que eliminar por completo un disco con estado de las instancias de un MIG, por ejemplo, si has rediseñado tu aplicación y has movido el estado fuera de ese disco.

Los MIGs no permiten eliminar discos con reconocimiento del estado, por lo que debes seguir estos pasos:

  1. Quita la configuración con estado del disco de la política con estado. De esta forma, los discos con el nombre de dispositivo indicado no tienen estado.
  2. Desasocia los discos de las VMs si quieres conservarlos.
  3. Implementa una nueva plantilla de instancia que ya no defina el disco con el nombre de dispositivo indicado.

Configurar discos persistentes con reconocimiento del estado individualmente para una VM de un MIG

Configura discos persistentes con reconocimiento del estado para una VM específica de un MIG añadiendo el nombre del dispositivo del disco a la configuración por instancia de esa VM. Actualiza la VM para aplicar la configuración por instancia y que entre en vigor.

Configurar discos persistentes con reconocimiento del estado individualmente para máquinas virtuales específicas de un MIG es útil si necesitas hacer lo siguiente:

  • Migra cargas de trabajo de VMs independientes a MIGs con estado para aprovechar las ventajas de la reparación automática y las actualizaciones sencillas.
  • Restaurar copias de seguridad de discos, configuradas individualmente para las VMs.
  • Conecta temporalmente discos con estado adicionales a una VM específica para hacer pruebas, depurar o copiar datos.

Añadir discos con estado a máquinas virtuales nuevas de un MIG

Puedes añadir discos con estado a instancias nuevas que crees manualmente en un MIG. Esto resulta útil para migrar una aplicación con reconocimiento del estado de máquinas virtuales independientes a un MIG con reconocimiento del estado. Por ejemplo:

  1. Crea una plantilla de instancia con una configuración común para todas las instancias de VM.
  2. Desconecta los discos de datos de las instancias independientes y elimina estas instancias. También puedes desasociar discos de arranque si contienen un estado que debe conservarse.
  3. Crea un MIG vacío con la plantilla de instancia que has creado antes.
  4. Crea instancias en el MIG con los nombres adecuados y los discos asociados del paso anterior. El MIG responde a tu solicitud con las siguientes acciones:

    1. Crea una VM a partir de la plantilla de instancia con el nombre de instancia proporcionado.
      • Un MIG regional crea la VM en la misma zona en la que se encuentra el disco. Si el disco es regional, el MIG regional crea la VM en cualquiera de las zonas de réplica del disco.
    2. Crea una configuración por instancia con la configuración con reconocimiento del estado proporcionada para los discos.
    3. Acopla los discos a la nueva instancia.

Añade discos con estado al crear manualmente instancias específicas en un MIG mediante la CLI de gcloud o REST. El MIG aplica la configuración inmediatamente al crear la VM.

gcloud

Para crear una VM con un nombre personalizado y adjuntar uno o varios discos con estado a esa VM, usa el comando gcloud compute instance-groups managed create-instance con una o varias marcas --stateful-disk.

gcloud compute instance-groups managed create-instance NAME \
  --instance VM_NAME \
  [--zone ZONE | --region REGION] \
  --stateful-disk device-name=DEVICE_NAME,source=DISK[,mode=MODE][,auto-delete=DELETE_RULE]

Haz los cambios siguientes:

  • NAME: el nombre del MIG en el que debes crear una instancia.
  • VM_NAME: nombre de la nueva instancia que se va a crear.
  • ZONE: la zona en la que se encuentra el MIG (se aplica a los MIGs zonales).
  • REGION: región en la que se encuentra el MIG (se aplica a los MIGs regionales).
  • DEVICE_NAME: nombre del dispositivo que se va a usar al adjuntar el disco.
  • DISK: el URI de un disco persistente que se va a adjuntar en el DEVICE_NAME especificado, con el formato projects/project-id/zones/zone/disks/disk-name para un disco de zona y projects/project-id/regions/region/disks/disk-name para un disco regional.
  • MODE: especifica el modo del disco. Las opciones admitidas son:
    • ro: solo lectura.
    • rw: (predeterminado). Lectura y escritura.
  • DELETE_RULE: valor que indica qué debe ocurrir con un disco con estado cuando se elimina una instancia de VM. Estas son las opciones disponibles:

    • never: (predeterminado). No elimines nunca el disco. En su lugar, desvincula el disco cuando se elimine su instancia.
    • on-permanent-instance-deletion: elimina el disco con estado cuando se elimine de forma permanente la instancia del grupo de instancias; por ejemplo, cuando se elimine la instancia manualmente o cuando se reduzca el tamaño del grupo.

    Independientemente del valor de la regla de eliminación, los discos con reconocimiento del estado siempre se conservan en las operaciones de reparación automática, actualización y recreación de instancias.

Ejemplo

Quieres que se repare automáticamente un servidor de base de datos que se está ejecutando en una VM independiente llamada db-instance y que almacena datos en un disco llamado db-data-disk-1.

Crea un MIG con reconocimiento del estado y reparación automática, crea una VM similar dentro del MIG y vincula el disco de datos db-data-disk-1 a la nueva instancia como disco con reconocimiento del estado:

  1. Detener la VM, db-instance, durante una ventana de mantenimiento.
  2. Crea una plantilla de instancia llamada db-template con la configuración db-instance.
  3. Desasocia db-data-disk-1 de db-instance y elimina db-instance.
  4. Crea un MIG vacío, example-database-mig, a partir de db-template y configura la reparación automática.
  5. Crea una instancia gestionada con el nombre db-instance original y adjunta el disco con estado db-data-disk-1:

    gcloud compute instance-groups managed create-instance example-database-mig \
      --instance db-instance \
      --zone us-east1-c \
      --stateful-disk device-name=data-disk,source=projects/example-project/zones/us-east1-c/disks/db-data-disk-1,auto-delete=never
    

    El comando crea una instancia, db-instance, en el MIG, crea una configuración por instancia correspondiente con el disco con reconocimiento del estado db-data-disk-1 y vincula el disco a la nueva VM, usando data-disk como nombre de dispositivo.

REST

Para crear una o varias instancias en un MIG, definir nombres de VM personalizados y adjuntar uno o varios discos con estado a estas instancias, usa el método instanceGroupManagers.createInstances.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/createInstances

{
  "instances": [
    {
      "name": "VM_NAME",
      "preservedState" : {
        "disks": {
          "DEVICE_NAME" : {
            "source": "DISK",
            "mode": "MODE",
            "autoDelete": "DELETE_RULE"
          },
          ...
        }
      }
    },
    ...
  ]
}

Haz los cambios siguientes:

  • PROJECT_ID: ID del proyecto de la solicitud.
  • ZONE: la zona en la que se encuentra el MIG (se aplica a un MIG zonal).
    • En el caso de un MIG regional, sustituye zones/ZONE por regions/REGION y especifica la región del MIG.
  • NAME: el nombre del MIG en el que se va a crear una instancia.
  • VM_NAME: nombre de la instancia que se va a crear.
  • DEVICE_NAME: El nombre del dispositivo que se va a usar al conectar el disco.
  • DISK: el URI de un disco persistente que ya exista para adjuntarlo en el DEVICE_NAME especificado, con el formato projects/project-id/zones/zone/disks/disk-name para un disco de zona o projects/project-id/regions/region/disks/disk-name para un disco regional.
  • MODE: especifica el modo del disco. Las opciones admitidas son:
    • READ_ONLY: solo lectura.
    • READ_WRITE: (predeterminado). Lectura y escritura.
  • DELETE_RULE: valor que indica qué debe ocurrir con un disco con estado cuando se elimina una máquina virtual. Las opciones disponibles son las siguientes:

    • never: (predeterminado). No elimines nunca el disco. En su lugar, desvincula el disco cuando se elimine su VM.
    • on-permanent-instance-deletion: elimina el disco con estado cuando se elimine de forma permanente la instancia del grupo de instancias; por ejemplo, cuando se elimine la instancia manualmente o cuando se reduzca el tamaño del grupo.

    Independientemente del valor de la regla de eliminación, los discos con reconocimiento del estado siempre se conservan en las operaciones de reparación automática, actualización y recreación de instancias.

Ejemplo

Quieres que se repare automáticamente un servidor de base de datos que se está ejecutando en una VM independiente llamada db-instance y que almacena datos en un disco llamado db-data-disk-1.

Crea un MIG con reconocimiento del estado y reparación automática, crea una instancia similar dentro del MIG y vincula el disco de datos db-data-disk-1 a la nueva VM como disco con reconocimiento del estado:

  1. Detener la VM, db-instance, durante una ventana de mantenimiento.
  2. Crea una plantilla de instancia llamada db-template con la configuración db-instance.
  3. Desvincula db-data-disk-1 de db-instance y elimina db-instance.
  4. Crea un MIG vacío, example-database-mig, a partir de db-template y configura la reparación automática.
  5. Crea una instancia con el nombre db-instance original y adjunta db-data-disk-1 como disco con estado:

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-database-mig/createInstances
    
    {
      "instances": [
        {
          "name": "db-instance",
          "preservedState" : {
            "disks": {
              "data-disk" : {
                "source": "projects/example-project/zones/us-east1-c/disks/db-data-disk-1",
                "mode": "READ_WRITE",
                "autoDelete": "never"
              }
            }
          }
        }
      ]
    }
    

    El método crea una instancia, db-instance, en el MIG, crea una configuración por instancia correspondiente con el disco con estado db-data-disk-1 y adjunta el disco a la nueva instancia, usando data-disk como nombre de dispositivo.

Añadir, declarar y sustituir discos con estado individualmente en máquinas virtuales de un MIG

Configura los discos con reconocimiento del estado de forma individual para una instancia gestionada añadiendo o actualizando una configuración de disco con reconocimiento del estado en la configuración por instancia asociada. A continuación, actualiza la instancia para aplicar la configuración por instancia a la VM.

Configurar discos con reconocimiento del estado de forma individual es útil para las siguientes tareas:

  • Añadir un disco con estado de fuera de un MIG a una VM de ese MIG.
  • Declarar como con reconocimiento del estado un disco que antes no lo tenía en una máquina virtual de un MIG.
  • Sustituir un disco con estado por otro en una máquina virtual de un MIG.

Añadir un disco con estado de fuera de un MIG a una VM de ese MIG. Puedes conectar cualquier disco de fuera de un MIG a una instancia gestionada añadiendo una configuración con estado del disco a la configuración por instancia asociada. Después de aplicar la configuración, el MIG adjunta automáticamente el disco a la instancia y lo trata como un disco con estado.

Declarar como con reconocimiento del estado un disco persistente que antes no lo tenía. Puedes declarar como estatal un disco que no tenía estado y que está conectado a una VM. Para ello, añade la configuración estatal de este disco, incluido su nombre de dispositivo y URI, a la configuración por instancia asociada. Una vez que apliques la configuración, el MIG empezará a conservar el disco como con reconocimiento del estado.

Sustituir un disco con reconocimiento del estado por otro. Sustituir un disco con estado por otro puede ser útil, por ejemplo, si necesitas acceder a una copia de seguridad recuperada. Puedes cambiar un disco con estado por otro actualizando el URI del disco y manteniendo el mismo nombre de dispositivo en la configuración por instancia. Después de aplicar la configuración actualizada por instancia, la MIG separa el disco antiguo y conecta el nuevo con el mismo nombre de dispositivo. Cuando apliques la actualización, elige si quieres mantener la instancia en ejecución, reiniciarla o volver a crearla. Para cambiar un disco de arranque, es necesario reiniciar la VM al menos una vez.

gcloud

Para configurar discos con estado individualmente en una VM de un MIG, añade o actualiza la configuración de los discos con estado en la configuración por instancia asociada. A continuación, actualiza la instancia para aplicar la configuración.

Si no hay ninguna configuración por instancia para la instancia, usa el comando gcloud compute instance-groups managed instance-configs create con una o varias marcas --stateful-disk:

gcloud compute instance-groups managed instance-configs create NAME \
--instance VM_NAME \
--stateful-disk device-name=DEVICE_NAME[,source=DISK][,mode=MODE][,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-disk.

La marca --update-instance (valor predeterminado) aplica los cambios inmediatamente a la instancia. Si usas --no-update-instance, los cambios no se aplican y se aplican la próxima vez que recrees o actualices la instancia.

gcloud compute instance-groups managed instance-configs update NAME \
--instance VM_NAME \
--stateful-disk device-name=DEVICE_NAME[,source=DISK][,mode=MODE][,auto-delete=DELETE_RULE] \
[--no-update-instance | --update-instance] \
[--instance-update-minimal-action MINIMAL_ACTION]

Haz los cambios siguientes:

  • NAME: el nombre del grupo de instancias gestionado.
  • VM_NAME: nombre de la instancia de VM para la que se van a configurar los discos con estado.
  • DEVICE_NAME: nombre del dispositivo usado para adjuntar el disco.
  • DISK: el URI de un disco persistente que ya exista para adjuntarlo en el DEVICE_NAME especificado, con el formato projects/project-id/zones/zone/disks/disk-name para un disco de zona y projects/project-id/regions/region/disks/disk-name para un disco regional.

    La submarca source=DISK es opcional si el dispositivo ya está definido en la configuración por instancia de la instancia. De lo contrario, es obligatorio.

    Si se omite, el URI del disco configurado actualmente no cambia.

  • MODE: especifica el modo del disco. Solo puedes especificar mode si también especificas source. Las opciones admitidas son las siguientes:

    • ro: solo lectura.
    • rw: (predeterminado). Lectura y escritura.

    Si se omite, se asigna el valor predeterminado a una nueva configuración de disco con estado. El valor no cambia en una configuración ya creada.

  • DELETE_RULE: valor que indica qué debe ocurrir con un disco con estado cuando se elimina una máquina virtual. Las opciones disponibles son las siguientes:

    • never: (predeterminado). No elimines nunca el disco. En su lugar, desvincula el disco cuando se elimine su instancia.
    • on-permanent-instance-deletion: elimina el disco con estado cuando se elimine permanentemente su instancia del grupo de instancias; por ejemplo, cuando la instancia se elimine manualmente o cuando se reduzca el tamaño del grupo.

    Si se omite, se asigna el valor predeterminado a una nueva configuración de disco con estado. El valor no cambia en una configuración ya creada.

    Independientemente del valor de la regla de eliminación, los discos con reconocimiento del estado siempre se conservan en las operaciones de reparación automática, actualización y recreación de instancias.

  • MINIMAL_ACTION: 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 VM.
    • restart: detén la VM y, a continuación, vuelve a iniciarla.
    • replace: vuelve a crear la VM.

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

Ejemplo

Los datos del disco con estado data-disk-1, que está conectado, se han dañado y quieres restaurarlos a partir de la copia de seguridad más reciente. Has creado un disco, data-disk-2, a partir de una instantánea para sustituir el disco dañado de la instancia db-instance-1, gestionada por un MIG con estado, example-database-mig. El disco original data-disk-1 se adjunta con el nombre de dispositivo data-disk y una regla de eliminación automática para que nunca se elimine.

Para sustituir data-disk-1 por data-disk-2, ejecuta el siguiente comando:

gcloud compute instance-groups managed instance-configs update example-database-mig \
  --instance db-instance-1 \
  --stateful-disk device-name=data-disk,source=projects/example-project/zones/us-east1-c/disks/data-disk-2 \
  --update-instance \
  --instance-update-minimal-action restart

El comando realiza lo siguiente:

  1. Actualiza la configuración por instancia de db-instance-1:
    1. Actualiza la fuente del disco con el nombre de dispositivo data-disk de data-disk-1 (última configuración) a data-disk-2 (nueva configuración).
    2. Mantiene la regla de eliminación automática para no eliminar nunca el disco porque se omite el parámetro auto-delete en la marca --stateful-disk y, de forma predeterminada, la regla de eliminación es never.
  2. Aplica la actualización de configuración por instancia a la VM db-instance-1 inmediatamente porque se incluye la marca --update-instance. El MIG se separa data-disk-1 y se conecta data-disk-2 con el mismo nombre de dispositivo, data-disk.
  3. Como la acción mínima se ha definido como restart, el MIG reinicia la instancia db-instance-1 para actualizar la VM, lo que ayuda a la aplicación de base de datos a empezar a usar el nuevo disco.

Terraform

Para configurar discos con estado de forma individual para una VM de un MIG, añade la configuración de disco con estado en la configuración por instancia asociada. A continuación, actualiza la instancia para aplicar la configuración.

Para añadir una configuración por instancia a una VM, usa el recurso google_compute_per_instance_config e incluye el bloque preserved_state, como se muestra en el siguiente ejemplo.

resource "google_compute_per_instance_config" "default" {
  instance_group_manager = google_compute_instance_group_manager.default.name
  zone                   = google_compute_instance_group_manager.default.zone
  name                   = "db-instance"
  preserved_state {
    disk {
      device_name = "data-disk"
      source      = google_compute_disk.default.id
      delete_rule = "NEVER"
    }
  }
}

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

REST

Para configurar discos con estado individualmente para las VMs de un MIG, añade o actualiza la configuración de los discos con estado en las configuraciones por instancia asociadas. A continuación, actualiza las instancias para aplicar la configuración.

Si aún no existen configuraciones por instancia para las VMs en cuestión, utiliza el método instanceGroupManagers.updatePerInstanceConfigs o el método regionInstanceGroupManagers.updatePerInstanceConfigs con una configuración con estado para uno o varios discos:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/updatePerInstanceConfigs

{
  "perInstanceConfigs": [
    {
      "name": "VM_NAME",
      "preservedState" : {
        "disks": {
          "DEVICE_NAME" : {
            "source": "DISK",
            "mode": "MODE",
            "autoDelete": "DELETE_RULE"
          },
          ...
        }
      },
      "fingerprint: "FINGERPRINT"
    },
    ...
  ]
}

Si ya existen configuraciones por instancia para las VMs en cuestión, usa el método instanceGroupManagers.patchPerInstanceConfigs o el regionInstanceGroupManagers.patchPerInstanceConfigs con una configuración con estado para uno o varios discos:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/patchPerInstanceConfigs

{
  "perInstanceConfigs": [
    {
      "name": "VM_NAME",
      "preservedState" : {
        "disks": {
          "DEVICE_NAME" : {
            "source": "DISK",
            "mode": "MODE",
            "autoDelete": "DELETE_RULE"
          },
          ...
        }
      },
      "fingerprint: "FINGERPRINT"
    },
    ...
  ]
}

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto de la solicitud.
  • ZONE: la zona en la que se encuentra el MIG (se aplica a un MIG zonal).
    • En el caso de un MIG regional, sustituye zones/ZONE por regions/REGION y especifica la región del MIG.
  • NAME: el nombre del MIG.
  • VM_NAME: nombre de la VM para la que se van a configurar discos con estado.
  • DEVICE_NAME: nombre del dispositivo usado para adjuntar el disco.
  • DISK: el URI de un disco persistente que ya exista para adjuntarlo en el DEVICE_NAME especificado, con el formato projects/project-id/zones/zone/disks/disk-name para un disco de zona y projects/project-id/regions/region/disks/disk-name para un disco regional.

    El campo "source": "DISK" es opcional si el dispositivo ya está definido en la configuración por instancia de la instancia. De lo contrario, es obligatorio.

    Si se omite el campo source, el URI del disco configurado actualmente no cambiará.

  • MODE: (opcional). Especifica el modo del disco. mode solo se puede especificar si se indica source. Las opciones admitidas son las siguientes:

    • READ_ONLY: solo lectura.
    • READ_WRITE: (predeterminado). Lectura y escritura.

    Si se omite, se asigna el valor predeterminado a una nueva configuración de disco con estado. El valor no cambia en una configuración ya creada.

  • DELETE_RULE: (opcional). Valor que indica qué debe ocurrir con un disco con estado cuando se elimina una VM. Las opciones disponibles son las siguientes:

    • Nunca: (opción predeterminada). No elimines nunca el disco. En su lugar, desvincula el disco cuando se elimine su instancia.
    • on-permanent-instance-deletion: Elimina el disco con estado cuando se elimine permanentemente su instancia del grupo de instancias; por ejemplo, cuando se elimine la instancia manualmente o cuando se reduzca el tamaño del grupo.

    Si se omite el campo autoDelete, se asigna el valor predeterminado a una nueva configuración de disco con estado. El valor no cambia en una configuración ya creada.

    Independientemente del valor de la regla de eliminación, los discos con reconocimiento del estado siempre se conservan en las operaciones de reparación automática, actualización y recreación de instancias.

  • FINGERPRINT: opcional. La huella digital de la configuración proporcionada, si ya existe. Se usa para el bloqueo optimista. Para ver la huella digital más reciente, haz una solicitud get() para obtener el recurso.

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

Ejemplo

Los datos del disco con estado data-disk-1, que está conectado, se han dañado y quieres restaurarlos a partir de la copia de seguridad más reciente. Has creado un disco, data-disk-2, a partir de una instantánea para sustituir el disco dañado de la instancia db-instance-1, gestionada por un MIG con estado, example-database-mig. El disco original data-disk-1 se adjunta con el nombre de dispositivo data-disk y una regla de eliminación automática para que nunca se elimine.

Para actualizar la configuración por instancia de db-instance-1 con el nuevo disco, llama al método patchPerInstanceConfigs:

POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-database-mig/patchPerInstanceConfigs

{
  "perInstanceConfigs": [
    {
      "name": "db-instance-1",
      "preservedState" : {
        "disks": {
          "data-disk" : {
            "source": "projects/example-project/zones/us-east1-c/disks/data-disk-2"
          }
        }
      }
    }
  ]
}

El método aplica parches a la configuración por instancia de db-instance-1:

  1. Actualiza el source de un disco con el nombre de dispositivo data-disk de data-disk-1 (última configuración) a data-disk-2 (nueva configuración).
  2. Mantiene los parámetros mode y autoDelete sin cambios porque se omiten en la solicitud.

La actualización de la configuración aún no se ha aplicado a la VM db-instance-1. El MIG aplica la actualización de configuración cuando vuelves a crear o actualizas la instancia.

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

POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-database-mig/applyUpdatesToInstances
{
  "instances": ["/zones/us-east1-c/instances/db-instance-1"],
  "minimalAction": "RESTART"
}

El método actualiza el estado conservado de la instancia gestionada, desvinculando data-disk-1 y vinculando data-disk-2 con el mismo nombre de dispositivo data-disk. Como minimalAction se ha definido como RESTART, el método reinicia la VM db-instance-1, lo que permite que la aplicación de base de datos empiece a usar el nuevo disco.

Desconectar un disco con estado o declararlo sin estado para una máquina virtual concreta

Es posible que tengas que desvincular un disco con estado o configurarlo para que se trate como un disco sin estado en una VM concreta. Por ejemplo:

  • Si rediseñas tu aplicación para mover el estado fuera del disco.
  • Si configuras el disco como con estado por error y quieres volver a la configuración anterior.

Para desvincular un disco con estado o convertirlo en un disco sin estado para una VM concreta, elimina la configuración con estado del disco de la configuración por instancia asociada o elimina toda la configuración por instancia. Cuando apliques el cambio:

  • Si el disco no está definido en la plantilla de la instancia, la MIG lo desconecta.
    • La MIG no elimina el disco cuando eliminas su configuración de la configuración por instancia, independientemente de la regla de eliminación automática de la configuración.
  • Si el disco se define en la plantilla de la instancia, el MIG lo trata como un disco sin reconocimiento del estado, lo que significa que el MIG vuelve a crear el disco a partir de su origen en la plantilla de la instancia en los eventos posteriores de recreación, actualización o reparación automática de la instancia.

Si quitas una configuración de disco de una configuración por instancia, no se reiniciará una instancia de VM en ejecución, a menos que decidas hacerlo explícitamente.

Para obtener más información, consulta Aplicar actualizaciones de configuración por instancia.

gcloud

Para desvincular discos con estado o declararlos sin estado individualmente para una VM de un MIG, quite la configuración del disco con estado de la configuración por instancia asociada o elimine toda la configuración por instancia si no contiene ningún otro estado. Actualiza la instancia para aplicar la configuración.

Para quitar una configuración de disco con estado de la configuración por instancia asociada, usa el comando gcloud compute instance-groups managed instance-configs update con la marca --remove-stateful-disks. La marca --update-instance (valor predeterminado) aplica los cambios inmediatamente a la instancia. Si usas --no-update-instance, los cambios no se aplican y se aplican la próxima vez que recrees o actualices la instancia.

gcloud compute instance-groups managed instance-configs update NAME \
  --instance VM_NAME \
  --remove-stateful-disks DEVICE_NAME[,DEVICE_NAME,...] \
  [--no-update-instance | --update-instance] \
  [--instance-update-minimal-action MINIMAL_ACTION]

Haz los cambios siguientes:

  • NAME: el nombre del MIG.
  • VM_NAME: nombre de la VM de la que se va a quitar la configuración con estado.
  • DEVICE_NAME: nombre del dispositivo usado para adjuntar el disco.
  • MINIMAL_ACTION: realiza al menos la acción especificada al actualizar la VM con su configuración por instancia. Solo se puede usar junto con --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 VM.
    • restart: detén la VM y, a continuación, vuelve a iniciarla.
    • replace: vuelve a crear la VM.

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

Ejemplo

Tienes una aplicación antigua en un MIG llamado example-legacy-group. Cada VM del MIG almacena datos de la aplicación en un disco de arranque con el nombre de dispositivo boot-disk. Con las configuraciones por instancia, has configurado cada disco de arranque para que tenga estado. Ahora has movido los datos de la aplicación a un disco adicional y quieres que el disco de arranque no tenga reconocimiento del estado de cada VM para facilitar la actualización a nuevas imágenes.

Por ejemplo, para cada instancia, como node-1, ejecuta el comando:

gcloud compute instance-groups managed instance-configs update example-legacy-group \
  --instance node-1 \
  --remove-stateful-disks boot-disk \
  --update-instance

El comando realiza lo siguiente:

  1. Elimina la configuración del disco con el nombre de dispositivo boot-disk de la configuración por instancia de node-1.
  2. Aplica la actualización de configuración por instancia a la VM node-1 inmediatamente porque se incluye la marca --update-instance. El MIG elimina el disco de arranque de la instancia gestionada preservedStateFromConfig y lo trata como un disco sin reconocimiento del estado, lo que significa que el MIG vuelve a crear el disco a partir de su imagen de arranque en la plantilla de la instancia en los eventos posteriores de recreación, actualización o reparación automática de la instancia.

REST

Para desvincular discos con estado o declararlos sin estado individualmente para una VM de un MIG, elimina la configuración de disco con estado de la configuración por instancia asociada o elimina toda la configuración por instancia si no contiene ningún otro estado. A continuación, actualiza la instancia para aplicar la configuración.

Para quitar una configuración de disco 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/zones/ZONE/instanceGroupManagers/NAME/patchPerInstanceConfigs

{
  "perInstanceConfigs": [
    {
      "name": "VM_NAME",
      "preservedState" : {
        "disks": {
          "DEVICE_NAME" : null
        },
        ...
      },
      "fingerprint: "FINGERPRINT"
      ...
    }
  ]
}

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto de la solicitud.
  • ZONE: la zona en la que se encuentra el MIG (se aplica a un MIG zonal).
    • En el caso de un MIG regional, sustituye zones/ZONE por regions/REGION y especifica la región del MIG.
  • NAME: el nombre del MIG.
  • VM_NAME: nombre de la VM de la que se va a eliminar la configuración con estado.
  • DEVICE_NAME: nombre del dispositivo usado para adjuntar el disco.
  • FINGERPRINT: la huella digital de la configuración proporcionada, si ya existe. Se usa para el bloqueo optimista. Para ver la huella digital más reciente, haz una solicitud get() para obtener el recurso.

El método patchPerInstanceConfigs aplica parches a las configuraciones por instancia especificadas, pero no aplica los cambios a las VMs asociadas. Los cambios se aplican a una VM cuando se vuelve a crear o se actualiza la instancia. Puedes aplicar los cambios manualmente o usar actualizaciones continuas automatizadas.

Ejemplo

Ejecutas una aplicación antigua en un MIG llamado example-legacy-group. Cada VM del MIG almacena datos de aplicaciones en un disco de arranque con el nombre de dispositivo boot-disk. Has configurado el disco de arranque como con reconocimiento del estado en las configuraciones por instancia del MIG al migrar las VMs independientes al MIG. Has movido los datos de la aplicación a un disco adicional y ahora quieres que el disco de arranque no tenga reconocimiento del estado de cada VM para que sea fácil actualizarlo a imágenes nuevas.

  1. Llama al método patchPerInstanceConfigs de las instancias. Por ejemplo, para node-1 con un valor null para el disco de arranque:

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-legacy-group/patchPerInstanceConfigs
    
    {
      "perInstanceConfigs": [
        {
          "name": "node-1",
          "preservedState" : {
            "disks": {
              "boot-disk" : null
            }
          }
        }
      ]
    }
    

    El método elimina la configuración del disco con el nombre de dispositivo boot- disk 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. La actualización de la configuración se aplicará la próxima vez que se cree o actualice la instancia.

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

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-legacy-group/applyUpdatesToInstances
    {
      "instances": ["/zones/us-east1-c/instances/node-1"]
    }
    

    La MIG elimina el disco de arranque de la preservedStateFromConfig de la instancia node-1 y trata el disco como un disco sin estado. Es decir, el MIG vuelve a crear el disco a partir de su imagen de arranque en la plantilla de instancia en los eventos posteriores de recreación, actualización o reparación automática de la instancia.

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