Configura discos persistentes con estado en MIG


Configurar los discos persistentes para que tengan estado te permite beneficiarte de la reparación automática y las actualizaciones automáticas de una instancia de VM y, a la vez, conservar el estado de los discos.

Puedes configurar cualquier disco definido en la plantilla de instancias para que tenga estado en todas las instancias de un grupo de instancias administrado (MIG) si agregas el nombre de dispositivo del disco a la política con estado del MIG.

También puedes configurar discos persistentes con estado de forma individual para instancias en un MIG si estableces configuraciones por instancia; estos discos no necesitan definirse en la plantilla de instancias.

Antes de comenzar

  • Revisa cuándo usar MIG con estado y cómo funcionan los MIG con estado.
  • Si aún no lo hiciste, configura la autenticación. La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud. Para ejecutar código o muestras 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. Install the Google Cloud CLI, then initialize it by running the following command:

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

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

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

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

        gcloud auth application-default login

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

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

      REST

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

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

        gcloud init

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

Limitaciones

Un MIG con discos con estado tiene las siguientes limitaciones:

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

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

  • Un MIG regional con estado no organiza de forma automática la conmutación por error entre zonas. Cuando usas un MIG regional, puedes hacer que la aplicación con estado sea resistente a las fallas zonales mediante la implementación de réplicas redundantes en varias zonas y el uso de la función de replicación de datos de tu aplicación.

Cuándo usar discos persistentes con estado

Usa discos persistentes con estado para aprovechar la reparación automática de las VM y las actualizaciones automáticas sin perder los datos de los discos. Para obtener más información, consulta los casos de uso de los MIG con estado.

Cuando configuras discos con estado, estos discos se conservan a través de la reparación automática, las actualizaciones y la recreación de la instancia de VM. Pero eso también significa que los discos con estado no se pueden volver a crear a partir de la imagen original ni actualizarse a una imagen nueva.

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

Si mantienes el disco de arranque sin estado, obtendrás los siguientes beneficios:

  • Podrás reparar un disco de arranque dañado, si vuelves a crearlo a partir de su imagen original. La reparación automática realiza estas reparaciones de forma automática.
  • Podrás actualizar un disco de arranque a la imagen más reciente con versiones nuevas y parches de seguridad.

Para obtener más información, consulta cómo la reparación automática y la actualización controlan el estado preservado.

Configura los discos persistentes con estado para todas las VMs en un MIG

Configura cualquier disco definido en una plantilla de instancias para que tenga estado. Para ello, agrega el nombre de dispositivo del disco a la política con estado del MIG. El MIG trata los discos con ese nombre de dispositivo como “con estado” para todas las instancias de VM existentes y futuras.

Configura los discos con estado en la creación de MIG

Console

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

    Ir a Grupos de instancias

  2. Elige el proyecto y haz clic en Continuar.

  3. Haga clic en Crear grupo de instancias.

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

  5. Especifica un Nombre para el grupo de instancias.

  6. Elige una plantilla de instancia. Si no hay plantillas disponibles, crea una plantilla de instancias.

  7. En Cantidad de instancias, especifica la cantidad para el grupo de instancias.

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

    1. En Con estado, elige .
    2. En el menú desplegable Eliminación permanente de instancias, elige la acción que se realizará en el disco con estado cuando se borre la instancia de VM. Las opciones disponibles son las siguientes:

      • Desconectar disco: (predeterminado). Nunca borrar el disco; desconectar el disco cuando se borra la VM.
      • Borrar el disco: Borrar el disco con estado cuando su VM se borra de forma permanente del grupo de instancias, por ejemplo, cuando la instancia administrada se borra de forma manual o cuando se reduce el tamaño del grupo.
    3. Después de terminar la configuración con estado, haz clic en Listo.

  9. Haz clic en Crear.

gcloud

Si deseas especificar qué discos de una plantilla de instancias deben tener estado durante 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]

Reemplaza los siguientes elementos:

  • INSTANCE_GROUP_NAME: El nombre del grupo de instancias administrado que se creará.
  • INSTANCE_TEMPLATE: El nombre de la plantilla de instancias que se usará cuando se creen instancias.
  • SIZE: la cantidad inicial de VM que necesitas en este grupo
  • DEVICE_NAME: el nombre de dispositivo de un disco que se especificó en la plantilla de instancias
  • DELETE_RULE: un valor que indica qué hacer con un disco con estado cuando se borra una VM. Las opciones disponibles son las siguientes:

    • never: Nunca borra el disco, en su lugar, lo separa cuando se borra la VM (predeterminado).
    • on-permanent-instance-deletion: Borra el disco cuando la instancia de VM se borra de forma permanente del grupo de instancias, por ejemplo, cuando la instancia administrada se borra de forma manual o cuando se reduce el tamaño del grupo.

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

Ejemplo

Deseas implementar una base de datos con 12 fragmentos, cada uno con un disco de arranque sin estado que contiene el sistema operativo y los objetos binarios de la base de datos, y cada uno cuenta con un disco de datos con estado. Para ello, sigue estos pasos:

  1. Crea una plantilla de instancias con un disco de arranque sin 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 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 le indica al MIG que realice las siguientes acciones:

    1. Crear un nuevo disco de 10 GB para cada instancia de VM a partir de una imagen ext4 vacía, preparada de antemano.
    2. Conecta el disco a su VM en modo de lectura/escritura con el nombre de dispositivo data-disk.
  2. Crea un MIG a partir de la plantilla de instancias 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 la instancia. El disco de datos se configura para borrarse junto con la instancia de VM cuando la VM se borra de forma permanente (debido a la eliminación manual de la instancia o debido a una disminución manual del tamaño del grupo). El disco de datos se conserva en la reparación automática, las actualizaciones y la recreación de 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 discos con el nombre de dispositivo data-disk como “con estado”, con una regla para borrar esos discos cuando se borra la VM de forma permanente.

Terraform

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

En el siguiente ejemplo, se crea un MIG zonal con un disco con estado. Para especificar qué discos de la plantilla de instancias deben tener estado durante la creación de un MIG, incluye el bloque stateful_disk. Para obtener más información sobre el recurso usado en la muestra, consulta 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"
  }
}

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

REST

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

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

Reemplaza los siguientes elementos:

  • PROJECT: El ID del proyecto para la solicitud.
  • ZONE: La zona en la que se encuentra el MIG (se aplica a un MIG zonal).
    • Para un MIG regional, reemplaza zones/ZONE por regions/REGION y especifica la región del MIG.
  • NAME: El nombre del MIG que se creará.
  • TEMPLATE: El nombre de la plantilla de instancias que se usará cuando se creen instancias.
  • SIZE: la cantidad inicial de instancias que necesitas en este grupo
  • DEVICE_NAME: el nombre de dispositivo de un disco que se especificó en la plantilla de instancias
  • DELETE_RULE: un valor que indica qué hacer con el disco con estado cuando se borra la instancia de VM. Las opciones disponibles son las siguientes:

    • never: Nunca borra el disco, en su lugar, lo separa cuando se borra la VM (predeterminado).
    • on_permanent_instance_deletion: Borra el disco con estado cuando su VM se borra de forma permanente del grupo de instancias, por ejemplo, cuando la instancia administrada se borra de forma manual o cuando se reduce el tamaño del grupo.

Ejemplo

Deseas implementar una base de datos con 12 fragmentos, cada uno con un disco de arranque sin estado que contiene el sistema operativo y los objetos binarios de la base de datos, y cada uno cuenta con un disco de datos con estado. Para ello, sigue estos pasos:

  1. Crea una plantilla de instancias con un disco de arranque sin 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 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 en la plantilla de instancias tiene el nombre de dispositivo data-disk y está configurado para crearse a partir de una imagen ext4 vacía, preparada de antemano, y también para conectarse en modo de lectura/escritura.

  2. Crea un MIG a partir de la plantilla de instancias 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 instancias.
    • Una regla de eliminación para borrar el disco de datos cuando se borre la VM (ya sea debido a la eliminación manual de la instancia o a una disminución manual del tamaño del grupo).
    • Una entrada en el estado conservado de la política (preservedStateFromPolicy) de cada instancia administrada a fin de 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 recurso instanceGroupManagers nuevo:

    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 que los discos con el nombre de dispositivo data-disk como “con estado”, con la regla para borrar esos discos cuando se borra la instancia de forma permanente.

Establece y actualiza la configuración con estado de los discos en un MIG existente

Si ejecutas una aplicación con estado en un MIG sin estado (un MIG sin ninguna configuración con estado), puedes configurar los discos existentes que se definen en la plantilla de instancias para que tengan estado en todas estas instancias del MIG. Esto te permite conservar los discos en las operaciones de recreación, reparación automática y actualización de instancias, y, de forma opcional, en las operaciones de eliminación.

Puedes realizar las siguientes operaciones:

  • Agregar los discos definidos en la plantilla de instancias a la política con estado de un MIG existente para declararlos como con estado. Esto marca los discos con el nombre de dispositivo determinado como con estado para todas las instancias existentes y futuras en el MIG.
  • Actualizar la política con estado para cambiar la configuración con estado de los discos.

El MIG aplica la configuración actualizada en la política con estado de forma automática y asíncrona a todas las instancias. Las actualizaciones de la configuración de los discos en una política con estado no interrumpen las VM en ejecución. Para obtener más información, consulta Aplica actualizaciones de políticas con estado.

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

Console

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

    Ir a Grupos de instancias

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

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

  4. En Configuración con estado, expande el disco que deseas que tenga estado.

    1. En Con estado, elige .
    2. En el menú desplegable Eliminación permanente de instancias, elige la acción que se realizará en el disco con estado cuando se borre la instancia de VM.

      • Desconectar disco: (predeterminado). Nunca borrar el disco; desconectar el disco cuando se borra la VM.
      • Borrar el disco: Borrar el disco con estado cuando su VM se borra de forma permanente del grupo de instancias, por ejemplo, cuando la instancia administrada se borra de forma manual o cuando se reduce el tamaño del grupo.

    3. Después de actualizar la configuración con estado, haz clic en Listo.

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

gcloud

Si deseas especificar qué discos de la plantilla de instancias deben tener estado o actualizar la configuración de discos con estado de un MIG existente, 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]

Reemplaza los siguientes elementos:

  • NAME: el nombre del grupo de instancias administrado que se actualizará
  • DEVICE_NAME: el nombre de dispositivo de un disco que se especifica en la plantilla de instancias
  • DELETE_RULE: el valor que indica qué hacer con el disco con estado cuando se borra una instancia de VM. Las opciones disponibles son las siguientes:

    • never: Nunca borra el disco, en su lugar, lo separa cuando se borra la instancia (predeterminado).
    • on-permanent-instance-deletion: Borra el disco con estado cuando su instancia se borra de forma permanente del grupo de instancias, por ejemplo, cuando la instancia administrada se borra de forma manual o cuando se reduce el tamaño del grupo.

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

Ejemplo

Ejecutas una base de datos con varios fragmentos en un MIG llamado example-database- group. Cada VM en el MIG almacena un fragmento en un disco adicional con el nombre de dispositivo data-disk, que se define mediante la plantilla de instancias. El MIG no tiene una configuración con estado y quieres conservar los discos de datos en la recreación, la reparación automática y las actualizaciones de instancias. También quieres proteger los discos de datos contra la eliminación cuando se borra 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
    

    Como resultado, el MIG aplica las actualizaciones de configuración de políticas con estado de forma automática y asíncrona a los discos de datos para 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 los discos de datos se desconectan cuando se borra la instancia porque la regla auto-delete está configurada en never.

  2. Ejecuta el comando gcloud compute instance-groups managed describe example-database-group para verificar que el disco de datos esté configurado en la política con estado.

REST

Si deseas especificar qué discos de la plantilla de instancias deben tener estado o para actualizar la configuración del disco con estado para un MIG existente, configura los discos en 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": {"autoDelete": "DELETE_RULE" },
        "DEVICE_NAME": {"autoDelete": "DELETE_RULE" }
      }
    }
  }
}

Reemplaza los siguientes elementos:

  • PROJECT: El ID del proyecto para la solicitud.
  • ZONE: La zona en la que se encuentra el MIG (se aplica a un MIG zonal).
    • Para un MIG regional, reemplaza zones/ZONE por regions/REGION y especifica la región del MIG.
  • NAME: el nombre del MIG que se actualizará
  • DEVICE_NAME: El nombre de dispositivo de un disco, especificado en la plantilla de instancias, para el que deseas actualizar la configuración con estado
  • DELETE_RULE: el valor que indica qué hacer con el disco con estado cuando se borra una instancia de VM. Las opciones disponibles son las siguientes:

    • never: Nunca borra el disco, en su lugar, lo separa cuando se borra la instancia (predeterminado).
    • on-permanent-instance-deletion: Borra el disco con estado cuando su instancia se borra de forma permanente del grupo de instancias, por ejemplo, cuando la instancia se borra de forma manual o cuando se reduce 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

Ejecutas una base de datos con varios fragmentos en un MIG llamado example-database- group. Cada VM en el MIG almacena un fragmento en un disco adicional con el nombre de dispositivo data-disk, que se define mediante la plantilla de instancias. El MIG no tiene una configuración con estado y quieres conservar los discos de datos en la recreación, la reparación automática y las actualizaciones de instancias. También quieres proteger los discos de datos contra la eliminación cuando se borra una VM.

  1. Aplica un parche en el MIG para definir el disco de datos como con 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 de forma automática y asíncrona a los discos de datos para todas las instancias. Los discos de datos se conservarán en la reparación automática, las actualizaciones y la recreación de instancias. Los discos de datos se desconectarán cuando se borre la instancia porque la regla autoDelete está configurada en NEVER.

  2. Verifica que el disco de datos esté configurado en la política con estado mediante la visualización del recurso instanceGroupManagers que muestra el método instanceGroupManagers.get.

Declara como sin estado a los discos persistentes que tenían estado

Es posible que debas configurar un disco con estado para que se considere como sin estado. Por ejemplo:

  • Si vuelves a estructurar la aplicación para quitar el estado del disco.
  • Si, por error, configuraste el disco para que tenga estado y deseas revertirlo.

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

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

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

Console

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

    Ir a Grupos de instancias

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

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

  4. En Configuración con estado, expande los discos con estado que deseas que no tengan estado.

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

gcloud

Si deseas especificar qué discos de la política con estado de un MIG quieres que dejen de tener 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,...]

Reemplaza los siguientes elementos:

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

Ejemplo

Ejecutas una aplicación heredada con varios nodos en un MIG llamado example-legacy-group. Cada VM en el MIG almacena los datos de la aplicación en un disco de arranque con nombre de dispositivo boot-disk, que configuraste como con estado en la política con estado del MIG. Moviste los datos de la aplicación a un disco adicional y ahora deseas que el disco de arranque no tenga estado para facilitar la actualización a imágenes nuevas.

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

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

El MIG quita la configuración con estado del nombre de dispositivo boot-disk de forma automática y asíncrona para los discos de arranque de todas las instancias en el grupo. Los discos de arranque permanecen conectados a las instancias, pero ya no tienen estado. Cuando vuelves a crear o actualizas las instancias o cuando las instancias se reparan de manera automática, el MIG recrea los discos de arranque de la imagen que se especifica en la plantilla de instancias.

REST

Si deseas especificar qué discos de la política con estado de un MIG quieres que dejen de tener estado, quita 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,
        ...
      }
    }
  }
}

Reemplaza los siguientes elementos:

  • PROJECT: El ID del proyecto para la solicitud.
  • ZONE: La zona en la que se encuentra el MIG (se aplica a un MIG zonal).
    • Para un MIG regional, reemplaza zones/ZONE por regions/REGION y especifica la región del MIG.
  • NAME: el nombre del MIG que se actualizará
  • DEVICE_NAME: El nombre del dispositivo de un disco que deseas quitar de la política con estado. Si proporcionas un valor null, la configuración con estado para ese disco se quitará. Puedes quitar uno o varios nombres de dispositivos.

Ejemplo

Ejecutas una aplicación heredada con varios nodos en un MIG llamado example-legacy-group. Cada VM en el MIG almacena los datos de la aplicación en un disco de arranque con el nombre de dispositivo boot-disk que configuraste como con estado en la política con estado del MIG. Moviste los datos de la aplicación a un disco adicional y ahora deseas que el disco de arranque no tenga estado para facilitar la actualización a imágenes nuevas.

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

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 quita la configuración con estado del nombre de dispositivo boot-disk de forma automática y asíncrona para los discos de arranque de todas las instancias en el grupo. Los discos de arranque permanecen conectados a las instancias, pero ya no tienen estado. Cuando vuelves a crear o actualizas las instancias o cuando las instancias se reparan de manera automática, el MIG recrea los discos de arranque de la imagen que se especifica en la plantilla de instancias.

Quita los discos persistentes con estado de un MIG

Es posible que debas quitar por completo un disco con estado de las instancias en un MIG, por ejemplo, si volviste a diseñar la aplicación y quitaste el estado de ese disco.

Los MIG no permiten quitar discos con estado, por lo que debes seguir estos pasos:

  1. Quita la configuración con estado del disco de la política con estado. Esto hace que los discos con el nombre de dispositivo determinado no tengan estado.
  2. Desconecta los discos de las VM si quieres conservarlos.
  3. Lanza una nueva plantilla de instancias que ya no defina el disco con el nombre de dispositivo especificado.

Configura los discos persistentes con estado de forma individual para una VM en un MIG

Configura los discos persistentes con estado para una VM específica de un MIG. Para ello, agrega 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 hacerla efectiva.

La configuración de discos persistentes con estado de forma individual para VM específicas es útil si necesitas realizar las siguientes acciones:

  • Migrar las cargas de trabajo existentes (con los discos existentes) de las VM independientes a un MIG con estado para beneficiarte de la reparación automática y las actualizaciones fáciles.
  • Restablecer las copias de seguridad de los discos, configuradas de manera individual para las VM.
  • Adjunta temporalmente discos con estado adicionales a una VM específica para probar, depurar o copiar datos.

Agrega discos con estado existentes a VM nuevas en un MIG

Puedes agregar discos con estado existentes a instancias nuevas que creas de forma manual en un MIG. Esto es útil para migrar una aplicación con estado de las VMs independientes existentes a un MIG con estado, por ejemplo:

  1. Crea una plantilla de instancias con una configuración común para todas las instancias de VM.
  2. Desconecta los discos de datos de las instancias independientes y borra estas instancias. También puedes desconectar los discos de arranque si contienen estados que deben conservarse.
  3. Crea un MIG vacío con la plantilla de instancias que se creó antes.
  4. Crea instancias en el MIG con los nombres y los discos asociados correspondientes del paso anterior. El MIG responde a tu solicitud con las siguientes acciones:

    1. Crea una VM a partir de la plantilla de instancias con el nombre de instancia que se proporciona.
      • 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 estado que se proporciona para los discos.
    3. Conecta los discos a la instancia nueva.

Agrega discos con estado existentes cuando creas instancias específicas de forma manual en un MIG mediante gcloud CLI o REST. El MIG aplica de inmediato la configuración durante la creación de la VM.

gcloud

Para crear una VM con un nombre personalizado y conectar uno o más discos con estado existentes 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]

Reemplaza los siguientes elementos:

  • NAME: el nombre del MIG en el que necesitas crear una instancia
  • VM_NAME: el nombre de la instancia nueva que se creará
  • ZONE: la zona en la que se encuentra el MIG (se aplica a un MIG zonal)
  • REGION: la región en la que se encuentra el MIG (se aplica a un MIG regional)
  • DEVICE_NAME: el nombre de dispositivo que se usará para conectar el disco
  • DISK: el URI de un disco persistente existente que se conecta con el DEVICE_NAME especificado, en el formato projects/project-id/zones/zone/disks/disk-name si el disco es zonal o projects/project-id/regions/region/disks/disk-name si es regional
  • MODE: especifica el modo del disco. Las opciones compatibles son las siguientes:
    • ro: Solo lectura
    • rw: lectura/escritura (predeterminado)
  • DELETE_RULE: un valor que indica qué hacer un disco con estado cuando se borra una instancia de VM. Las opciones disponibles son las siguientes:

    • never: Nunca borra el disco, en su lugar, lo desconecta cuando se borra la instancia (predeterminado).
    • on-permanent-instance-deletion: Borra el disco con estado cuando su instancia se borra de forma permanente del grupo de instancias, por ejemplo, cuando la instancia se borra de forma manual o cuando se reduce el tamaño del grupo.

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

Ejemplo

Deseas tener una reparación automática para un servidor de base de datos que en la actualidad se ejecuta en una VM independiente llamada db-instance y que almacena datos en un disco llamado db-data-disk-1.

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

  1. Detén la VM, db-instance, durante un período de mantenimiento.
  2. Crea una plantilla de instancias llamada db-template con la configuración db-instance.
  3. Desconecta db-data-disk-1 de db-instance y borra 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 administrada con el nombre db-instance original y adjunta el db-data-disk-1 como un disco con estado:

    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 y una configuración correspondiente por instancia con el disco con estado db-data-disk-1 y, luego, conecta el disco a la VM nueva con data-disk como el nombre del dispositivo.

REST

Si deseas crear una o varias instancias en un MIG, establece los nombres de VM personalizados y conecta uno o varios discos con estado a estas instancias mediante 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"
          },
          ...
        }
      }
    },
    ...
  ]
}

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto para la solicitud.
  • ZONE: La zona en la que se encuentra el MIG (se aplica a un MIG zonal).
    • Para un MIG regional, reemplaza zones/ZONE por regions/REGION y especifica la región del MIG.
  • NAME: el nombre del MIG en el que se creará una instancia
  • VM_NAME: el nombre de la instancia que se creará
  • DEVICE_NAME: Es el nombre de dispositivo que se usará para conectar el disco.
  • DISK: Es el URI de un disco persistente existente que se conectará en el DEVICE_NAME especificado en el formato projects/project-id/zones/zone/disks/disk-name si el disco es zonal o projects/project-id/regions/region/disks/disk-name si el disco es regional.
  • MODE: Especifica el modo del disco. Las opciones compatibles son las siguientes:
    • READ_ONLY: Solo lectura
    • READ_WRITE: lectura/escritura (predeterminado)
  • DELETE_RULE: un valor que indica qué hacer con un disco con estado cuando se borra una VM. Las opciones disponibles son las siguientes:

    • never: Nunca borra el disco, en su lugar, lo desconecta cuando se borra la VM (predeterminado).
    • on-permanent-instance-deletion: Borra el disco con estado cuando su instancia se borra de forma permanente del grupo de instancias, por ejemplo, cuando la instancia se borra de forma manual o cuando se reduce el tamaño del grupo.

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

Ejemplo

Deseas tener una reparación automática para un servidor de base de datos que en la actualidad se ejecuta en una VM independiente llamada db-instance y que almacena datos en un disco llamado db-data-disk-1.

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

  1. Detén la VM, db-instance, durante un período de mantenimiento.
  2. Crea una plantilla de instancias llamada db-template con la configuración db-instance.
  3. Desconecta db-data-disk-1 de db-instance y borra 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 un 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 y una configuración por instancia correspondiente con el disco con estado db-data-disk-1 y, luego, conecta el disco a la instancia nueva con data-disk como el nombre del dispositivo.

Agrega, declara y reemplaza discos con estado de forma individual para las VM de un MIG

Si deseas configurar los discos con estado de manera individual para una instancia administrada, agrega o actualiza una configuración de disco con estado en la configuración asociada por instancia. Luego, actualiza la instancia para aplicar la configuración por instancia a la VM.

La configuración individual de discos con estado es útil para las siguientes tareas:

  • Agregar un disco con estado desde fuera de un MIG a una VM de ese MIG
  • Declarar un disco sin estado como con estado para una VM de un MIG
  • Reemplazar un disco con estado por un disco diferente para una VM en un MIG

Agrega un disco con estado desde fuera de un MIG a una VM de ese MIG. Si deseas conectar cualquier disco desde fuera de un MIG a una instancia administrada, agrega una configuración con estado para el disco a la configuración por instancia asociada. Después de aplicar la configuración, el MIG conecta de forma automática el disco a la instancia y lo trata como con estado.

Declara un disco que no tenía estado como con estado. Puedes declarar un disco que no tenía estado, que en la actualidad esté conectado a una VM, como uno con estado si agregas la configuración con estado para este disco, incluido su nombre de dispositivo y el URI, a la configuración por instancia asociada. Después de aplicar la configuración, el MIG comienza a conservar el disco como con estado.

Reemplaza un disco con estado por un disco diferente. Reemplaza 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 si actualizas el URI del disco y mantienes el mismo nombre de dispositivo en la configuración por instancia. Después de aplicar la configuración por instancia actualizada, el MIG desconecta el disco anterior 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. El intercambio de un disco de arranque requiere al menos un reinicio de VM.

gcloud

Si deseas configurar los discos con estado de forma individual para una VM en un MIG, agrega o actualiza la configuración de disco con estado en la configuración asociada por instancia. Luego, actualiza la instancia para aplicar la configuración.

Si una configuración por instancia aún no existe 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 (predeterminada) aplica los cambios a la instancia de inmediato. Si usas --no-update-instance, los cambios permanecerán sin aplicar y se aplicarán la próxima vez que vuelvas a crear o actualizar 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]

Reemplaza lo siguiente:

  • NAME: el nombre del grupo de instancias administrado
  • VM_NAME: el nombre de la instancia de VM en la que se configurarán los discos con estado
  • DEVICE_NAME: Es el nombre de dispositivo que se usó para conectar el disco.
  • DISK: Es el URI de un disco persistente existente que se conectará en el DEVICE_NAME especificado, en el formato projects/project-id/zones/zone/disks/disk-name si el disco es zonal o projects/project-id/regions/region/disks/disk-name si es regional.

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

    Si se omite, el URI del disco configurado en la actualidad no se modifica.

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

    • ro: Solo lectura
    • rw: lectura/escritura (predeterminado)

    Si se omite, se establece el valor predeterminado para una nueva configuración de disco con estado. El valor no se modifica en una configuración existente.

  • DELETE_RULE: Es un valor que indica qué hacer con un disco con estado cuando se borra una VM. Las opciones disponibles son las siguientes:

    • never: Nunca borra el disco; en su lugar, lo desconecta cuando se borra la instancia (opción predeterminada).
    • on-permanent-instance-deletion: Borra el disco con estado cuando su instancia se borra de forma permanente del grupo de instancias, por ejemplo, cuando la instancia se borra de forma manual o cuando se reduce el tamaño del grupo.

    Si se omite, se establece el valor predeterminado para una nueva configuración de disco con estado. El valor no se modifica en una configuración existente.

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

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

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

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

Ejemplo

Los datos de un disco data-disk-1 con estado y conectado están dañados y quieres restaurarlos desde la copia de seguridad más reciente. Creaste un disco, data-disk-2, a partir de una instantánea para reemplazar el disco dañado en la instancia, db-instance-1, administrado por un MIG con estado, example-database-mig. El disco original data-disk-1 se conecta con el nombre del dispositivo data-disk con una regla de eliminación automática para no borrar nunca el disco.

Para reemplazar 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 para 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 (configuración nueva).
    2. Mantiene la regla de eliminación automática para no borrar nunca el disco porque el parámetro auto-delete se omite 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 de inmediato porque se incluye la marca --update-instance. El MIG desconecta data-disk-1 y adjunta data-disk-2 con el mismo nombre de dispositivo, data-disk.
  3. Debido a que la acción mínima se establece en 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 comenzar a usar el disco nuevo.

Terraform

Si deseas configurar los discos con estado de forma individual para una VM en un MIG, agrega la configuración de disco con estado en la configuración por instancia asociada. Luego, actualiza la instancia para aplicar la configuración.

Para agregar una configuración por instancia para una VM, usa el recurso google_compute_per_instance_config y, luego, 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"
    }
  }
}

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

REST

Si deseas configurar los discos con estado de forma individual para las VMs de un MIG, agrega o actualiza la configuración de disco con estado en la configuración por instancia asociada. Luego, actualiza las instancias para aplicar la configuración.

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

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto para la solicitud.
  • ZONE: La zona en la que se encuentra el MIG (se aplica a un MIG zonal).
    • Para un MIG regional, reemplaza zones/ZONE por regions/REGION y especifica la región del MIG.
  • NAME: el nombre del MIG
  • VM_NAME: el nombre de la VM en la que se configuran los discos con estado
  • DEVICE_NAME: Es el nombre de dispositivo que se usó para conectar el disco.
  • DISK: Es el URI de un disco persistente existente que se conectará en el DEVICE_NAME especificado, en el formato projects/project-id/zones/zone/disks/disk-name si el disco es zonal o projects/project-id/regions/region/disks/disk-name si es regional.

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

    Si se omite el campo source, el URI del disco configurado en la actualidad no se modifica.

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

    • READ_ONLY: Solo lectura
    • READ_WRITE: lectura/escritura (predeterminado)

    Si se omite, se establece el valor predeterminado para una nueva configuración de disco con estado. El valor no se modifica en una configuración existente.

  • DELETE_RULE: Un valor que prescribe lo que debe suceder con un disco con estado cuando se borra una VM (opcional). Las opciones disponibles son las siguientes:

    • nunca: Nunca borra el disco; en su lugar, lo desconecta cuando se borra la instancia (opción predeterminada).
    • on-permanent-instance-deletion: Borra el disco con estado cuando su instancia se borra de forma permanente del grupo de instancias, por ejemplo, cuando la instancia se borra de forma manual o cuando se reduce el tamaño del grupo.

    Si se omite el campo autoDelete, se establece el valor predeterminado para una nueva configuración de disco con estado. El valor no se modifica en una configuración existente.

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

  • FINGERPRINT: La huella digital de la configuración determinada si ya existe (opcional). Se usa para el bloqueo optimista. Si deseas ver la última huella digital, realiza una solicitud get() a fin de recuperar el recurso.

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

Ejemplo

Los datos de un disco data-disk-1 con estado y conectado están dañados y quieres restaurarlos desde la copia de seguridad más reciente. Creaste un disco, data-disk-2, a partir de una instantánea para reemplazar el disco dañado en la instancia, db-instance-1, administrado por un MIG con estado, example-database-mig. El disco original data-disk-1 se conecta con el nombre del dispositivo data-disk con una regla de eliminación automática para no borrar nunca el disco.

Si deseas actualizar la configuración por instancia de db-instance-1 con el disco nuevo, 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 la source del disco con el nombre de dispositivo data-disk de data-disk-1 (última configuración) a data-disk-2 (configuración nueva).
  2. Mantiene los parámetros mode y autoDelete sin cambios porque los parámetros se omiten en la solicitud.

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

Si deseas 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 administrada, desconecta data-disk-1 y se conecta data-disk-2 bajo el mismo nombre de dispositivo data-disk. Debido a que minimalAction está configurado como RESTART, el método reinicia la VM db-instance-1, lo que permite que la aplicación de base de datos comience a usar el disco nuevo.

Desconecta un disco con estado o decláralo sin estado para una VM individual

Es posible que debas desconectar o configurar un disco con estado para que se lo considere como sin estado en una VM individual. Por ejemplo:

  • Si vuelves a estructurar la aplicación para quitar el estado del disco.
  • Si, por error, configuraste el disco para que tenga estado y deseas revertirlo

Si deseas desconectar un disco con estado o hacer que no tenga estado para una VM individual, quita la configuración con estado del disco de la configuración por instancia asociada o borra toda la configuración por instancia. Cuando apliques el cambio, ocurrirá lo siguiente:

  • Si el disco no está definido en la plantilla de instancias, el MIG lo desconecta.
    • El MIG no borra el disco cuando borras su configuración de la configuración por instancia, sin importar la regla de eliminación automática en la configuración.
  • Si el disco está definido por la plantilla de instancias, el MIG trata al disco como sin estado, lo que significa que el MIG vuelve a crear el disco desde su fuente en la plantilla de instancias en eventos posteriores de recreación, actualización o reparación automática de instancias.

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

Para obtener más información, consulta Aplica actualizaciones de configuraciones por instancia.

gcloud

Para desconectar discos con estado o declararlos sin estado de forma individual para una VM en un MIG, quita la configuración del disco con estado de la configuración por instancia asociada o borra 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 (predeterminada) aplica los cambios a la instancia de inmediato. Si usas --no-update-instance, los cambios permanecerán sin aplicar y se aplicarán la próxima vez que vuelvas a crear o actualizar 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]

Reemplaza lo siguiente:

  • NAME: el nombre del MIG
  • VM_NAME: el nombre de la VM a la que se le quitará la configuración con estado
  • DEVICE_NAME: el nombre de dispositivo que se usó para conectar el disco
  • MINIMAL_ACTION: realiza al menos la acción que se especifica cuando actualices 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: Ninguna acción
    • refresh: Aplicar actualizaciones que no requieren que se detenga la VM
    • restart: Detener la VM y volver a iniciarla
    • replace: Volver a crear la VM

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

Ejemplo

Ejecutas una aplicación heredada en un MIG llamado example-legacy-group. Cada VM en el MIG almacena los datos de la aplicación en un disco de arranque con el nombre del dispositivo boot-disk. Mediante la configuración por instancia, configuraste cada disco de arranque para que tenga estado. Ahora moviste los datos de la aplicación a un disco adicional y quieres que el disco de arranque no tenga estado para cada VM a fin de facilitar la actualización a imágenes nuevas.

Para cada instancia, por ejemplo, node-1, ejecuta el siguiente 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. Quita la configuración del disco con el nombre de dispositivo boot-disk de la configuración por instancia para node-1.
  2. Aplica la actualización de configuración por instancia a la VM node-1 de inmediato porque se incluye la marca --update-instance. El MIG quita el disco de arranque de preservedStateFromConfig de la instancia administrada y trata el disco de arranque como sin estado, lo que significa que el MIG vuelve a crear el disco desde la imagen de arranque en la plantilla de instancia en eventos posteriores de recreación, actualización o reparación automática de instancias.

REST

Para desconectar discos con estado o declararlos sin estado de forma individual para una VM en un MIG, quita la configuración del disco con estado de la configuración por instancia asociada o borra toda la configuración por instancia si no contiene ningún otro estado. Luego, actualiza la instancia para aplicar la configuración.

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

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto para la solicitud.
  • ZONE: La zona en la que se encuentra el MIG (se aplica a un MIG zonal).
    • Para un MIG regional, reemplaza zones/ZONE por regions/REGION y especifica la región del MIG.
  • NAME: el nombre del MIG
  • VM_NAME: el nombre de la VM a la que se le quitará la configuración con estado
  • DEVICE_NAME: el nombre de dispositivo que se usó para conectar el disco
  • FINGERPRINT: la huella digital de la configuración determinada, si ya existe. Se usa para el bloqueo optimista. Si deseas ver la última huella digital, realiza una solicitud get() a fin de recuperar el recurso.

El método patchPerInstanceConfigs aplica parches a la configuración por instancia especificada, pero no aplica los cambios a las VM asociadas. Los cambios se aplican a una VM cuando actualizas o vuelves a crear la instancia. Puedes aplicar los cambios de forma manual o usar actualizaciones progresivas automáticas.

Ejemplo

Ejecutas una aplicación heredada en un MIG llamado example-legacy-group. Cada VM en el MIG almacena los datos de la aplicación en un disco de arranque con el nombre del dispositivo boot-disk. Configuraste el disco de arranque como con estado en la configuración por instancia del MIG cuando migraste las VMs independientes al MIG. Moviste los datos de la aplicación a un disco adicional y ahora deseas que el disco de arranque no tenga estado en cada VM para facilitar la actualización a imágenes nuevas.

  1. Llama al método patchPerInstanceConfigs para las instancias, por ejemplo, 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 quita la configuración del disco con el nombre de dispositivo boot- disk de la configuración por instancia para node-1. La actualización de la configuración aún no se aplicó a la instancia de VM node-1. La actualización de la configuración se aplicará en la próxima recreación o actualización de la instancia.

  2. Para aplicar la actualización de la configuración por instancia a la instancia de VM node-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-legacy-group/applyUpdatesToInstances
    {
      "instances": ["/zones/us-east1-c/instances/node-1"]
    }
    

    El MIG quita el disco de arranque de preservedStateFromConfig para la instancia node-1 y trata el disco como sin estado. Es decir, el MIG vuelve a crear el disco desde su imagen de arranque en la plantilla de instancias en eventos posteriores de recreación, actualización o reparación automática de instancias.

Comentarios

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

¿Qué sigue?