Crear un MIG con VMs en varias zonas de una región


En este documento se describe cómo crear un grupo de instancias gestionado (MIG) cuyas VMs estén distribuidas en varias zonas de una región. Distribuir la carga de tu aplicación en varias zonas protege tu carga de trabajo frente a los fallos zonales. Si se produce un fallo zonal, tu aplicación puede seguir ofreciendo servicio desde instancias que se ejecuten en el resto de las zonas disponibles de la misma región.

Este tipo de MIG también se conoce como MIG regional. Para obtener más información, consulta Acerca de los MIGs regionales.

También puedes consultar otros casos prácticos básicos para crear un MIG.

Antes de empezar

  • Crea una plantilla de instancia, que es necesaria para crear un grupo de instancias gestionado.
  • Si aún no lo has hecho, configura la autenticación. La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

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

    Console

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

    gcloud

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

      gcloud init

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

    2. Set a default region and zone.

    Terraform

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

      Instala Google Cloud CLI.

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

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

      gcloud auth application-default login

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

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

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

    REST

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

      Instala Google Cloud CLI.

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

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

Limitaciones

Para ver la lista completa de limitaciones de MIG, que varía en función de la configuración que utilices, consulta el artículo sobre las limitaciones de MIG.

Crear un MIG con VMs en varias zonas de una región

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

Consola

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

    Ir a Grupos de instancias

    Los pasos restantes aparecen en la Google Cloud consola.

  2. Haz clic en Crear grupo de instancias para crear un grupo de instancias.
  3. Selecciona una de las opciones de nuevo grupo de instancias gestionado:
  4. Asigna un nombre y, si quieres, una descripción al grupo de instancias.
  5. Elige una plantilla de instancia para el grupo de instancias o crea una.
  6. En Número de instancias o en Autoescalado, especifica el número de instancias de este grupo. Recuerda aprovisionar suficientes máquinas virtuales para que tu aplicación siga funcionando si se produce un fallo en una zona.
  7. En Ubicación, selecciona Varias zonas.
  8. Elige una región y selecciona las zonas que quieras usar. Si has elegido una plantilla de instancia regional, la región se seleccionará automáticamente en función de la región de la plantilla.
  9. En Forma de distribución del destino, selecciona Uniforme. Si quieres seleccionar otra forma, consulta Definir una forma de distribución objetivo para las VMs de un MIG regional.
  10. Si quieres inhabilitar la redistribución proactiva de instancias, en Redistribución de instancias, desmarca la casilla Permitir redistribución de instancias.
  11. Continúa con el resto del proceso de creación de MIG.
  12. Para crear el MIG, haz clic en Crear.

gcloud

Todos los MIGs requieren una plantilla de instancia. Si no tienes ninguna, crea una plantilla de instancia. Por ejemplo, el siguiente comando crea una plantilla de instancia en la región us-east1 con las propiedades de instancia predeterminadas:

gcloud compute instance-templates create example-template --instance-template-region us-east1

Cuando creas el MIG, puedes especificar el ID o el nombre de una plantilla de instancia. Google recomienda que especifique el ID porque, a diferencia de los nombres, los IDs de las plantillas de instancia no se pueden reutilizar. Para ver el ID único de la plantilla de instancia que has creado, usa el comando describe:

gcloud compute instance-templates describe example-template --region us-east1 --format="value(id)"

A continuación, usa el comando instance-groups managed create con la marca --region. Por ejemplo, el siguiente comando crea un MIG regional en tres zonas de la región us-east1:

gcloud compute instance-groups managed create example-rmig \
    --template projects/my-project/regions/us-east1/instanceTemplates/1234567890 \
    --size 30 \
    --region us-east1

Si quieres seleccionar zonas específicas que debe usar el grupo, proporciona la marca --zones:

gcloud compute instance-groups managed create example-rmig \
    --template projects/my-project/regions/us-east1/instanceTemplates/1234567890 \
    --size 30 \
    --zones us-east1-b,us-east1-c

Si no necesitas usar zonas específicas, puedes especificar todas las zonas y usar una forma de distribución equilibrada. Para obtener más información, consulta Distribución de VMs entre zonas.

Si quieres inhabilitar la redistribución proactiva de instancias, consulta el artículo Redistribución proactiva de instancias.

Terraform

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

Para crear un MIG regional, puedes usar el recurso google_compute_region_instance_group_manager.

resource "google_compute_region_instance_group_manager" "default" {
  name                      = "example-rmig"
  region                    = "us-east1"
  distribution_policy_zones = ["us-east1-b", "us-east1-c"]
  target_size               = 30
  base_instance_name        = "instance"
  version {
    instance_template = google_compute_instance_template.default.id
  }
}

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

REST

Todos los MIGs requieren una plantilla de instancia. Si no tienes ninguna, crea una plantilla de instancia.

Cuando creas el MIG, puedes especificar el ID o el nombre de una plantilla de instancia. Google recomienda que especifiques el ID porque, a diferencia de los nombres, los IDs de las plantillas de instancia no se pueden reutilizar. Para ver el ID único de la plantilla de instancia que has creado, usa el método get en la plantilla de instancia regional o global que has creado.

A continuación, crea una solicitud POST al método regionInstanceGroupManagers.insert. En el cuerpo de la solicitud, especifica el nombre del grupo, el tamaño del grupo y la URL de la plantilla de instancia. También puede especificar otros campos, como el nombre base de las instancias del grupo.

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

{
  "baseInstanceName": "BASE_INSTANCE_NAME",
  "instanceTemplate": "INSTANCE_TEMPLATE_URL",
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": "TARGET_SIZE"
}

Haz los cambios siguientes:

  • PROJECT_ID: el ID de proyecto de esta solicitud.
  • REGION: la región del grupo.
  • BASE_INSTANCE_NAME: (opcional) el nombre de la instancia de cada máquina virtual que se crea como parte del grupo. Por ejemplo, si el nombre de instancia base es example-instance, se crearán instancias con nombres como example-instance-[RANDOM_STRING], donde [RANDOM_STRING] lo genera el servidor.
  • INSTANCE_TEMPLATE_URL: la URL de la plantilla de instancia que quieres usar para crear VMs en el MIG. La URL puede contener el ID o el nombre de la plantilla de instancia. Especifica uno de los siguientes valores:
    • En el caso de una plantilla de instancia regional, haz lo siguiente: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • En el caso de una plantilla de instancia global, haz lo siguiente: INSTANCE_TEMPLATE_ID
  • TARGET_SIZE: número de VMs objetivo del grupo.

Si quieres seleccionar zonas específicas o si vas a crear VMs en una región con menos de tres zonas o más de tres, incluye la propiedad distributionPolicy en tu solicitud y proporciona una lista de zonas. Sustituye ZONE por el nombre de una zona en la que crear las VMs.

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

{
  "baseInstanceName": "BASE_INSTANCE_NAME",
  "instanceTemplate": "INSTANCE_TEMPLATE_URL",
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": "TARGET_SIZE",
  "distributionPolicy": {
     "zones": [
       {"zone": "zones/ZONE"},
       {"zone": "zones/ZONE"}
      ]
   }
}

Por ejemplo, el siguiente comando crea un MIG regional llamado example-rmig con 10 instancias gestionadas distribuidas en las zonas us-east1-b y us-east1-c:

POST https://compute.googleapis.com/compute/v1/projects/myproject/regions/us-east1/instanceGroupManagers

{
  "instanceTemplate": "projects/my-project/regions/us-east1/instanceTemplates/1234567890",
  "name": "example-rmig",
  "targetSize": 10,
  "distributionPolicy": {
      "zones": [
        {"zone": "zones/us-east1-b"},
        {"zone": "zones/us-east1-c"}
      ]
   }
}

En función de cómo configures y actúes en un MIG, varias políticas y acciones pueden afectar a las instancias del grupo. Para determinar qué instancias gestionadas están activas, consulte Comprobar el estado de las instancias gestionadas.

Si no hay suficiente capacidad en cada zona para admitir las VMs del grupo, Compute Engine crea tantas VMs como sea posible y sigue intentando crear las VMs restantes cuando haya más capacidad disponible.

Si no especificas explícitamente zonas concretas en tu solicitud, Compute Engine elegirá automáticamente tres zonas para crear las VMs. Si necesitas crear VMs en más o menos de tres zonas, o si quieres elegir las zonas que se van a usar, puedes proporcionar una lista de zonas en tu solicitud. Para obtener más información, consulta Selección de zonas.

Distribución de las VMs entre zonas

De forma predeterminada, un MIG regional distribuye las VMs de forma uniforme entre las zonas seleccionadas. Como vas a crear un MIG regional, ten en cuenta que algunos recursos son zonales, como las GPUs y los discos persistentes. Si la plantilla de instancia de tu MIG especifica recursos zonales, debes asegurarte de que todos esos recursos estén presentes en todas las zonas seleccionadas para que se puedan adjuntar a las VMs creadas por el MIG regional. Si quieres que el grupo compruebe la existencia de recursos zonales, puedes definir la forma de distribución objetivo del MIG para crear instancias solo en las zonas que contengan esos recursos.

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

Redistribución de instancias proactiva

La redistribución de instancias proactiva está habilitada de forma predeterminada. Si necesitas gestionar manualmente el número de VMs de cada zona o si quieres asignar a la forma de distribución de destino del MIG el valor BALANCED o ANY_SINGLE_ZONE, debes inhabilitar la redistribución proactiva de instancias.

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

Siguientes pasos