Crea y administra MIG regionales

En este documento, se describen los procedimientos específicos para crear y administrar grupos de instancias administrados regionales (MIG). 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.

  • Debes seleccionar qué zonas están asociadas a un MIG regional cuando creas el MIG regional. Después de elegir zonas específicas durante la creación, no puedes cambiarlas o actualizarlas más tarde. Sin embargo, puedes establecer la forma de distribución objetivo del MIG para especificar la forma en que el grupo distribuye sus instancias administradas en las zonas que seleccionaste.

  • Si configuras la forma de distribución objetivo del grupo en ANY o en BALANCED, revisa las 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:

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.

Si no especificas explícitamente 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.

De forma predeterminada, los MIG distribuyen las VM de manera uniforme entre las zonas seleccionadas. Debido a que crearás un MIG regional, ten en cuenta que ciertos recursos, como las GPU y los discos persistentes, son zonales. Si la plantilla de instancias de tu MIG especifica recursos zonales, debes asegurarte de que todos esos recursos estén presentes en todas las zonas seleccionadas para que puedan conectarse a las VM creadas por el MIG regional. Como alternativa, si deseas que el grupo compruebe la existencia de recursos zonales por ti, puedes establecer la forma de distribución del MIG para crear instancias solo en zonas que contengan esos recursos.

La redistribución proactiva de instancias está habilitada de forma predeterminada. Si necesitas administrar de forma manual la cantidad de VM en cada zona o configurar la forma de distribución objetivo de MIG en BALANCED, debes inhabilitar la redistribución proactiva de instancias. Si inhabilitas la redistribución proactiva de instancias y deseas usar el ajuste de escala automático, también debes establecer la forma de distribución en EVEN y restringir el escalador automático para que solo se escale horizontalmente.

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. Selecciona una de las Opciones de grupo de instancias administrado nuevas: sin estado (predeterminado) o con estado.
  4. En Ubicación, selecciona Varias zonas.
  5. Elige una región.
  6. Si deseas elegir zonas específicas, haz clic en Configurar zonas para seleccionar las zonas que deseas usar.
  7. En Forma de distribución objetivo, selecciona Even. Si deseas seleccionar una forma diferente, consulta la sección sobre cómo configurar una política para distribuir instancias entre zonas.
  8. 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é configurado en Sin ajuste de escala automático.
    2. Establece la opción Redistribución de instancias en Desactivado.
  9. Elige una plantilla de instancias para el grupo o crea una nueva.
  10. Especifica la cantidad de VM para este grupo. Recuerda aprovisionar suficientes VM para admitir tu aplicación si ocurre una falla de zona.
  11. 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.

No puedes seleccionar diferentes zonas para el MIG después de crearlo. Sin embargo, puedes actualizar la forma objetivo del MIG para cambiar la forma en que el grupo distribuye sus instancias administradas en las zonas seleccionadas.

Establece una política para distribuir instancias entre zonas

Puedes configurar la forma de distribución objetivo del MIG regional en una de las siguientes opciones:

  • EVEN (configuración predeterminada): El grupo programa la creación y la eliminación de instancias de VM para lograr y mantener una cantidad par de instancias administradas en las zonas seleccionadas. La distribución es uniforme cuando la cantidad de instancias administradas no difiere en más de 1 entre dos zonas. Se recomienda para cargas de trabajo de entrega con alta disponibilidad.

  • BALANCED: El grupo prioriza la adquisición de recursos y programa las VM en zonas donde los recursos están disponibles, mientras distribuye las VM de la manera más uniforme posible en las zonas seleccionadas para minimizar el impacto de la falla zonal. Se recomienda para cargas de trabajo de entrega con alta disponibilidad o por lotes que no requieren ajuste de escala automático.

  • ANY: El grupo elige zonas para crear instancias de VM a fin de cumplir con la cantidad solicitada de VM dentro de las restricciones de recursos actuales y maximizar el uso de las reservas zonales no utilizadas. Se recomienda para cargas de trabajo por lotes que no requieren de alta disponibilidad.

Para ayudarte a elegir, consulta latabla comparativa, los casos de uso y cómo funcionan las formas de distribución.

Establece una forma de distribución objetivo cuando crees tu grupo o actualiza la forma objetivo de un grupo existente.

Limitaciones

  • Solo puedes seleccionar zonas para tu MIG cuando creas el MIG.
  • Si especificas recursos en tu plantilla de instancias que no están disponibles en todas las zonas seleccionadas, se aplican las siguientes limitaciones:

    • Debes configurar la forma de distribución objetivo en ANY o BALANCED.
    • Debes asegurarte de que los recursos necesarios estén disponibles en al menos una de las zonas seleccionadas. Para obtener información sobre qué recursos de Compute Engine están disponibles en zonas específicas, consulta Regiones y zonas disponibles.
    • Si quieres actualizar la plantilla de instancias del grupo a una plantilla de la que no se pueden crear instancias en todas las zonas seleccionadas, debes quitar las instancias administradas de todas las zonas no compatibles antes de establecer la nueva plantilla.
  • Si configuras la forma de distribución objetivo como BALANCED, debes inhabilitar la redistribución proactiva.

  • Si configuras la forma de distribución objetivo como BALANCED o ANY, se aplican las siguientes limitaciones:

    • El ajuste de escala automático no es compatible. Puedes establecer el tamaño del MIG o agregar instancias por tu cuenta.
    • Las actualizaciones Canary con dos versiones no son compatibles.
    • En caso de que exista disponibilidad limitada de los recursos solicitados en toda la región, el grupo podría programar la creación de instancias de VM en una zona en la que los recursos ya no están disponibles. Puedes probar disminuir y aumentar el tamaño del grupo para obtener los recursos solicitados en otras zonas.
    • Las actualizaciones progresivas que usan el método de reemplazo SUBSTITUTE intentarán crear las instancias actualizadas nuevas en la misma zona que las máquinas desactualizadas, aunque la zona no tenga los recursos necesarios para adaptarse a los requisitos de la versión nueva. Para mediar este comportamiento, puedes borrar las VM desactualizadas de la zona limitada y, luego, aumentar el tamaño del grupo según la cantidad de VM borradas. El grupo crea instancias a partir de la última plantilla en zonas donde la capacidad esté disponible.
    • Si deseas actualizar la plantilla de instancias del grupo a una plantilla que especifica recursos que no están disponibles en todas las zonas seleccionadas, debes quitar las instancias administradas de las zonas no compatibles antes de configurar la plantilla nueva.

Crea un grupo con una forma de distribución objetivo

Para crear tu grupo, seleccionar sus zonas y configurar su forma de distribución objetivo, usa Cloud Console, la herramienta de gcloud o la API de Compute Engine.

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. Selecciona una de las Opciones de grupo de instancias administrado nuevas: sin estado (predeterminado) o con estado.
  4. En Ubicación, selecciona Varias zonas.
  5. Selecciona una región.
  6. Si deseas elegir zonas específicas o elegir todas las zonas, haz clic en Configurar zonas para seleccionar las zonas que deseas usar.
  7. Elige una forma de distribución objetivo.
    1. Si deseas seleccionar Any o Balanced, en la sección Ajuste de escala automático, haz clic en Borrar configuración del ajuste de escala automático.
    2. Si deseas seleccionar Balanced, en la sección Redistribución de instancias, no selecciones Habilitar redistribución de instancias.
    3. En la sección Forma de distribución objetivo, selecciona una forma.
  8. Elige una plantilla de instancias para el grupo o crea una nueva.
  9. Especifica la cantidad de VM para este grupo. En el caso de las cargas de trabajo con alta disponibilidad, recuerda aprovisionar suficientes VM para admitir tu aplicación si ocurre una falla de zona.
  10. Continúa con el resto del proceso de creación del MIG.

gcloud

Usa el comando gcloud compute instance-groups managed create e incluye la marca --target-distribution-shape.

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template TEMPLATE \
    --size SIZE \
    [--zones ZONES \]
    --target-distribution-shape SHAPE

Reemplaza lo siguiente:

  • INSTANCE_GROUP_NAME: Es el nombre del grupo de instancias.
  • TEMPLATE: Es el nombre de la plantilla de instancias que se usará para el grupo.
  • SIZE: Es el tamaño objetivo del grupo de instancias.
  • ZONES (opcional): Es una lista de zonas de la región en la que deseas implementar instancias de VM.
  • SHAPE: Es la forma de distribución objetivo. Puede ser uno de los siguientes valores:
    • EVEN (configuración predeterminada): El grupo programa la creación y la eliminación de instancias de VM para lograr y mantener una cantidad uniforme de instancias administradas en las zonas seleccionadas. La distribución es uniforme cuando la cantidad de instancias administradas no difiere en más de 1 entre dos zonas. Se recomienda para cargas de trabajo de entrega con alta disponibilidad.
    • BALANCED: El grupo prioriza la adquisición de recursos y programa las VM en zonas donde los recursos están disponibles, mientras distribuye las VM de la manera más uniforme posible en las zonas seleccionadas para minimizar el impacto de la falla zonal. Se recomienda para cargas de trabajo de entrega con alta disponibilidad o por lotes que no requieren ajuste de escala automático.
    • ANY: El grupo elige zonas para crear instancias de VM a fin de cumplir con la cantidad solicitada de VM dentro de las restricciones de recursos actuales y maximizar el uso de las reservas zonales no utilizadas. Se recomienda para cargas de trabajo por lotes que no requieren de alta disponibilidad.

Por ejemplo, para crear un MIG regional con una forma de distribución objetivo equilibrada, configura la marca --target-distribution-shape en balanced.

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

API

Llama al método regionInstanceGroupManagers.insert. En el cuerpo de la solicitud, incluye la propiedad . In the request body, include thedistributionPolicy y configura su campo property, and set itstargetShape.

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

{
    "instanceTemplate": "global/instanceTemplates/TEMPLATE",
    "targetSize": SIZE,
    "distributionPolicy": {
        "zones": [
            {"zone": "zones/ZONE"},
            {"zone": "zones/ZONE"}
        ],
        "targetShape": SHAPE
    }
}

Reemplaza lo siguiente:

  • 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 grupo de instancias.
  • TEMPLATE: Es el nombre de la plantilla de instancias que se utilizará para el grupo de instancias.
  • SIZE: Es el tamaño objetivo del grupo de instancias.
  • ZONE: Es el nombre de una zona en la región en la que deseas implementar instancias de VM.
  • SHAPE: Es la forma de distribución objetivo. Puede ser uno de los siguientes valores:
    • EVEN (configuración predeterminada): El grupo programa la creación y la eliminación de instancias de VM para lograr y mantener una cantidad uniforme de instancias administradas en las zonas seleccionadas. La distribución es uniforme cuando la cantidad de instancias administradas no difiere en más de 1 entre dos zonas. Se recomienda para cargas de trabajo de entrega con alta disponibilidad.
    • BALANCED: El grupo prioriza la adquisición de recursos y programa las VM en zonas donde los recursos están disponibles, mientras distribuye las VM de la manera más uniforme posible en las zonas seleccionadas para minimizar el impacto de la falla zonal. Se recomienda para cargas de trabajo de entrega con alta disponibilidad o por lotes que no requieren ajuste de escala automático.
    • ANY: El grupo elige zonas para crear instancias de VM a fin de cumplir con la cantidad solicitada de VM dentro de las restricciones de recursos actuales y maximizar el uso de las reservas zonales no utilizadas. Se recomienda para cargas de trabajo por lotes que no requieren de alta disponibilidad.

Cambia la forma de distribución objetivo de un grupo existente

Puedes cambiar la forma de distribución objetivo en un MIG regional existente, pero con las siguientes limitaciones:

  • Si deseas cambiar la forma de distribución objetivo a BALANCED, primero debes inhabilitar la redistribución proactiva.
  • Si deseas cambiar la forma de distribución objetivo a EVEN y si la distribución actual de instancias no es uniforme, primero debes inhabilitar la redistribución proactiva.
  • Si cambias la forma a EVEN y deseas volver a habilitar la redistribución proactiva, primero debes volver a balancear el grupo de forma manual.
  • Si deseas cambiar la forma de distribución objetivo a EVEN, pero la plantilla de instancias especifica recursos que no se admiten en todas las zonas seleccionadas, primero debes actualizar la plantilla de instancias del grupo con una que sea compatible con todas las zonas seleccionadas.

Console

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

    Ir a la página Grupos de instancias

  2. En la columna Nombre de la lista, haz clic en el nombre del grupo de instancias en que quieres cambiar la forma de distribución objetivo.
  3. Haz clic en Editar para modificar este grupo de instancias administrado.
  4. En Forma de distribución objetivo, especifica la forma que desees.
  5. Haz clic en Guardar para aplicar la plantilla nueva.

gcloud

Usa el comando gcloud compute instance-groups managed update e incluye la marca --target-distribution-shape.

gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \
    --target-distribution-shape SHAPE

Reemplaza lo siguiente:

  • INSTANCE_GROUP_NAME: Es el nombre del grupo de instancias.
  • SHAPE: Es la forma de distribución objetivo. Puede ser uno de los siguientes valores:
    • EVEN (configuración predeterminada): El grupo programa la creación y la eliminación de instancias de VM para lograr y mantener una cantidad uniforme de instancias administradas en las zonas seleccionadas. La distribución es uniforme cuando la cantidad de instancias administradas no difiere en más de 1 entre dos zonas. Se recomienda para cargas de trabajo de entrega con alta disponibilidad.
    • BALANCED: El grupo prioriza la adquisición de recursos y programa las VM en zonas donde los recursos están disponibles, mientras distribuye las VM de la manera más uniforme posible en las zonas seleccionadas para minimizar el impacto de la falla zonal. Se recomienda para cargas de trabajo de entrega con alta disponibilidad o por lotes que no requieren ajuste de escala automático.
    • ANY: El grupo elige zonas para crear instancias de VM a fin de cumplir con la cantidad solicitada de VM dentro de las restricciones de recursos actuales y maximizar el uso de las reservas zonales no utilizadas. Se recomienda para cargas de trabajo por lotes que no requieren de alta disponibilidad.

API

Llama al método regionInstanceGroupManagers.patch. En el cuerpo de la solicitud, incluye la propiedad distributionPolicy y establece su campo targetShape.

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

{
    "distributionPolicy": {
        "targetShape": SHAPE
    }
}

Reemplaza lo siguiente:

  • 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 grupo de instancias.
  • SHAPE: Es la forma de distribución objetivo. Puede ser uno de los siguientes valores:
    • EVEN (configuración predeterminada): El grupo programa la creación y la eliminación de instancias de VM para lograr y mantener una cantidad uniforme de instancias administradas en las zonas seleccionadas. La distribución es uniforme cuando la cantidad de instancias administradas no difiere en más de 1 entre dos zonas. Se recomienda para cargas de trabajo de entrega con alta disponibilidad.
    • BALANCED: El grupo prioriza la adquisición de recursos y programa las VM en zonas donde los recursos están disponibles, mientras distribuye las VM de la manera más uniforme posible en las zonas seleccionadas para minimizar el impacto de la falla zonal. Se recomienda para cargas de trabajo de entrega con alta disponibilidad o por lotes que no requieren ajuste de escala automático.
    • ANY: El grupo elige zonas para crear instancias de VM a fin de cumplir con la cantidad solicitada de VM dentro de las restricciones de recursos actuales y maximizar el uso de las reservas zonales no utilizadas. Se recomienda para cargas de trabajo por lotes que no requieren de alta disponibilidad.

Visualiza la política de distribución de instancias configurada

Console

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

    Ir a la página Grupos de instancias

    En la página se detallan los grupos de instancias que tengas.
  2. Haz clic en el nombre del grupo de instancias que quieres examinar. Se abrirá una página con las propiedades del grupo de instancias y una lista de instancias incluidas en el grupo.
  3. Haz clic en Detalles.
  4. En la sección Ubicación, busca Forma de distribución objetivo.

gcloud

Ejecuta el comando gcloud compute instance-groups managed describe.

gcloud compute instance-groups managed describe INSTANCE_GROUP_NAME \
    --region REGION

Con el comando, se muestran los detalles del grupo, incluido el campo distributionPolicy.targetShape:

...
distributionPolicy:
  targetShape: BALANCED
  zones:
  - zone: https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f
  ...
name: my-group
region: https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1
...

API

Realiza una solicitud GET al método regionInstanceGroupManagers.get.

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

Reemplaza lo siguiente:

  • 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 grupo de instancias

La forma de distribución objetivo se muestra en el campo distributionPolicy.targetShape. Por ejemplo:

{
  "name": "my-instance-group",
  "distributionPolicy": {
    "targetShape": "BALANCED",
  },
  "targetSize": 50,
  ...
}

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 las VM del grupo sin afectar a otras VM en ejecución. Por ejemplo, puedes borrar una VM de trabajador por lotes después de completar el trabajo sin afectar a otros trabajadores.
  • Proteger las VM con cargas de trabajo con estado de la eliminación automática no deseada debido a la redistribución proactiva.
  • Configura la forma de distribución objetivo del MIG en BALANCED.

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 una región.
  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é configurado en Sin ajuste de escala automático.
    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 de una sola región en la que deseas 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 configura 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 lo siguiente:

  • 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 deseas 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. En la columna Nombre de la lista, haz clic en el nombre del grupo de instancias que deseas modificar.
  3. Haz clic en Editar para modificar este grupo de instancias administrado.
  4. 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.
  5. Establece la Redistribución de instancias en Desactivado para inhabilitar la redistribución automática.
  6. 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 configura 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 lo siguiente:

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

¿Qué sigue?