Crea y administra MIG regionales

En este documento, se describen los procedimientos específicos para crear y administrar grupos de instancias administrados regionales (MIG regionales). Para obtener información general sobre la creación de MIG, consulta Crea grupos de instancias administrados.

Un MIG regional distribuye tus instancias entre varias zonas en una región, lo que aumenta la resiliencia de tus cargas de trabajo basadas en MIG. Usar varias zonas te protege de casos extremos en los que fallan todas las instancias de una sola zona.

Para obtener más información sobre los MIG regionales, incluido el motivo por el que deberías elegirlos, sus opciones de configuración adicionales y cómo difieren de los MIG zonales, consulta la Descripción general de los MIG regionales.

Antes de comenzar

Limitaciones

  • Con un MIG regional, puedes crear hasta 2,000 VM en una región, con un máximo de 1,000 VM por zona. Con un MIG zonal, puedes crear hasta 1,000 VM. Si necesitas más, comunícate con el equipo de asistencia.
  • Cuando actualizas un MIG, puedes especificar hasta 1,000 VM en una sola solicitud.
  • Si deseas un MIG con estado, revisa sus limitaciones.

  • Si deseas usar el balanceo de cargas con un MIG regional, se aplican las siguientes limitaciones:

    • No puedes usar el modo de balanceo maxRate.
    • Si usas un esquema de balanceo de cargas de HTTP(S) con un MIG regional, debes elegir el modo de balanceo maxRatePerInstance o maxUtilization.
  • Si deseas realizar un ajuste de escala automático en un MIG regional, se aplican las siguientes limitaciones:

    • Para reducir la escala y escalar horizontalmente, debes habilitar la redistribución proactiva de instancias. Si estableces el modo del escalador automático solo para escalar horizontalmente, no es necesario que habilites la distribución proactiva de instancias.
    • Si deseas realizar un ajuste de escala automático en un MIG regional en función de las métricas de Cloud Monitoring, se aplican las siguientes limitaciones:

      • No puedes usar métricas por grupo.
      • No puedes aplicar filtros a métricas por instancia.

Crea un MIG regional

Usa Cloud Console, la herramienta de gcloud o la API de Compute Engine.

Si no hay suficiente capacidad en cada zona para admitir las VM del grupo, Compute Engine creará tantas VM como sea posible y continuará intentando crear las VM restantes cuando haya capacidad adicional disponible.

Debido a que crearás un MIG regional, ten en cuenta que ciertos recursos, como los discos persistentes, son zonales. Si especificas recursos zonales en tu plantilla de instancias, como discos persistentes adicionales, el disco debe estar presente en todas las zonas para que pueda conectarse a las VM que crea este MIG regional.

De forma predeterminada, si no especificas de manera explícita zonas individuales en tu solicitud, Compute Engine elige de forma automática tres zonas para crear VM. Si necesitas crear VM en más de tres zonas o en menos, o bien si deseas elegir qué zonas se usan, puedes proporcionar una lista de zonas en tu solicitud. Para obtener más información, consulta Selección de la zona.

La redistribución proactiva de instancias está habilitada de forma predeterminada. Si necesitas administrar de forma manual la cantidad de VM en cada zona, puedes inhabilitar la redistribución proactiva de instancias y no puedes configurar el ajuste de escala automático.

Console

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

    Ir a la página Grupos de instancias

  2. Haz clic en Crear grupo de instancias para crear un grupo de instancias nuevo.
  3. En Ubicación, selecciona Varias zonas.
  4. Elige la región deseada.
  5. Si deseas elegir zonas específicas, haz clic en Configurar zonas para seleccionar las zonas que deseas usar.
  6. Si deseas inhabilitar la redistribución proactiva de instancias, haz lo siguiente:
    1. Asegúrate de que el Modo de ajuste de escala automático esté establecido en Desactivado.
    2. Establece la opción Redistribución de instancias en Desactivado.
  7. Elige una plantilla de instancias para el grupo o crea una nueva.
  8. Especifica la cantidad de VM para este grupo. Recuerda aprovisionar suficientes VM para admitir tu aplicación si ocurre una falla de zona.
  9. Continúa con el resto del proceso de creación del MIG.

gcloud

Todos los MIG requieren una plantilla de instancias. Crea una plantilla de instancias si no tienes una. Por ejemplo, con el siguiente comando, se crea una plantilla de instancias básica con propiedades predeterminadas:

gcloud compute instance-templates create example-template

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

gcloud compute instance-groups managed create example-rmig \
    --template example-template  \
    --size 30 \
    --region us-east1

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

gcloud compute instance-groups managed create example-rmig \
    --template example-template \
    --size 30 \
    --zones us-east1-b,us-east1-c

Si deseas inhabilitar la redistribución proactiva de instancias, establece la marca --instance-redistribution-type en NONE. No puedes inhabilitar la redistribución proactiva de instancias si el ajuste de escala automático está habilitado.

gcloud compute instance-groups managed create example-rmig \
    --template example-template \
    --size 30 \
    --instance-redistribution-type NONE \
    --region us-east1

API

Todos los MIG requieren una plantilla de instancias. Crea una plantilla de instancias si no tienes una.

A continuación, crea una solicitud POST para el método regionInstanceGroupManagers.insert. En el cuerpo de la solicitud, especifica el nombre y el tamaño del grupo, y la URL a la plantilla de instancias. De forma opcional, especifica otros campos, como el nombre base para las instancias en el grupo.

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

{
  "baseInstanceName": "BASE_INSTANCE_NAME",
  "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME",
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": "TARGET_SIZE"
}

Reemplaza los siguientes elementos:

  • PROJECT_ID: Es el ID del proyecto de esta solicitud.
  • REGION: Es la región del grupo.
  • BASE_INSTANCE_NAME: Es el nombre para cada instancia de VM que se crea como parte del grupo. Por ejemplo, si example-instance fuera el nombre base de la instancia, se crearían instancias con nombres como example-instance-[RANDOM_STRING], en los que el servidor genera [RANDOM_STRING].
  • INSTANCE_TEMPLATE_NAME: Es la plantilla de instancias que se usará.
  • INSTANCE_GROUP_NAME: Es el nombre del MIG.
  • TARGET_SIZE: Es la cantidad de VM de destino para el grupo.

Si deseas seleccionar zonas específicas, o bien crear VM en una región con menos de tres zonas o más, incluye la propiedad distributionPolicy en tu solicitud y proporciona una lista de zonas. Reemplaza ZONE por el nombre de una zona en la que deseas crear VM.

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

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

Por ejemplo, con el siguiente comando, se crea un MIG regional llamado example-rmig con 10 instancias administradas 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": "global/instanceTemplates/example-instance",
  "name": "example-rmig",
  "targetSize": 10,
  "distributionPolicy": {
      "zones": [
        {"zone": "zones/us-east1-b"},
        {"zone": "zones/us-east1-c"}
      ]
   }
}

Trabaja con instancias administradas en un MIG regional

Si necesitas actuar en instancias administradas específicas en un MIG, por ejemplo, a fin de crear o borrar instancias con nombres específicos, el proceso es el mismo para los MIG regionales y zonales. Consulta Trabaja con instancias administradas.

Obtén información sobre los MIG regionales y las instancias administradas

Si quieres obtener información sobre tu MIG, por ejemplo, con el fin de ver la configuración o inspeccionar el estado, o si quieres obtener información sobre las instancias administradas en un MIG, el proceso es el mismo para los MIG regionales y zonales. Consulta Obtén información sobre los MIG y las instancias administradas.

Actualiza un grupo de instancias administrado regional

Puedes aplicar una plantilla de instancias nueva a un MIG regional mediante la función de actualizador. Para obtener más información, consulta Actualiza un MIG regional.

Si deseas agregar o quitar instancias en un MIG, consulta Trabaja con instancias administradas.

Si deseas usar o actualizar las funciones de MIG, consulta los documentos sobre la reparación automática, el balanceo de cargas, el ajuste de escala automático, las actualizaciones automáticas y las cargas de trabajo con estado.

Inhabilita y vuelve a habilitar la redistribución proactiva de instancias

La redistribución proactiva de instancias mantiene una cantidad uniforme de VM en las zonas seleccionadas de la región. Esta configuración maximiza la disponibilidad de tu aplicación en caso de una falla a nivel de zona.

La redistribución proactiva de instancias está activada de forma predeterminada para los MIG regionales, pero puedes desactivarla para los MIG sin ajuste de escala automático. Cuando la redistribución proactiva de instancias está desactivada, el grupo no intenta redistribuir de forma proactiva las VM entre las zonas. Esto es útil si necesitas hacer lo siguiente:

  • Borrar o abandonar de forma manual las instancias administradas del grupo sin afectar a otras VM en ejecución
  • Borrar una VM de trabajador por lotes de forma automática cuando finaliza el trabajo sin afectar a otros trabajadores
  • Proteger las VM mediante aplicaciones con estado de la eliminación automática no intencionada a causa de la redistribución proactiva de instancias

Usa Cloud Console, la herramienta de gcloud o la API de Compute Engine si deseas crear un MIG regional con la redistribución proactiva de instancias inhabilitada, o para habilitar o inhabilitar esta función en un grupo existente.

Crea un grupo con redistribución proactiva de instancias inhabilitada

Console

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

    Ir a la página Grupos de instancias

  2. Haz clic en Crear grupo de instancias para crear un grupo de instancias nuevo.
  3. En Ubicación, selecciona Varias zonas.
  4. Elige la región deseada.
  5. Si deseas elegir zonas específicas, haz clic en Configurar zonas para seleccionar las zonas que deseas usar.
  6. Para inhabilitar la redistribución proactiva de instancias, haz lo siguiente:
    1. Asegúrate de que el Modo de ajuste de escala automático esté establecido en Desactivado.
    2. Establece la Redistribución de instancias en Desactivada.
  7. Elige una plantilla de instancias para el grupo o crea una nueva.
  8. Especifica la cantidad de VM para este grupo. Recuerda aprovisionar suficientes VM para admitir tu aplicación si ocurre una falla de zona.
  9. Continúa con el resto del proceso de creación del MIG.

gcloud

Para crear un MIG regional nuevo sin redistribución proactiva de instancias, usa el comando gcloud compute instance-groups managed create con la marca --instance-redistribution-type establecida en NONE.

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template INSTANCE_TEMPLATE_NAME \
    --size TARGET_SIZE \
    --zones ZONES \
    --instance-redistribution-type NONE

Reemplaza los siguientes elementos:

  • INSTANCE_GROUP_NAME: Es el nombre del MIG.
  • INSTANCE_TEMPLATE_NAME: Es el nombre de la plantilla de instancias que se usará para el grupo.
  • TARGET_SIZE: Es el tamaño objetivo del grupo.
  • ZONES: Es la lista de zonas en una sola región en la que necesitas implementar VM.

Por ejemplo:

gcloud compute instance-groups managed create example-rmig \
    --template example-template \
    --size 30 \
    --zones us-east1-b,us-east1-c \
    --instance-redistribution-type NONE

API

Para crear un MIG regional sin ajuste de escala automático y sin redistribución proactiva de instancias, realiza una solicitud POST al método regionInstanceGroupManagers.insert. En el cuerpo de la solicitud, incluye la propiedad updatePolicy y establece su campo instanceRedistributionType en NONE.

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

{
    "name": "INSTANCE_GROUP_NAME",
    "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME",
    "targetSize": "TARGET_SIZE",
    "distributionPolicy": {
        "zones": [
            {"zone": "zones/ZONE"},
            {"zone": "zones/ZONE"}
        ]
    },
    "updatePolicy": {
        "instanceRedistributionType": "NONE"
    }
}

Reemplaza los siguientes elementos:

  • PROJECT_ID: Es el ID del proyecto de esta solicitud.
  • REGION Es la región para el grupo de instancias.
  • INSTANCE_GROUP_NAME: Es el nombre del MIG.
  • INSTANCE_TEMPLATE_NAME: Es el nombre de la plantilla de instancias que se usará para el grupo.
  • TARGET_SIZE: Es el tamaño objetivo del grupo de instancias.
  • ZONE: Es el nombre de una zona en la única región en la que necesitas implementar las VM.

Desactiva la redistribución proactiva de instancias

Antes de poder desactivar la redistribución proactiva de instancias, debes configurar el modo del escalador automático para desactivar el ajuste de escala automático o restringirlo a fin de que solo escale horizontalmente.

Console

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

    Ir a la página Grupos de instancias

  2. Selecciona el MIG que deseas actualizar y haz clic en Editar grupo.
  3. Si ya existe una configuración de ajuste de escala automático, asegúrate de que el Modo de ajuste de escala automático esté configurado como Sin ajuste de escala automático.
  4. Establece la Redistribución de instancias en Desactivado para inhabilitar la redistribución automática.
  5. Haz clic en Guardar.

gcloud

A fin de desactivar la redistribución proactiva de instancias en un MIG regional sin ajuste de escala automático, usa el comando compute instance-groups managed update con la marca --instance-redistribution-type establecida en NONE.

gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \
    --instance-redistribution-type NONE \
    --region REGION

Reemplaza los siguientes elementos:

  • INSTANCE_GROUP_NAME: Es el nombre del MIG.
  • REGION: Es la región del grupo de instancias.

API

A fin de inhabilitar la redistribución proactiva de instancias para un MIG regional sin ajuste de escala automático, realiza una solicitud PATCH al método regionInstanceGroupManagers.patch. En el cuerpo de la solicitud, incluye la propiedad updatePolicy y establece su campo instanceRedistributionType en NONE

 PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/[INSTANCE_GROUP_NAME

{
    "updatePolicy": {
         "instanceRedistributionType": "NONE"
    }
}

Reemplaza los siguientes elementos:

  • PROJECT_ID: Es el ID del proyecto de esta solicitud.
  • REGION Es la región para el grupo de instancias.
  • INSTANCE_GROUP_NAME: Es el nombre de un MIG sin ajuste de escala automático.

Activa la distribución proactiva de instancias

A fin de habilitar la distribución proactiva de instancias, usa un comando similar al que empleas para inhabilitarla, pero con el tipo de redistribución de instancias establecido en PROACTIVE.

Si quitaste o abandonaste de forma manual algunas instancias administradas y esto provocó una distribución desigual de VM en toda la región, antes de que puedas habilitar la redistribución proactiva de instancias de nuevo, debes volver a balancear de forma manual el grupo. La diferencia en la cantidad de VM entre dos zonas no debe ser mayor a 1 VM.

En un MIG regional, no se puede habilitar la redistribución proactiva de instancias cuando las VM están distribuidas de manera desigual entre las zonas (la diferencia en la cantidad de VM entre dos zonas es de 2 o más). Esto es para evitar la eliminación automática y no intencionada de VM en las zonas con más VM, acción que se activaría con el fin de lograr una distribución uniforme.

Vuelve a balancear de forma manual un MIG regional

Un MIG no está balanceado si la diferencia en la cantidad de VM entre dos zonas es de 2 VM o más. Un MIG puede no estar balanceado si inhabilitas la redistribución proactiva de instancias y, luego, borras o abandonas instancias para causar una distribución desigual entre zonas.

Puedes lograr una distribución uniforme de instancias entre zonas de forma manual si borras las VM de las zonas con más instancias o si cambias el tamaño para agregar instancias a zonas con menos VM hasta que la distribución sea uniforme.

Cuando cambias el tamaño de un MIG que tiene inhabilitada la redistribución proactiva de instancias, el grupo aún converge de forma oportunista y trata a cada operación de cambio de tamaño como una oportunidad para balancear el grupo:

  • Cuando el grupo crece, siempre intenta agregar VM a las zonas con la menor cantidad.
  • Cuando el grupo se reduce, siempre quita VM de las zonas con la mayor cantidad.
Ejemplo de cambio de tamaño manual de un grupo para lograr una redistribución uniforme

Simula una interrupción de zona para un MIG regional

Para probar que tu MIG regional esté aprovisionado en exceso de manera suficiente y pueda sobrevivir a una interrupción zonas, puedes usar el siguiente ejemplo con el objetivo de simular una falla zonal.

Esta secuencia de comandos detiene e inicia Apache como el escenario predeterminado. Si esto no se aplica a tu aplicación, reemplaza los comandos que detienen y, luego, inician Apache con tu propia situación de falla y recuperación.

  1. Implementa y ejecuta esta secuencia de comandos de forma continua en cada VM del grupo. Puedes hacer esto mediante la adición de la secuencia de comandos a la plantilla de instancias, o bien a través de la inclusión de una imagen personalizada y su uso en la plantilla de instancias.

    #!/usr/bin/env bash
    
    # Copyright 2016 Google Inc. All Rights Reserved.
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #     http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    set -o nounset
    set -o errexit
    set -o pipefail
    
    function GetMetadata() {
      curl -s "$1" -H "Metadata-Flavor: Google"
    }
    
    PROJECT_METADATA_URL="http://metadata.google.internal/computeMetadata/v1/project/attributes"
    INSTANCE_METADATA_URL="http://metadata.google.internal/computeMetadata/v1/instance"
    ZONE=$(GetMetadata "$INSTANCE_METADATA_URL/zone" | cut -d '/' -f 4)
    INSTANCE_NAME=$(hostname)
    
    # We keep track of the state to make sure failure and recovery is triggered only once.
    STATE="healthy"
    while true; do
      if [[ "$ZONE" = "$(GetMetadata $PROJECT_METADATA_URL/failed_zone)" ]] && \
         [[ "$INSTANCE_NAME" = *"$(GetMetadata $PROJECT_METADATA_URL/failed_instance_names)"* ]]; then
        if [[ "$STATE" = "healthy" ]]; then
          STATE="failure"
          # Do something to simulate failure here.
          echo "STARTING A FAILURE"
          /etc/init.d/apache2 stop
        fi
      else
        if [[ "$STATE" = "failure" ]] ; then
          STATE="healthy"
          # Do something to recover here.
          echo "RECOVERING FROM FAILURE"
          /etc/init.d/apache2 start
        fi
      fi
      sleep 5
    done
    
    
  2. Simula una falla de zona mediante la configuración de los siguientes dos campos de metadatos del proyecto:

    • failed_zone: Establece la zona en la que deseas simular la interrupción (limita la falla a una sola zona).
    • failed_instance_names: Elige las VM que se dejarán sin conexión por nombre (para limitar la falla solo a los nombres de VM que contengan esta string).

    Puedes configurar estos metadatos con la herramienta de gcloud. Por ejemplo, con el siguiente comando, se establece la interrupción de la zona europe-west1-b y se ven afectadas las VM cuyos nombres comienzan con base-instance-name:

    gcloud compute project-info add-metadata --metadata failed_zone='europe-west1-b',failed_instance_names='base-instance-name-'
  3. Una vez que hayas terminado de simular la interrupción, recupérate de la falla mediante la eliminación de las siguientes claves de metadatos:

    gcloud compute project-info remove-metadata --keys failed_zone,failed_instance_names

Aquí hay algunas ideas para situaciones de falla que puedes ejecutar con esta secuencia de comandos:

  • Detén tu aplicación por completo para ver cómo responde el MIG.
  • Haz que tus VM se muestren como “en mal estado” en las verificaciones de estado de balanceo de cargas.
  • Modifica iptables para bloquear parte del tráfico hacia y desde la VM.
  • Apaga las VM. De forma predeterminada, el MIG regional lo volverá a crear poco después, pero la nueva encarnación se cerrará de inmediato en cuanto se ejecute la secuencia de comandos y siempre que se establezcan los valores de metadatos. Esto dará como resultado un bucle de fallas.

Próximos pasos