Repara una VM en una zona alternativa

En este documento, se describe cómo permitir que un grupo de instancias administrado (MIG) regional repare una instancia de máquina virtual (VM) en una zona alternativa cuando el MIG no puede reparar la VM en su zona original. Para obtener más información sobre las reparaciones en un MIG, consulta Información sobre la reparación de VMs para alta disponibilidad.

Cuando creas un MIG regional, seleccionas una o más zonas en las que el MIG distribuye sus VMs. De forma predeterminada, si una VM del MIG falla, este intenta repararla en su zona original. De manera opcional, puedes permitir que el MIG repare esa VM en una de las otras zonas seleccionadas, lo que resulta útil en los casos en que el MIG no puede reparar la VM en su zona original. El MIG elige la zona alternativa en función de la capacidad y la cuota disponibles.

Limitaciones

Cuando configuras un MIG regional para reparar una VM en una zona alternativa, se aplican las siguientes limitaciones:

Antes de comenzar

  • Si aún no lo hiciste, configura la autenticación. La autenticación verifica tu identidad para acceder a los servicios y las APIs 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. Instala Google Cloud CLI. Después de instalarla, inicializa Google Cloud CLI ejecutando el siguiente comando:

      gcloud init

      Si usas un proveedor de identidad (IdP) externo, primero debes Acceder a gcloud CLI 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 gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.

      Instala Google Cloud CLI.

      Si usas un proveedor de identidad (IdP) externo, primero debes Acceder a gcloud CLI 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 de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a gcloud CLI.

      Instala Google Cloud CLI.

      Si usas un proveedor de identidad (IdP) externo, primero debes Acceder a gcloud CLI con tu identidad federada.

    Para obtener más información, consulta Autentícate para usar REST en la documentación de autenticación de Google Cloud .

Permitir reparaciones en una zona alternativa

Para permitir que un MIG repare una VM en una zona alternativa, selecciona una de las siguientes opciones:

Console

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

    Ir a Grupos de instancias

  2. Si ya tienes un MIG, haz lo siguiente:

    1. Haz clic en el nombre del MIG.
    2. Haz clic en Editar.
  3. Si aún no tienes un MIG, haz lo siguiente:

    1. Haz clic en Crear grupo de instancias.
    2. Ingresa un Nombre.
    3. Elige una plantilla de instancia.
    4. En la sección Ubicación, selecciona Varias zonas y, luego, elige una región y zonas.
    5. En el menú desplegable Forma de distribución objetivo, selecciona Equilibrado o Cualquier zona.

      • Si seleccionas Balanceada, en el diálogo que aparece, haz clic en Inhabilitar la redistribución de instancias.

      • Si deseas seleccionar Any, primero debes borrar la configuración del ajuste de escala automático. Para borrar el ajuste de escala automático, en el menú desplegable Modo de ajuste de escala automático, haz clic en Borrar configuración del ajuste de escala automático.

  4. En la sección Ciclo de vida de la instancia de VM, asegúrate de que los siguientes campos estén configurados de la siguiente manera:

    1. La lista Acción predeterminada en caso de error está configurada como Reparar instancia.

    2. La opción Actualizaciones durante la reparación de la instancia de VM está configurada como Actualizar la configuración de la instancia.

    3. En la sección Cambiar la zona durante la reparación de instancias de VM, selecciona la casilla de verificación Permitir la reparación de VMs en una zona alternativa.

  5. Para la otra configuración, puedes usar los valores predeterminados o cambiar los campos.

  6. Cuando termines, haz clic en Guardar para un MIG existente o en Crear para un MIG nuevo.

gcloud

Para configurar un MIG existente para reparar una VM en una zona alternativa, usa el comando update en fase beta:

gcloud beta compute instance-groups managed update MIG_NAME \
    --on-repair-allow-changing-zone=YES \
    --force-update-on-repair \
    --region=REGION

Para crear un MIG que pueda reparar VM en una zona alternativa, usa el comando create beta:

gcloud beta compute instance-groups managed create MIG_NAME \
    --template=INSTANCE_TEMPLATE_URL \
    --size=SIZE \
    --zones=ZONES \
    --target-distribution-shape=SHAPE \
    --instance-redistribution-type=none \
    --on-repair-allow-changing-zone=YES \
    --force-update-on-repair

Reemplaza lo siguiente:

  • MIG_NAME: Es el nombre del MIG.
  • INSTANCE_TEMPLATE_URL: Es la URL de la plantilla de instancias que deseas usar para crear VMs en el MIG. La URL puede contener el ID o el nombre de la plantilla de instancias. Especifica uno de los siguientes valores:
    • Para una plantilla de instancias regional: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • Para una plantilla de instancias global: INSTANCE_TEMPLATE_ID
  • SIZE: Es el tamaño objetivo del MIG.
  • ZONES: Es la lista de zonas en una región en la que deseas crear las VMs en el MIG.
  • SHAPE: Es la forma de distribución objetivo. Este valor puede ser balanced o any.
  • REGION: la región en la que se encuentra el MIG.

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.

Para crear un MIG que pueda reparar VM en una zona alternativa, usa el recurso google_compute_region_instance_group_manager.

resource "google_compute_region_instance_group_manager" "default" {
  provider           = google-beta
  name               = "example-rmig"
  base_instance_name = "example-rmig-instance"
  region             = "us-central1"

  target_size                      = 3
  distribution_policy_target_shape = "BALANCED"

  version {
    instance_template = google_compute_instance_template.default.id
  }

  instance_lifecycle_policy {
    default_action_on_failure = "REPAIR"
    force_update_on_repair    = "YES"
    on_repair {
      allow_changing_zone = "YES"
    }
  }

  update_policy {
    instance_redistribution_type = "NONE"
    type                         = "OPPORTUNISTIC"
    minimal_action               = "REPLACE"
    max_surge_fixed              = 0
    max_unavailable_fixed        = 6
  }
}

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

REST

Para configurar un MIG existente para reparar una VM en una zona alternativa, usa el método regionInstanceGroupManagers.patch en fase beta:

PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME
{
    "instanceLifecyclePolicy": {
      "onRepair": {
        "allowChangingZone": "YES"
      },
      "forceUpdateOnRepair": "YES"
    }
}

Para crear un MIG que pueda reparar VM en una zona alternativa, usa el método regionInstanceGroupManagers.insert beta:

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

{
  "name": "MIG_NAME",
  "instanceTemplate": "INSTANCE_TEMPLATE_URL",
  "targetSize": SIZE,
  "distributionPolicy": {
    "targetShape": "SHAPE"
  }
  "updatePolicy": {
    "instanceRedistributionType": none
  }
  "instanceLifecyclePolicy": {
    "forceUpdateOnRepair": "YES",
    "onRepair": {
      "allowChangingZone": "YES"
    }
  }
}

Reemplaza lo siguiente:

  • PROJECT_ID es el ID de tu proyecto.
  • REGION: la región en la que se encuentra el MIG.
  • MIG_NAME: Es el nombre del MIG.
  • INSTANCE_TEMPLATE_URL: Es la URL de la plantilla de instancias que deseas usar para crear VMs en el MIG. La URL puede contener el ID o el nombre de la plantilla de instancias. Especifica uno de los siguientes valores:
    • Para una plantilla de instancias regional: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • Para una plantilla de instancias global: INSTANCE_TEMPLATE_ID
  • SIZE: Es el tamaño objetivo del MIG.
  • SHAPE: Es la forma de distribución objetivo. Este valor puede ser BALANCED o ANY.

No permitir reparaciones en una zona alternativa

Si configuraste un MIG para reparar VMs en una zona alternativa, puedes restablecer el parámetro de configuración predeterminado en el que el MIG repara la VM en la zona original.

Para no permitir reparaciones en una zona alternativa, selecciona una de las siguientes opciones:

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

  3. Haz clic en Editar.

  4. Ve a la sección Ciclo de vida de la instancia de VM.

  5. En la sección Cambiar la zona durante la reparación de instancias de VM, desmarca la casilla de verificación Permitir la reparación de VMs en una zona alternativa.

  6. Haz clic en Guardar.

gcloud

Para no permitir reparaciones en una zona alternativa, usa el comando update en versión beta:

gcloud beta compute instance-groups managed update MIG_NAME \
    --on-repair-allow-changing-zone=NO \
    --region=REGION

Reemplaza lo siguiente:

  • MIG_NAME: Es el nombre del MIG.
  • REGION: la región en la que se encuentra el MIG.

REST

Para no permitir reparaciones en una zona alternativa, usa el método beta regionInstanceGroupManagers.patch:

PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME
{
    "instanceLifecyclePolicy": {
      "onRepair": {
        "allowChangingZone": "NO"
      }
    }
}

Reemplaza lo siguiente:

  • PROJECT_ID es el ID de tu proyecto.
  • REGION: la región en la que se encuentra el MIG.
  • MIG_NAME: Es el nombre del MIG.

¿Qué sigue?