Distribuye instancias mediante MIG regionales

En esta página, se describe cómo crear grupos de instancias administrados (MIG) regionales. También puedes crear MIG zonales (de una sola zona). Los MIG zonales y los regionales admiten la reparación automática, el balanceo de cargas, el ajuste de escala automático, la actualización automática y las cargas de trabajo con estado.

Los MIG regionales proporcionan una mayor disponibilidad en comparación con los zonales porque las instancias administradas de un MIG regional se distribuyen de manera uniforme en varias zonas de una sola región. Sin embargo, los MIG regionales tienen diferentes limitaciones en comparación con los zonales.

Ya sea zonal o regional, el MIG basa cada una de sus instancias administradas en una plantilla de instancias común y una configuración con estado opcional. Cada instancia administrada es una entidad de datos dentro del MIG que contiene el estado actual y el estado deseado para una instancia de VM real. Los MIG mantienen la alta disponibilidad de las aplicaciones, ya que mantienen las VM disponibles de forma proactiva, es decir, en el estado RUNNING.

Para obtener más información sobre los grupos de instancias y sus características, consulta la descripción general de los grupos de instancias.

Antes de comenzar

Limitaciones

  • Cada MIG regional puede contener hasta 2,000 VM.
  • Cuando se actualiza un MIG, no se pueden especificar más de 1,000 VM en una sola solicitud.
  • No puedes usar MIG regionales con un balanceador de cargas que use la opción de balanceo de maxRate.
  • Cuando se usa con el ajuste de escala automático basado en métricas de Cloud Monitoring, se aplican las siguientes limitaciones:
    • A diferencia de los MIG de una sola zona, los MIG regionales no admiten el filtrado de métricas por instancia.
    • A diferencia de los MIG de una sola zona, los MIG regionales no admiten el ajuste de escala automático mediante métricas por grupo.

Elige grupos de instancias administrados regionales

Google recomienda usar MIG regionales en lugar de MIG zonales, porque te permiten distribuir la carga de tu aplicación en varias zonas, en lugar de limitar tu aplicación a una sola zona o administrar varios grupos de instancias en diferentes zonas. El uso de varias zonas constituye una protección contra fallas zonales y situaciones imprevistas en las que un grupo completo de instancias de una sola zona funciona mal. Si eso sucede, la aplicación puede continuar con la entrega de tráfico desde instancias que se ejecutan en otra zona de la misma región.

En el caso de que se produzca una falla zonal, o si un grupo de VM en una zona deja de responder, un MIG regional continúa admitiendo tus VM de la siguiente manera:

  • La cantidad de VM que forman parte del MIG regional en las zonas restantes continúa con la entrega de tráfico. No se agregan VM nuevas ni se redistribuyen VM existentes (a menos que configures el ajuste de escala automático).

  • Una vez que la zona con errores se recupera, el MIG retoma la entrega de tráfico desde esa zona.

Cuando desees diseñar aplicaciones sólidas y escalables, usa los MIG regionales.

Redistribución proactiva de instancias

De forma predeterminada, un MIG regional intenta mantener una distribución uniforme de las VM en las zonas de la región para maximizar la disponibilidad de tu aplicación en caso de una falla a nivel de zona.

Si borras o abandonas instancias de tu grupo y esto provoca una distribución desigual entre zonas, el grupo redistribuye las instancias de forma proactiva a fin de restablecer una distribución uniforme.

Para restablecer una distribución uniforme entre zonas, el grupo borra algunas VM en las zonas con más VM y agrega VM a las zonas con menos VM. El grupo elige de forma automática qué VM borrar.

La redistribución proactiva restablece una distribución uniforme entre zonas.
Ejemplo de redistribución proactiva

Por ejemplo, supongamos que tienes un MIG regional con 4 instancias distribuidas en 3 zonas: a, b y c. Si borras 3 instancias administradas en c, el grupo intenta un nuevo balanceo para que las instancias vuelvan a distribuirse de manera uniforme en las zonas. En este caso, el grupo borra 2 instancias (una de a y otra de b) y crea 2 instancias en la zona c, de modo que cada zona tenga 3 instancias y se logre una distribución uniforme. No hay forma de seleccionar qué instancias se borran. El grupo pierde capacidad de forma temporal mientras se inician las nuevas instancias.

Para evitar la redistribución automática de las VM, puedes desactivar la redistribución proactiva de instancias cuando creas o actualizas un MIG regional.

Esto es útil cuando necesitas hacer lo siguiente:

  • Cuando necesitas borrar o abandonar VM del grupo sin afectar otras instancias de 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.
  • Cuando necesitas proteger las VM que poseen apps con estado de la eliminación automática no deseada mediante la redistribución proactiva.
La inhabilitación de la redistribución proactiva puede afectar la capacidad durante una falla zonal.
Distribución desigual después de inhabilitar la redistribución proactiva

Si desactivas la redistribución proactiva de instancias, un MIG no agrega ni quita VM de forma proactiva a fin de lograr el balanceo, pero aún converge de manera oportunista hacia el balanceo durante las operaciones de cambio de tamaño, a fin de tratar cada operación de cambio de tamaño como una oportunidad para balancear el grupo. Por ejemplo, cuando se reduce el escalamiento, el grupo usa de forma automática el cambio de escalamiento como una oportunidad para quitar VM de zonas más grandes; y cuando se escala horizontalmente, el grupo aprovecha la oportunidad y agrega VM a zonas más pequeñas.

Aprovisiona el tamaño correcto del MIG para garantizar la disponibilidad

Varios eventos pueden ocasionar que una o más VM dejen de estar disponibles, y puedes mitigar este problema con diferentes servicios de Google Cloud:

Sin embargo, incluso si usas estos servicios, tus usuarios pueden experimentar problemas si muchas de tus VM no están disponibles en simultáneo.

A fin de estar preparado para el caso extremo en el que una zona falla o un grupo completo de VM deja de responder, Google recomienda el aprovisionamiento en exceso del MIG. Según las necesidades de la aplicación, el aprovisionamiento en exceso del grupo previene que tu sistema falle por completo si una zona o un grupo de VM deja de responder.

Google hace recomendaciones sobre el aprovisionamiento en exceso con la prioridad de mantener la aplicación disponible para tus usuarios. Estas recomendaciones incluyen el aprovisionamiento y el pago de más VM de las que tu aplicación podría necesitar en el día a día. Determina el aprovisionamiento en exceso según las necesidades de la aplicación y las limitaciones de costos.

Calcula el tamaño recomendado para el grupo

Compute Engine recomienda que aprovisiones suficientes VM para que, si ninguna de las VM de una zona está disponible, las VM restantes aún cumplan con la cantidad mínima de VM que necesitas.

Usa la siguiente tabla a fin de determinar el tamaño mínimo recomendado para el grupo:

Cantidad de zonas VM adicionales Total de VM recomendadas
2 +100% 200%
3 +50% 150%
4 +33% 133%

La cantidad recomendada de VM adicionales es inversamente proporcional a la cantidad de zonas en las que se encuentra el MIG. Por lo tanto, puedes reducir la cantidad de VM adicionales mediante la distribución uniforme de tu aplicación en una mayor cantidad de zonas.

Aprovisiona un MIG regional en tres zonas o más

Cuando creas un MIG regional en una región con al menos tres zonas, Google recomienda aprovisionar en exceso tu grupo en al menos un 50%. De forma predeterminada, un MIG regional crea VM en tres zonas. Tener VM en tres zonas te ayuda a preservar al menos 2/3 de tu capacidad de entrega, ya que, si falla una sola zona, las otras dos zonas de la región pueden continuar con la entrega de tráfico sin interrupción. Si se aprovisiona en exceso al 150%, puedes asegurarte de que, si se pierde 1/3 de la capacidad, las zonas restantes admitirán el 100% del tráfico.

Por ejemplo, si necesitas 20 VM en tu MIG en tres zonas, te recomendamos, como mínimo, un 50% adicional de VM. En este caso, el 50% de 20 son 10 VM más, lo que da un total de 30 VM en el grupo. Si creas un MIG regional con un tamaño de 30, el grupo distribuye las VM en las tres zonas como se muestra a continuación:

Zona Cantidad de VM
ejemplo-zona-1 10
ejemplo-zona-2 10
ejemplo-zona-3 10

Si alguna zona falla, aún tienes 20 VM que entregan tráfico.

Aprovisiona un MIG regional en dos zonas

Para aprovisionar tus VM en dos zonas en lugar de tres, Google recomienda duplicar la cantidad de VM. Por ejemplo, si necesitas 20 VM para tu servicio, distribuidas en dos zonas, te recomendamos configurar un MIG regional con 40 VM, de modo que cada zona tenga 20 VM. Si una sola zona falla, aún tienes 20 VM que entregan tráfico.

Zona Cantidad de VM
ejemplo-zona-1 20
ejemplo-zona-2 20

Si la cantidad de VM en tu grupo no se puede dividir con facilidad en dos zonas, Compute Engine divide el grupo de VM de manera uniforme y coloca las VM restantes de forma aleatoria en una de las zonas.

Aprovisiona un MIG regional en una zona

Puedes crear un MIG regional con solo una zona. Esto es similar a crear un MIG zonal.

No se recomienda crear un MIG regional de una sola zona porque ofrece la garantía mínima para aplicaciones con alta disponibilidad. Si la zona falla, todo tu MIG dejará de estar disponible, lo que podría interrumpir las operaciones de tus usuarios.

Selecciona zonas para tu grupo

La configuración predeterminada para un MIG regional es distribuir las VM de forma uniforme en tres zonas. Por varias razones, te recomendamos seleccionar zonas específicas para la aplicación. Por ejemplo, si necesitas GPU para tus VM, puedes seleccionar solo zonas que admitan GPU. Es posible que tengas discos persistentes que solo están disponibles en ciertas zonas, o bien que desees comenzar con VM en unas pocas zonas en lugar de hacerlo en tres zonas aleatorias dentro de una región.

Si deseas elegir la cantidad de zonas o las zonas específicas en las que debe ejecutarse el grupo, debes hacerlo cuando crees el grupo. Después de elegir zonas específicas durante la creación, no puedes cambiar ni actualizar las zonas más tarde.

  • Para seleccionar más de tres zonas dentro de una región, debes especificar las zonas individuales de forma explícita. Por ejemplo, para seleccionar las cuatro zonas dentro de una región, debes proporcionar las cuatro zonas de forma explícita en tu solicitud. Si no lo haces, Compute Engine selecciona tres zonas de forma predeterminada.

  • Para seleccionar dos o menos zonas en una región, debes especificar las zonas individuales de forma explícita. Incluso si la región solo contiene dos zonas, debes especificar explícitamente las zonas en tu solicitud.

Sin importar si eliges zonas específicas o si solo deseas seleccionar la región y permitir que Compute Engine cree VM en todas las zonas dentro de la región, las nuevas VM se distribuyen de manera uniforme en todas las zonas de forma predeterminada. Como práctica recomendada, asegúrate de aprovisionar suficientes VM para admitir tus apps en la cantidad especificada de zonas.

Crea un MIG regional

Crea un MIG regional en la herramienta de línea de comandos de gcloud, la consola o la API.

Si no hay suficiente capacidad en cada zona para admitir VM en el grupo, Compute Engine crea tantas VM como sea posible y continúa intentando crear las VM restantes cuando hay una cuota adicional disponible.

Debido a que vas a crear 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 creadas por este MIG regional.

De forma predeterminada, 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 o menos de tres zonas, o deseas elegir qué zonas se usan, proporciona una lista de zonas en tu solicitud. Si deseas obtener más información, consulta Selecciona zonas para tu grupo.

De forma predeterminada, la redistribución proactiva de instancias está habilitada. 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. Para obtener más información, consulta Redistribución proactiva de instancias.

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 subcomando instance-groups managed create con la marca --region. Por ejemplo, este comando crea un grupo de instancias regionales administrado en tres zonas dentro de la región us-east1:

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

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

gcloud compute instance-groups managed create example-rmig \
    --template example-template --base-instance-name example-instances \
    --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 --base-instance-name example-instances \
    --size 30 --instance-redistribution-type NONE

API

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

En la API, realiza una solicitud POST para el método regionInstanceGroupManagers.insert. En el cuerpo de la solicitud, incluye el nombre y el tamaño del grupo, el nombre base para las instancias del grupo y la URL de la plantilla de instancias que desees.

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"}
      ]
   }
}

Reemplaza lo siguiente:

  • project-id: Es el ID del proyecto para esta solicitud.
  • region: Es la región del grupo.
  • base-instance-name: Es el nombre para cada instancia de VM que se cree como parte del grupo. Por ejemplo, si example-instance fuera el nombre de instancia base, 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 el objetivo de cantidad de VM para el grupo.

Si deseas seleccionar zonas específicas, o bien crear VM en una región con menos o más de tres zonas, incluye la propiedad distributionPolicy en tu solicitud y proporciona una lista de zonas. Reemplaza [ZONE] por el nombre de la zona en la que se crearán las 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-size",
  "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

{

  "baseInstanceName": "example-instance",
  "instanceTemplate": "global/instanceTemplates/example-instance",
  "name": "example-rmig",
  "targetSize": 10,
  "distributionPolicy": {
      "zones": [
        {"zone": "zones/us-east1-b"},
        {"zone": "zones/us-east1-c"}
      ]
   }
}

Si deseas inhabilitar la redistribución proactiva de instancias, incluye la propiedad updatePolicy en tu solicitud y establece instanceRedistributionType en NONE.

No puedes inhabilitar la redistribución proactiva de instancias si el ajuste de escala automático está habilitado.

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",
  "updatePolicy": {
     "instanceRedistributionType": "NONE"
   },
}

Enumera instancias en un grupo de instancias administrado regional

A fin de obtener una lista de las instancias administradas de tu MIG regional, usa Cloud Console o el comando instance-groups managed list-instances en la herramienta de línea de comandos de gcloud, o bien haz una solicitud al método regionInstanceGroupManagers.listManagedInstances.

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 el nombre del MIG regional cuyas instancias deseas ver.

La página de detalles del grupo de instancias se carga con una lista de las instancias en el grupo.

gcloud

Ejecuta el comando instance-groups managed list-instances:

gcloud compute instance-groups managed list-instances instance-group-name --region region

Reemplaza lo siguiente:

  • instance-group-name: Es el nombre del MIG.
  • region: Es la región del MIG.

Por ejemplo, con el siguiente comando, se enumeran las instancias que forman parte de un MIG llamado example-rmig en la región us-east1:

gcloud compute instance-groups managed list-instances example-rmig --region us-east1

API

En la API, crea una solicitud GET vacía para el método regionInstanceGroupManagers.listManagedInstances.

GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers/instance-group-name

Por ejemplo:

GET https://compute.googleapis.com/compute/v1/projects/myproject/regions/us-east1/instanceGroupManagers/example-rmig

Actualiza un grupo de instancias administrado regional

Puedes actualizar un MIG regional mediante el actualizador. El actualizador te permite actualizar un subconjunto de tus VM o todas tus VM dentro de un grupo en función de una plantilla de instancias nueva. También puedes usar el actualizador para realizar actualizaciones canary y controlar la velocidad de tu actualización.

Del mismo modo, puedes cambiar la plantilla de instancias de un MIG sin actualizar las VM existentes con el comando set-instance-template en gcloud o el método setInstanceTemplate en la API. Ten en cuenta que, cuando se cambia la plantilla de instancias, no se actualizan de manera automática las VM existentes en función de la nueva plantilla. Debes volver a crear instancias individuales o ejecutar el actualizador para que se apliquen los cambios. Sin embargo, las nuevas VM del grupo usarán la nueva plantilla de instancias.

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

Si quitas o abandonas las instancias administradas del grupo y provocas un desbalanceo de VM entre las zonas, debes volver a balancear el grupo de forma manual antes de habilitar de nuevo la redistribución proactiva. Para volver a balancear de forma manual el grupo, cambia su tamaño o borra las instancias administradas de las zonas con más VM.

Cuando cambias el tamaño de un MIG que tiene desactivada la redistribución proactiva de instancias, el grupo aún converge de manera oportunista hacia el balanceo y trata cada operación de cambio de tamaño como una oportunidad para balancear el grupo: cuando el grupo crece, este siempre intenta agregar VM a las zonas con la menor cantidad de VM; cuando el grupo se reduce, este siempre quita VM de las zonas con la mayor cantidad de VM.

Ejemplo de cambio de tamaño manual de un grupo para lograr una redistribución uniforme

Usa la consola, la herramienta de gcloud o la API con el fin de crear un MIG regional con la redistribución proactiva de instancias inhabilitada o para activar o desactivar la redistribución de un grupo existente.

Crea un grupo con redistribución proactiva 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 template \
    --size target-size \
    --zones zones \
    --instance-redistribution-type NONE

Reemplaza lo siguiente:

  • instance-group-name: Es el nombre del MIG.
  • template: Es el nombre de la plantilla de instancias que se usará para el grupo.
  • target-size: Es el objetivo de tamaño 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

A fin de crear un MIG regional sin ajuste de escala automático ni redistribución proactiva de instancias, crea una solicitud POST para invocar el 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",
    "baseInstanceName": "base-instance-name",
    "instanceTemplate": "global/instanceTemplates/template",
    "targetSize": "target-size",
    "distributionPolicy": {
        "zones": [
            {"zone": "zones/zone"},
            {"zone": "zones/zone"}
        ]
    },
    "updatePolicy": {
        "instanceRedistributionType": "NONE"
    }
}

Replace the following:

  • project-id. The project ID for this request.
  • region. The region for the instance group.
  • instance-group-name. The name for the MIG.
  • base-instance-name. The name prefix for each instance. The instance name suffix is auto generated.
  • template. The name of the instance template to use for the group.
  • target-size. The target size of the instance group.
  • zone. The name of a zone in the single region where you need to deploy VMs.

Desactiva la redistribución proactiva de instancias

Antes de poder desactivar la redistribución proactiva de instancias, debes desactivar 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. Selecciona el MIG que deseas actualizar y haz clic en Editar grupo.
  3. Asegúrate de que el Modo de ajuste de escala automático esté establecido en Desactivado.
  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 lo siguiente:

  • instance-group-name: Es el nombre del MIG.
  • region Es la región del grupo de instancias.

API

En la  API, realiza una solicitud PATCH para el 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 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 activar la distribución proactiva, usa un comando similar al que empleas para desactivar la redistribución proactiva de instancias, 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.

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

En un MIG regional, no se puede activar 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 que se eliminen de forma automática y no intencionada VM en las zonas con más VM, acción que se activaría con el fin de lograr una distribución uniforme.

Realiza el ajuste de escala automático de un grupo de instancias regional administrado

Compute Engine ofrece ajuste de escala automático para MIG, lo que permite que tus grupos agreguen VM (escalamiento horizontal) o quiten VM (reducción del escalamiento) de forma automática según los aumentos o las reducciones en la carga.

Si habilitas el ajuste de escala automático para un MIG regional, la función se comporta de la siguiente manera:

  • Se aplica una política de ajuste de escala automático al grupo en su conjunto (no a zonas individuales). Por ejemplo, si habilitas el escalador automático con el fin de orientar el uso de CPU al 66%, el escalador automático realiza un seguimiento de todas las VM del grupo para mantener un uso promedio del 66% en todas las VM en todas las zonas.

  • El ajuste de escala automático intenta distribuir de forma uniforme las VM entre las zonas disponibles. En general, el escalador automático mantiene balanceado el tamaño de las zonas mediante el aumento de las zonas más pequeñas, con la expectativa de que la carga se redireccione desde las zonas más grandes, por ejemplo, a través de un balanceador de cargas. No recomendamos configurar un balanceador de cargas personalizado que prefiera una zona, ya que esto podría causar un comportamiento inesperado.

  • Si tu flujo de trabajo usa VM de manera uniforme en 3 zonas y una zona experimenta una falla, o si falla un grupo de VM dentro de una zona, puede que se pierda 1/3 de la capacidad, pero 2/3 de la capacidad permanecen en las otras zonas. Recomendamos que aprovisiones en exceso tu MIG regional con ajuste de escala automático para evitar sobrecargar los servidores activos durante el tiempo que se pierde una zona.

  • Si los recursos (por ejemplo, VM interrumpibles) no están disponibles en una zona de forma temporal, el grupo continúa intentando crear estas VM administradas en esa zona. Una vez que los recursos vuelven a estar disponibles, el grupo adquiere la cantidad deseada de VM en ejecución.

  • Si el balanceo de cargas está habilitado y los recursos no están disponibles en una zona, lo que causa un mayor uso de los recursos existentes en esa zona, es posible que se creen nuevas VM en zonas con tasas de uso más bajas, lo que puede dar como resultado una distribución desigual de forma temporal.

El escalador automático solo agrega VM a una zona en una cantidad de hasta 1/n del máximo especificado para el grupo, donde n es la cantidad de zonas aprovisionadas. Por ejemplo, si usas el valor predeterminado de 3 zonas, y si 15 es el valor de maxNumReplicas configurado para el ajuste de escala automático, el escalador automático solo puede agregar hasta 1/3 × 15 = 5 VM por zona para el grupo. Si una zona falla, el escalador automático solo escala verticalmente hasta 2/3 del maxNumReplicas en las dos zonas combinadas restantes.

Aprovisiona tu configuración de escalador automático

De igual modo en que aconsejamos aprovisionar en exceso un MIG, te recomendamos que aprovisiones en exceso la configuración de tu escalador automático para que suceda lo siguiente:

  • El objetivo de uso del ajuste de escala automático es 2/3 del objetivo de uso deseado.
  • A fin de adaptarse al objetivo de uso reducido, el escalador automático agregará más VM, por lo que deberías aumentar el maxNumReplicas para que sea un 50% más que el número que habrías establecido sin tener en cuenta el aprovisionamiento en exceso.

Por ejemplo, si esperas que 20 VM puedan manejar tus cargas máximas y el objetivo de uso es del 80%, configura el escalador automático según los siguientes valores:

  • 2/3 × 0.8 = 0.53 o 53% para el objetivo de uso en lugar del 80%
  • 3/2 × 20 = 30 para un número máximo de VM en lugar de 20

Esta configuración garantiza que, en el caso de una falla de una sola zona, tu MIG no se quede sin capacidad porque los 2/3 de VM restantes deberían ser capaces de manejar la carga aumentada de la zona sin conexión (ya que redujiste el objetivo de uso muy por debajo de su capacidad). El escalador automático también agregará VM nuevas hasta la cantidad máxima de VM que especificaste para mantener el objetivo de uso de 2/3.

Sin embargo, no debes confiar únicamente en el aprovisionamiento en exceso de tu MIG para manejar una carga mayor. Como práctica recomendada, Google recomienda que pruebes con regularidad tus aplicaciones en cuanto a la carga para asegurarte de que pueda manejar el aumento de uso que podría ocasionarse por una interrupción de zona que quita 1/3 de las VM.

Habilita 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. Si no tienes un grupo de instancias, crea uno. De lo contrario, haz clic en el nombre de un MIG regional existente de la lista.
  3. En la página de detalles del grupo de instancias, haz clic en el botón Editar grupo.
  4. En Ajuste de escala automático, marca Activado.
  5. Llena las propiedades para la configuración del ajuste de escala automático.
  6. Guarda los cambios.

gcloud

Con la herramienta de línea de comandos de gcloud, usa el subcomando set-autoscaling para habilitar el ajuste de escala automático regional, seguido de la marca --region. Para obtener más información sobre cómo crear un escalador automático, lee la documentación sobre el ajuste de escala automático.

Por ejemplo, en los siguientes fragmentos se configura un escalador automático para un grupo de instancias de ejemplo. Reemplaza us-east1 por la región de tu grupo de instancias administrado y example-rmig por el nombre del grupo de instancias administrado regional:

gcloud compute instance-groups managed set-autoscaling example-rmig \
    --target-cpu-utilization 0.8 --max-num-replicas 5 --region us-east1

API

Para configurar el ajuste de escala automático regional en la API, llama al [método regionAutoscalers.insert[(/compute/docs/reference/rest/v1/regionAutoscalers/insert)

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/regionAutoscalers/

El cuerpo de tu solicitud debe contener los campos name, target y autoscalingPolicy. autoscalingPolicy debe definir cpuUtilization y maxNumReplicas.

Para facilitar la identificación, te recomendamos asignar un nombre al recurso del escalador automático en función del recurso del MIG que lo usa.

{
 "name": "<var>autoscaler-name</var>",
 "target": "regions/us-east1/instanceGroupManagers/<var>instance-group-name</var>",
 "autoscalingPolicy": {
    "maxNumReplicas": <var>max-number-of-instances</var>,
    "cpuUtilization": {
       "utilizationTarget": <var>target-utilization</var>
     },
    "coolDownPeriodSec": <var>seconds</var>
  }
}

Por ejemplo:

{
 "name": "example-rmig",
 "target": "regions/us-east1/instanceGroupManagers/example-rmig",
 "autoscalingPolicy": {
    "maxNumReplicas": 10,
    "cpuUtilization": {
       "utilizationTarget": 0.8
     },
    "coolDownPeriodSec": 30
  }
}

Actualiza un escalador automático

Puedes actualizar un escalador automático regional como lo harías con un escalador automático zonal. Lee la documentación sobre cómo actualizar un escalador automático.

Agrega un grupo de instancias regionales administrado a un balanceador de cargas

El balanceo de cargas de Google Cloud Platform usa grupos de instancias para entregar tráfico. En función del tipo de balanceador de cargas que uses, puedes agregar grupos de instancias a un grupo de destino o un servicio de backend. Para leer más sobre los grupos de instancias adminis´trados y el balanceo de cargas, consulta la descripción general de los grupos de instancias.

Puedes asignar un MIG regional como destino de un servicio de backend en el balanceo de cargas externo y el balanceo de cargas interno, o como parte de un grupo de destino en el balanceo de cargas de red.

En el balanceo de cargas HTTP(S), solo se admiten maxRatePerInstance y maxUtilization para los MIG regionales.

Agrega un grupo de instancias administrado regional a un servicio de backend

Se necesita un servicio de backend para crear los siguientes tipos de servicios de balanceo de cargas:

  • Balanceo de cargas HTTP(S) externo
  • Balanceo de cargas de HTTP(S) interno
  • Balanceo de cargas de proxy SSL
  • Balanceo de cargas de proxy TCP
  • Balanceo de cargas TCP/UDP interno

Un servicio de backend puede contener varios backends. Un grupo de instancias es un tipo de backend. Las instancias en el grupo de instancias responden al tráfico del balanceador de cargas. El servicio de backend, a su vez, detecta las instancias que puede usar, la cantidad de tráfico que puede manejar y el tráfico que maneja en el momento. Además, el servicio de backend supervisa la verificación de estado y no envía conexiones nuevas a instancias en mal estado.

Usa estas instrucciones para agregar un grupo de instancias administrado a un servicio de backend.

Console

  1. Ve a la página Balanceo de cargas en Cloud Console.

    Ir a la página Balanceo de cargas

  2. Haz clic en el nombre del servicio de backend al que quieres agregar el grupo de instancias administrado.
  3. Haz clic en Editar.
  4. Haz clic en +Agregar backend.
  5. Selecciona el grupo de instancias que deseas agregar.
  6. Edita cualquier configuración opcional que quieras cambiar.
  7. Guarda los cambios.

gcloud

Con la herramienta de línea de comandos de gcloud, usa el comando add-backend:

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
        --instance-group=INSTANCE_GROUP \
        [--instance-group-region=INSTANCE_GROUP_REGION | --instance-group-zone=INSTANCE_GROUP_ZONE] \
        --balancing-mode=BALANCING_MODE

Los parámetros adicionales son obligatorios según el modo del balanceo del grupo de instancias administrado. Para obtener más información, consulta el comando add-backend en el SDK.

API

Para agregar un servicio de backend con la API de REST, consulta backendServices.

Agrega un grupo de instancias regionales administrado a un grupo de destino

Un grupo de destino es un objeto que contiene una o más instancias de máquinas virtuales. El grupo de destino se usa en el balanceo de cargas de red, en el que el balanceador de cargas de red reenvía las solicitudes del usuario al grupo de destino conectado. Las instancias que forman parte de ese grupo de destino entregan estas solicitudes y muestran una respuesta. Puedes agregar un grupo de instancias administrado a un grupo de destino para que cuando se agreguen o quiten instancias del grupo de instancias, el grupo de destino también se actualice automáticamente con los cambios.

El grupo de destino debe existir antes de que puedas agregar un grupo de instancias administrado a uno de destino. Para obtener más información, consulta la documentación sobre Agrega un grupo de destino.

Sigue estas instrucciones para agregar un grupo de instancias administrado existente a un grupo de destino. Así se agregan todas las instancias de VM que forman parte del grupo de instancias administrado al grupo de destino.

Console

  1. Ve a la página Grupos de destino en Cloud Console.

    Ir a la página Grupos de destino

  2. Haz clic en el grupo de destino en el que quieres agregar el grupo de instancias.
  3. Haz clic en el botón Editar.
  4. Desplázate hacia la sección Instancias de VM y haz clic en Seleccionar grupos de instancias.
  5. Selecciona un grupo de instancias en el menú desplegable.
  6. Guarda los cambios.

gcloud

Con la herramienta de línea de comandos de gcloud, usa el comando set-target-pools:

gcloud beta compute instance-groups managed set-target-pools [INSTANCE_GROUP] \
    --target-pools [TARGET_POOL,..] [--region REGION]

En el ejemplo anterior, se ilustra lo siguiente:

  • [INSTANCE_GROUP] es el nombre del grupo de instancias.
  • [TARGET_POOL] es el nombre de uno o más grupos de destino en los que se agrega el grupo de instancias.
  • [REGION] es la región del grupo de instancias.

API

En la API, realiza una solicitud POST al siguiente URI:

POST https://compute.googleapis.com/compute/beta/projects/[PROJECT_ID]/regions/[REGION]/regionInstanceGroupManagers/[INSTANCE_GROUP]/setTargetPools

En el ejemplo anterior, se ilustra lo siguiente:

  • [PROJECT_ID] es el ID del proyecto de esta solicitud.
  • [REGION] es la región del grupo de instancias.
  • [INSTANCE_GROUP] es el nombre del grupo de instancias.

El cuerpo de la solicitud debe contener una lista de URI para los grupos de destino en los que quieres agregar este grupo. Por ejemplo:

{
  "targetPools": [
    "regions/us-central1/targetPools/example-targetpool-1",
    "regions/us-central1/targetPools/example-targetpool-2"
  ]
}

Simula una interrupción de zona para un grupo de instancias administrado regional

A fin de probar que tu MIG regional está suficientemente aprovisionado en exceso y puede sobrevivir a una interrupción de zona, puedes usar el siguiente ejemplo para simular una falla de una sola zona.

Esta secuencia de comandos se detiene y, luego, 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 línea de comandos 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 que tienen nombres que comienzan con instance-base-name:

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

    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