Crear y aplicar políticas de colocación dispersa a máquinas virtuales


En este documento se describe cómo mejorar la fiabilidad de las instancias de máquina virtual (VM) creando y aplicándoles políticas de colocación dispersa. Para obtener más información sobre las políticas de emplazamiento, incluidas sus restricciones y precios, consulta el resumen de las políticas de emplazamiento.

Una política de asignación distribuida especifica que tus VMs deben distribuirse en diferentes dominios de disponibilidad. Esta distribución ayuda a mitigar las interrupciones específicas de una ubicación, como los errores de hardware, y es útil cuando se ejecutan cargas de trabajo distribuidas y replicadas a gran escala, como el sistema de archivos distribuidos de Hadoop (HDFS), Cassandra o Kafka.

Antes de empezar

  • 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:

    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.

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

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

Roles obligatorios

Para obtener los permisos que necesitas para crear y aplicar una política de colocación dispersa a las VMs, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de instancias de Compute (v. 1) (roles/compute.instanceAdmin.v1) en tu proyecto. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para crear y aplicar una política de emplazamiento de difusión a las VMs. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

Permisos obligatorios

Para crear y aplicar una política de emplazamiento disperso a las VMs, se necesitan los siguientes permisos:

  • Para crear políticas de emplazamiento, sigue estos pasos: compute.resourcePolicies.create en el proyecto
  • Para aplicar una política de colocación a las VMs ya creadas, sigue estos pasos: compute.instances.addResourcePolicies en el proyecto
  • Para crear VMs, sigue estos pasos:
    • compute.instances.create en el proyecto
    • Para usar una imagen personalizada para crear la VM, haz clic en compute.images.useReadOnly en la imagen.
    • Para usar una captura para crear la VM, compute.snapshots.useReadOnly en la captura
    • Para usar una plantilla de instancia para crear la VM, haz clic en compute.instanceTemplates.useReadOnly en la plantilla de instancia.
    • Para asignar una red antigua a la VM, haz lo siguiente: compute.networks.use en el proyecto
    • Para especificar una dirección IP estática para la máquina virtual, compute.addresses.use en el proyecto
    • Para asignar una dirección IP externa a la VM cuando se usa una red antigua, haz lo siguiente: compute.networks.useExternalIp en el proyecto
    • Para especificar una subred para la VM, compute.subnetworks.use en el proyecto o en la subred elegida.
    • Para asignar una dirección IP externa a la VM cuando se usa una red de VPC, compute.subnetworks.useExternalIp en el proyecto o en la subred elegida.
    • Para definir los metadatos de la instancia de VM de la VM: compute.instances.setMetadata en el proyecto,
    • Para definir etiquetas en la máquina virtual, compute.instances.setTags en la máquina virtual
    • Para definir etiquetas de la VM, compute.instances.setLabels en la VM
    • Para definir una cuenta de servicio que use la VM, haz lo siguiente en la VM: compute.instances.setServiceAccount
    • Para crear un disco para la VM compute.disks.create del proyecto, sigue estos pasos:
    • Para adjuntar un disco en modo de solo lectura o de lectura y escritura, haz lo siguiente: compute.disks.use en el disco
    • Para adjuntar un disco en modo de solo lectura, compute.disks.useReadOnly en el disco.
  • Para crear una plantilla de instancia, sigue estos pasos: compute.instanceTemplates.create en el proyecto
  • Para crear un grupo de instancias gestionado (MIG), sigue estos pasos: compute.instanceGroupManagers.create en el proyecto

También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.

Crear una política de posición distribuida

A menos que quieras probar la aplicación de la política de colocación dispersa en tus VMs, Google Cloud recomienda crear políticas de colocación dispersa con dos o más dominios de disponibilidad. De esta forma, se reduce el riesgo de que todas las máquinas virtuales se vean afectadas por un único error de hardware. Para obtener más información, consulta el artículo Acerca de las políticas de colocación de spreads.

Para crear una política de colocación dispersa, selecciona una de las siguientes opciones:

gcloud

Para crear una política de emplazamiento de difusión, usa el comando gcloud compute resource-policies create group-placement con la marca --availability-domain-count.

gcloud compute resource-policies create group-placement POLICY_NAME \
    --availability-domain-count=DOMAIN_COUNT \
    --region=REGION

Haz los cambios siguientes:

  • POLICY_NAME: el nombre de la política de posición distribuida.

  • DOMAIN_COUNT: número de dominios de disponibilidad distintos en los que colocar tus máquinas virtuales. El valor debe estar comprendido entre 1 y 8.

  • REGION: la región en la que se va a crear la política de emplazamiento.

REST

Para crear una política de colocación de anuncios de expansión, haz una solicitud POST al método resourcePolicies.insert. En el cuerpo de la solicitud, incluye el campo availabilityDomainCount.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies

{
  "name": "POLICY_NAME",
  "groupPlacementPolicy": {
    "availabilityDomainCount": DOMAIN_COUNT
  }
}

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto en el que se va a crear la política de emplazamiento.

  • REGION: la región en la que se va a crear la política de emplazamiento.

  • POLICY_NAME: el nombre de la política de posición distribuida.

  • DOMAIN_COUNT: número de dominios de disponibilidad distintos en los que colocar tus máquinas virtuales. El valor debe estar comprendido entre 1 y 8.

Aplicar una política de colocación distribuida

Puedes aplicar una política de colocación dispersa a una VM o a un MIG que ya tengas, o bien al crear VMs, plantillas de instancias o MIGs.

Para aplicar una política de colocación dispersa a un recurso de Compute Engine, selecciona uno de los siguientes métodos:

Después de aplicar una política de colocación dispersa a una máquina virtual, puedes verificar el dominio de disponibilidad en el que se encuentra la máquina virtual consultando los detalles de la máquina virtual y comprobando el valor del campo availabilityDomain.

Aplicar la política a una máquina virtual ya creada

Antes de aplicar una política de colocación dispersa a una VM, ten en cuenta lo siguiente:

  • Si tu política de colocación de réplicas especifica varios dominios de disponibilidad, puedes aplicar la política a una VM sin detenerla. Sin embargo, es posible que la VM deba trasladarse a otro dominio de disponibilidad. Durante este proceso, Compute Engine detiene o migra en tiempo real la VM en función de su política de mantenimiento del host.

  • La VM y la política de colocación dispersa deben estar en la misma región. Por ejemplo, si la política de colocación se encuentra en la región us-central1, la VM debe estar en una zona de us-central1. Si necesitas migrar una VM a otra región, consulta Mover una VM entre zonas o regiones.

Si quieres especificar el dominio de disponibilidad en el que quieres colocar tu VM, aplica la política de asignación a la VM actualizando sus propiedades. Cuando actualices las propiedades de la VM, asegúrate de incluir los campos resourcePolicies y scheduling.availabilityDomain.

Para aplicar una política de asignación de dispersión a una VM, selecciona una de las siguientes opciones:

gcloud

Para aplicar una política de colocación dispersa a una VM que ya tengas, usa el comando gcloud compute instances add-resource-policies.

gcloud compute instances add-resource-policies VM_NAME \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

Haz los cambios siguientes:

  • VM_NAME: nombre de una VM.

  • POLICY_NAME: el nombre de una política de emplazamiento de expansión.

  • ZONE: la zona en la que se encuentra la VM.

REST

Para aplicar una política de colocación dispersa a una VM, haz una solicitud POST al método instances.addResourcePolicies.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/addResourcePolicies

{
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ]
}

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto en el que se encuentran la política de colocación dispersa y la máquina virtual.

  • ZONE: la zona en la que se encuentra la VM.

  • VM_NAME: nombre de una VM.

  • REGION: la región en la que se encuentra la política de posición distribuida.

  • POLICY_NAME: el nombre de una política de emplazamiento de expansión.

Aplicar la política al crear una VM

Solo puedes crear una VM que especifique una política de colocación dispersa en la misma región que la política de colocación.

Para crear una VM que especifique una política de colocación dispersa, selecciona una de las siguientes opciones:

gcloud

Para crear una VM que especifique una política de colocación dispersa, usa el comando gcloud compute instances create con la marca --resource-policies.

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

Haz los cambios siguientes:

  • VM_NAME: nombre de la VM que se va a crear.

  • MACHINE_TYPE: el tipo de máquina de la VM.

  • POLICY_NAME: el nombre de una política de emplazamiento de expansión.

  • ZONE: la zona en la que se creará la VM.

Opcionalmente, para especificar el dominio de disponibilidad en el que se va a crear la VM, incluye la marca --availability-domain.

gcloud compute instances create VM_NAME \
    --availability-domain=DOMAIN_NUMBER \
    --machine-type=MACHINE_TYPE \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

Sustituye DOMAIN_NUMBER por el número del dominio de disponibilidad en el que quieras colocar la VM. El valor debe estar comprendido entre 1 y el número de dominios especificados en la política de colocación de la dispersión. Para verificar el número de dominios de una política de colocación de anuncios, consulte los detalles de la política de colocación.

REST

Para crear una VM que especifique una política de colocación dispersa, haz una solicitud POST al método instances.insert. En el cuerpo de la solicitud, incluye el campo resourcePolicies.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      }
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ]
}

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto en el que se encuentra la política de emplazamiento de la hoja de cálculo.

  • ZONE: la zona en la que se creará la VM y en la que se encuentra el tipo de máquina. Solo puedes especificar una zona dentro de la región de la política de emplazamiento de la cobertura.

  • VM_NAME: nombre de la VM que se va a crear.

  • MACHINE_TYPE: el tipo de máquina de la VM.

  • IMAGE_PROJECT: el proyecto de imagen que contiene la imagen (por ejemplo, debian-cloud). Para obtener más información sobre los proyectos de imágenes admitidos, consulta Imágenes públicas.

  • IMAGE: especifica una de las siguientes opciones:

    • Una versión específica de la imagen del SO, por ejemplo, debian-12-bookworm-v20240617.

    • Una familia de imágenes, que debe tener el formato family/IMAGE_FAMILY. Especifica la imagen del SO más reciente que no está obsoleta. Por ejemplo, si especificas family/debian-12, se usará la versión más reciente de la familia de imágenes de Debian 12. Para obtener más información sobre cómo usar familias de imágenes, consulte las prácticas recomendadas para familias de imágenes.

  • REGION: la región en la que se encuentra la política de posición distribuida.

  • POLICY_NAME: el nombre de una política de emplazamiento de expansión.

Opcionalmente, para especificar el dominio de disponibilidad en el que se va a crear la VM, incluye el campo availabilityDomain en el cuerpo de la solicitud.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      }
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ],
  "scheduling": {
    "availabilityDomain": DOMAIN_NUMBER
  }
}

Sustituye DOMAIN_NUMBER por el número del dominio de disponibilidad en el que quieras colocar la VM. El valor debe estar comprendido entre 1 y el número de dominios especificados en la política de colocación de la dispersión. Para verificar el número de dominios de una política de colocación de anuncios, consulte los detalles de la política de colocación.

Para obtener más información sobre las opciones de configuración para crear una VM, consulta Crear y poner en marcha una instancia de VM.

Aplicar la política al crear VMs en bloque

Antes de crear VMs en bloque que especifiquen una política de colocación dispersa, asegúrate de lo siguiente:

  • Solo puedes crear VMs en bloque que especifiquen una política de colocación dispersa en la misma región que la política de colocación.

  • Cuando creas máquinas virtuales en bloque con una política de colocación dispersa, puedes especificar de forma opcional el dominio de disponibilidad en el que quieres crear las máquinas virtuales. No crees todas tus VMs en un solo dominio. De lo contrario, no mitigará el riesgo de que un error de hardware afecte a todas sus máquinas virtuales.

Para crear VMs en bloque que especifiquen una política de colocación dispersa, selecciona una de las siguientes opciones:

gcloud

Para crear VMs en bloque que especifiquen una política de colocación dispersa, usa el comando gcloud compute instances bulk create con la marca --resource-policies.

Por ejemplo, para crear VMs en bloque en una sola zona y especificar un patrón de nombre para las VMs, ejecuta el siguiente comando:

gcloud compute instances bulk create \
    --count=COUNT \
    --machine-type=MACHINE_TYPE \
    --name-pattern=NAME_PATTERN \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

Haz los cambios siguientes:

  • COUNT: número de VMs que se van a crear.

  • MACHINE_TYPE: el tipo de máquina de las VMs.

  • NAME_PATTERN: el patrón de nombre de las VMs. Para sustituir una secuencia de números en un nombre de VM, usa una secuencia de caracteres de almohadilla (#). Por ejemplo, si se usa vm-# como patrón de nombre, se generarán VMs con nombres que empiecen por vm-1, vm-2 y así sucesivamente hasta el número de VMs especificado por COUNT.

  • POLICY_NAME: el nombre de una política de emplazamiento de expansión.

  • ZONE: la zona en la que se crearán las VMs en bloque.

Si quieres especificar el dominio de disponibilidad en el que se crearán las máquinas virtuales en bloque, incluye la marca --availability-domain.

gcloud compute instances bulk create \
    --availability-domain=DOMAIN_NUMBER \
    --count=COUNT \
    --machine-type=MACHINE_TYPE \
    --name-pattern=NAME_PATTERN \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

Sustituye DOMAIN_NUMBER por el número del dominio de disponibilidad en el que quieras colocar la VM. El valor debe estar comprendido entre 1 y el número de dominios especificados en la política de colocación de la dispersión. Para verificar el número de dominios de una política de colocación de anuncios, consulte los detalles de la política de colocación.

REST

Para crear VMs en bloque que especifiquen una política de colocación dispersa, haz una POST a la instances.bulkInsert method. En el cuerpo de la solicitud, incluye el campo resourcePolicies.

Por ejemplo, para crear VMs en bloque en una sola zona y especificar un patrón de nombre para las VMs, haz una solicitud POST de la siguiente manera:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert

{
  "count": "COUNT",
  "namePattern": "NAME_PATTERN",
  "instanceProperties": {
    "machineType": "MACHINE_TYPE",
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "resourcePolicies": [
      "POLICY_NAME"
    ]
  }
}

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto en el que se encuentra la política de emplazamiento de la hoja de cálculo.

  • ZONE: la zona en la que se crearán las VMs en bloque.

  • COUNT: número de VMs que se van a crear.

  • NAME_PATTERN: el patrón de nombre de las VMs. Para sustituir una secuencia de números en un nombre de VM, usa una secuencia de caracteres de almohadilla (#). Por ejemplo, si se usa vm-# como patrón de nombre, se generarán VMs con nombres que empiecen por vm-1, vm-2 y así sucesivamente hasta el número de VMs especificado por COUNT.

  • MACHINE_TYPE: el tipo de máquina de las VMs.

  • IMAGE_PROJECT: el proyecto de imagen que contiene la imagen (por ejemplo, debian-cloud). Para obtener más información sobre los proyectos de imágenes admitidos, consulta Imágenes públicas.

  • IMAGE: especifica una de las siguientes opciones:

    • Una versión específica de la imagen del SO, por ejemplo, debian-12-bookworm-v20240617.

    • Una familia de imágenes, que debe tener el formato family/IMAGE_FAMILY. Especifica la imagen del SO más reciente que no está obsoleta. Por ejemplo, si especificas family/debian-12, se usará la versión más reciente de la familia de imágenes de Debian 12. Para obtener más información sobre cómo usar familias de imágenes, consulte las prácticas recomendadas para familias de imágenes.

  • POLICY_NAME: el nombre de una política de emplazamiento de expansión.

Si quiere especificar el dominio de disponibilidad en el que se crearán las VMs en bloque, incluya el campo availabilityDomain en el cuerpo de la solicitud.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert

{
  "count": "COUNT",
  "namePattern": "NAME_PATTERN",
  "instanceProperties": {
    "machineType": "MACHINE_TYPE",
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "resourcePolicies": [
      "POLICY_NAME"
    ],
    "scheduling": {
      "availabilityDomain": DOMAIN_NUMBER
    }
  }
}

Sustituye DOMAIN_NUMBER por el número del dominio de disponibilidad en el que quieras colocar la VM. El valor debe estar comprendido entre 1 y el número de dominios especificados en la política de colocación de la dispersión. Para verificar el número de dominios de una política de colocación de anuncios, consulte los detalles de la política de colocación.

Para obtener más información sobre las opciones de configuración para crear VMs en bloque, consulta Crear VMs en bloque.

Aplicar la política al crear una plantilla de instancia

Antes de crear una plantilla de instancia que especifique una política de colocación dispersa, asegúrate de lo siguiente:

  • Si quieres crear una plantilla de instancia regional, crea la plantilla en la misma región que la política de emplazamiento de difusión. De lo contrario, no se podrá crear la plantilla de instancia.

  • Al crear una plantilla de instancia, puedes especificar de forma opcional el dominio de disponibilidad en el que se crearán las VMs. Evita crear todas tus VMs en un solo dominio. De lo contrario, no mitigará el riesgo de que un solo error de hardware afecte a todas sus VMs.

Después de crear una plantilla de instancia que especifique una política de colocación dispersa, puedes usarla para hacer lo siguiente:

Para crear una plantilla de instancia que especifique una política de colocación dispersa, selecciona una de las siguientes opciones:

gcloud

Para crear una plantilla de instancia que especifique una política de colocación dispersa, usa el comando gcloud compute instance-templates create con la marca --resource-policies.

Por ejemplo, para crear una plantilla de instancia global que especifique una política de colocación de dispersión, ejecuta el siguiente comando:

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --resource-policies=POLICY_NAME

Haz los cambios siguientes:

  • INSTANCE_TEMPLATE_NAME: el nombre de la plantilla de instancia.

  • MACHINE_TYPE: el tipo de máquina de las VMs creadas con la plantilla de instancia.

  • POLICY_NAME: el nombre de una política de emplazamiento de expansión.

Opcionalmente, para especificar el dominio de disponibilidad en el que se crearán las VMs, incluye la marca --availability-domain.

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --availability-domain=DOMAIN_NUMBER  \
    --machine-type=MACHINE_TYPE \
    --resource-policies=POLICY_NAME

Sustituye DOMAIN_NUMBER por el número del dominio de disponibilidad en el que quieras crear las VMs. El valor debe estar comprendido entre 1 y el número de dominios especificado en la política de emplazamiento. Para verificar el número de dominios de una política de colocación de anuncios, consulte los detalles de la política de colocación.

REST

Para crear una plantilla de instancia que especifique una política de colocación dispersa, haz una solicitud POST a uno de los siguientes métodos:

En el cuerpo de la solicitud, especifica el campo resourcePolicies.

Por ejemplo, para crear una plantilla de instancia global que especifique una política de colocación de dispersión, haz una solicitud POST de la siguiente manera:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "resourcePolicies": [
      "POLICY_NAME"
    ]
  }
}

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto en el que se encuentra la política de emplazamiento de la hoja de cálculo.

  • INSTANCE_TEMPLATE_NAME: el nombre de la plantilla de instancia.

  • IMAGE_PROJECT: el proyecto de imagen que contiene la imagen (por ejemplo, debian-cloud). Para obtener más información sobre los proyectos de imágenes admitidos, consulta Imágenes públicas.

  • IMAGE: especifica una de las siguientes opciones:

    • Una versión específica de la imagen del SO, por ejemplo, debian-12-bookworm-v20240617.

    • Una familia de imágenes, que debe tener el formato family/IMAGE_FAMILY. Especifica la imagen del SO más reciente que no está obsoleta. Por ejemplo, si especificas family/debian-12, se usará la versión más reciente de la familia de imágenes de Debian 12. Para obtener más información sobre cómo usar familias de imágenes, consulte las prácticas recomendadas para familias de imágenes.

  • MACHINE_TYPE: el tipo de máquina de las VMs creadas con la plantilla de instancia.

  • POLICY_NAME: el nombre de una política de emplazamiento de expansión.

Opcionalmente, para especificar el dominio de disponibilidad en el que se crearán las VMs, incluye el campo availabilityDomain en el cuerpo de la solicitud.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "resourcePolicies": [
      "POLICY_NAME"
    ],
    "scheduling": {
      "availabilityDomain": DOMAIN_NUMBER
    }
  }
}

Sustituye DOMAIN_NUMBER por el número del dominio de disponibilidad en el que quieras crear las VMs. El valor debe estar comprendido entre 1 y el número de dominios especificado en la política de emplazamiento. Para verificar el número de dominios de una política de colocación de anuncios, consulte los detalles de la política de colocación.

Para obtener más información sobre las opciones de configuración para crear una plantilla de instancia, consulta Crear plantillas de instancia.

Aplicar la política a las VMs de un MIG

Después de crear una plantilla de instancia que especifique una política de colocación dispersa, puedes usar la plantilla para hacer lo siguiente:

Aplicar la política al crear un MIG

Solo puedes crear VMs que especifiquen una política de colocación dispersa si las VMs se encuentran en la misma región que la política de colocación.

Para crear un MIG con una plantilla de instancia que especifique una política de colocación dispersa, selecciona una de las siguientes opciones:

gcloud

Para crear un MIG con una plantilla de instancia que especifique una política de colocación dispersa, usa el comando gcloud compute instance-groups managed create.

Por ejemplo, para crear un MIG zonal con una plantilla de instancia global que especifique una política de colocación dispersa, ejecuta el siguiente comando:

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --size=SIZE \
    --template=INSTANCE_TEMPLATE_NAME \
    --zone=ZONE

Haz los cambios siguientes:

  • INSTANCE_GROUP_NAME: el nombre del MIG que se va a crear.

  • SIZE: el tamaño de la MIG.

  • INSTANCE_TEMPLATE_NAME: el nombre de una plantilla de instancia global que especifica una política de colocación dispersa.

  • ZONE: la zona en la que se va a crear el MIG, que debe estar en la región en la que se encuentra la política de colocación distribuida.

REST

Para crear un MIG con una plantilla de instancia que especifique una política de colocación dispersa, envía una solicitud POST a uno de los siguientes métodos:

Por ejemplo, para crear un MIG zonal con una plantilla de instancia global que especifique una política de colocación dispersa, haz una solicitud POST de la siguiente manera:

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

{
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": SIZE,
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME"
    }
  ]
}

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto en el que se encuentran la política de colocación de la extensión y la plantilla de instancia que especifica la política de colocación.

  • ZONE: la zona en la que se va a crear el MIG, que debe estar en la región en la que se encuentra la política de posición distribuida.

  • INSTANCE_GROUP_NAME: el nombre del MIG que se va a crear.

  • SIZE: el tamaño de la MIG.

  • INSTANCE_TEMPLATE_NAME: el nombre de una plantilla de instancia global que especifica una política de colocación dispersa.

Para obtener más información sobre las opciones de configuración para crear MIGs, consulta Escenarios básicos para crear MIGs.

Aplicar la política a un MIG

Solo puedes aplicar una política de colocación dispersa a un MIG si este se encuentra en la misma región que la política de colocación o, en el caso de los MIGs zonales, en una zona de la misma región que la política de colocación.

Para actualizar un MIG de forma que use una plantilla de instancia que especifique una política de colocación dispersa, selecciona una de las siguientes opciones:

gcloud

Para actualizar un MIG de forma que use una plantilla de instancia que especifique una política de colocación dispersa, usa el comando gcloud compute instance-groups managed rolling-action start-update.

Por ejemplo, para actualizar un MIG zonal de forma que use una plantilla de instancia que especifique una política de colocación dispersa y sustituir las VMs del MIG por VMs que especifiquen las propiedades de la plantilla, ejecuta el siguiente comando:

gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \
    --version=template=INSTANCE_TEMPLATE_NAME \
    --zone=ZONE

Haz los cambios siguientes:

  • INSTANCE_GROUP_NAME: el nombre de un MIG.

  • INSTANCE_TEMPLATE_NAME: el nombre de una plantilla de instancia global que especifica una política de colocación dispersa.

  • ZONE: la zona en la que se encuentra el MIG. Solo puedes aplicar la política de colocación distribuida a un MIG ubicado en la misma región que la política de colocación.

REST

Para actualizar un MIG de forma que use una plantilla de instancia que especifique una política de colocación dispersa y aplicar automáticamente las propiedades de la plantilla y la política de colocación a las VMs del MIG, haz una solicitud PATCH a uno de los siguientes métodos:

Por ejemplo, para actualizar un MIG zonal de forma que use una plantilla de instancia global que especifique una política de colocación dispersa y sustituir las VMs del MIG por VMs que especifiquen las propiedades de la plantilla, haz la siguiente solicitud PATCH:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME

{
  "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME"
}

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto que has usado para crear un MIG, la política de colocación dispersa y la plantilla de instancia que especifica la política de colocación dispersa.

  • ZONE: la zona en la que se encuentra el MIG. Solo puedes aplicar la política de colocación distribuida a un MIG ubicado en la misma región que la política de colocación.

  • INSTANCE_GROUP_NAME: el nombre de un MIG.

  • INSTANCE_TEMPLATE_NAME: el nombre de una plantilla de instancia global que especifica una política de colocación dispersa.

Para obtener más información sobre las opciones de configuración para actualizar las VMs de un MIG, consulta Actualizar y aplicar nuevas configuraciones a las VMs de un MIG.

Siguientes pasos