Distribuye instancias mediante grupos de instancias regionales administrados

En esta página, se describe cómo crear grupos de instancias administrados con instancias que se distribuyen en una sola región.

A diferencia de los grupos de instancias zonales administrados que pertenecen a una sola zona, los grupos de instancias regionales administrados mejoran la disponibilidad de tu aplicación, ya que distribuyen tus instancias en varias zonas dentro de una sola región. Por ejemplo, de manera predeterminada, un grupo de instancias regionales administrado de la región us-east1 mantiene una distribución uniforme de instancias en tres zonas dentro de la región: us-east1-b, us-east1-c y us-east1-d.

En las regiones que contienen más de tres zonas, el grupo de instancias regionales administrado selecciona tres de esas zonas para crear instancias. También puedes realizar una elección selectiva de las zonas para crear instancias, o bien elegir crear instancias en regiones con menos de tres zonas. Por ejemplo, para acelerar las cargas de trabajo con GPU, selecciona zonas que admitan GPU.

Al igual que los grupos de instancias zonales administrados, los grupos de instancias regionales administrados admiten el ajuste de escala automático y el balanceo de cargas internas y externas.

Antes de comenzar

Limitaciones

  • Cada grupo de instancias regionales administrado puede contener hasta 2,000 instancias.
  • Cuando se actualiza un grupo de instancias administrado, no se pueden especificar más de 1,000 instancias en una sola solicitud.
  • No puedes usar grupos de instancias regionales administrados con un balanceador de cargas que use la opción de balanceo maxRate.

Elige grupos de instancias regionales administrados

Google recomienda los grupos de instancias regionales administrados frente a los grupos de instancias zonales administrados 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. Esta replicación protege contra fallas zonales y escenarios imprevistos en los que un grupo completo de instancias de una sola zona funciona mal. Si eso sucede, tu 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 una falla de zona, o bien si un grupo de instancias de una zona deja de responder, un grupo de instancias regionales administrado continúa con la admisión de tus instancias de VM de la siguiente manera:

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

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

Cuando desees diseñar aplicaciones robustas y escalables, usa los grupos de instancias regionales administrados.

Redistribución proactiva de instancias

De manera predeterminada, un grupo de instancias regionales administrado intenta mantener una distribución uniforme de las instancias de VM en las zonas de la región para maximizar la disponibilidad de tu aplicación en caso de una falla en el nivel de la zona.

Si decides realizar operaciones de delete o abandon para instancias de VM de tu grupo y eso causa una distribución desigual entre zonas, el grupo redistribuye proactivamente las instancias para restablecer una distribución uniforme.

Para restablecer una distribución uniforme entre zonas, el grupo borra instancias en zonas con más instancias de VM y agrega nuevas instancias en zonas con menos instancias de VM. El grupo elige automáticamente qué instancias borrar.

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

Por ejemplo, supongamos que tienes un grupo de instancias regionales administrado con 4 instancias en cada zona: us-central1-a, us-central1-b y us-central1-c. Si quitas 3 instancias de VM en us-central1-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 cada una de us-central1-a y us-central1-b) y crea 2 instancias en la zona us-central1-c, de modo que cada zona tenga 3 instancias y se logre una distribución uniforme. No hay forma de seleccionar qué instancia se borra.

Para evitar la redistribución automática de tus instancias, puedes desactivar la redistribución proactiva de instancias cuando creas o actualizas un grupo de instancias regionales administrado.

Esto es útil cuando necesitas hacer lo siguiente:

  • Deseas borrar o abandonar VM del grupo sin afectar otras instancias de VM en ejecución. Por ejemplo, puedes borrar una instancia de VM de trabajador por lotes después de completar el trabajo sin afectar a otros trabajadores.
  • Deseas proteger las VM que poseen aplicaciones 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 grupo de instancias administrado no agrega ni quita proactivamente instancias para 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 automáticamente el cambio de escalamiento como una oportunidad para quitar instancias de zonas más grandes; y cuando se aumenta el escalamiento, el grupo aprovecha la oportunidad con el fin de agregar instancias a zonas más pequeñas.

Aprovisiona el tamaño correcto del grupo de instancias administrado para garantizar la disponibilidad

Una variedad de eventos puede hacer que una o más instancias no estén disponibles. Puedes ayudar a mitigar este problema mediante varios servicios de GCP si haces lo siguiente:

Sin embargo, incluso si utilizas estos servicios, tus usuarios pueden experimentar problemas si muchas de tus instancias no están disponibles de forma simultánea.

A fin de estar preparado para el caso extremo en el que una zona falla o un grupo completo de instancias deja de responder, recomendamos encarecidamente el aprovisionamiento en exceso de tu grupo de instancias administrado. En función de las necesidades de tu aplicación, el aprovisionamiento en exceso de tu grupo evita que tu sistema falle por completo si una zona o un grupo de instancias deja de responder.

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

Estima el tamaño recomendado del grupo de instancias

Compute Engine recomienda que aprovisiones suficientes instancias de modo que, si todas las instancias en una zona no están disponibles, las instancias restantes aún cumplan con la cantidad mínima de instancias que necesitas.

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

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 tu grupo de instancias administrado. 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 grupo de instancias regionales administrado en tres o más zonas

Cuando creas un grupo de instancias regionales administrado en una región con al menos tres zonas, Google recomienda el aprovisionamiento en exceso de tu grupo de instancias en al menos un 50%. De forma predeterminada, un grupo de instancias regionales administrado crea instancias en tres zonas. Tener instancias de VM en tres zonas ya te ayuda a preservar al menos 2/3 de tu capacidad de servicio; y 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 instancias de VM en tu grupo de instancias administrado en tres zonas, recomendamos —como mínimo— un 50% adicional de instancias. En este caso, el 50% de 20 son 10 instancias más para un total de 30 instancias en el grupo de instancias. Si creas un grupo de instancias regionales administrado con un tamaño de 30, el grupo distribuye sus instancias de la manera más uniforme posible en las tres zonas como se muestra a continuación:

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

En el caso de que falle una zona, aún tienes 20 instancias que entregan tráfico.

Aprovisiona un grupo de instancias regionales administrado en dos zonas

Para aprovisionar tus instancias en dos zonas en lugar de tres, Google recomienda duplicar la cantidad de instancias. Por ejemplo, si necesitas 20 instancias de VM para tu servicio, distribuidas en dos zonas, recomendamos que configures un grupo de instancias regionales administrado con 40 instancias, de modo que cada zona tenga 20 instancias cada una. Si falla una sola zona, todavía tienes 20 instancias que entregan tráfico.

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

Si la cantidad de instancias en tu grupo no es fácilmente divisible en dos zonas, Compute Engine divide las instancias de la manera más uniforme posible y coloca aleatoriamente las instancias restantes en una de las zonas.

Aprovisiona un grupo de instancias regionales administrado en una zona

Es posible crear un grupo de instancias regionales administrado con solo una zona. Esto es similar a crear un grupo de instancias zonales administrado.

No se recomienda crear un grupo de instancias regionales administrado de una sola zona porque ofrece la garantía mínima para aplicaciones con alta disponibilidad. Si la zona falla, todo tu grupo de instancias administrado podría no estar disponible y, por tanto, el servicio a tus usuarios podría verse interrumpido.

Selecciona zonas para tu grupo

La configuración predeterminada para un grupo de instancias regionales administrado es distribuir instancias de la manera más uniforme posible en tres zonas. Por varias razones, es probable que desees seleccionar zonas específicas para tu aplicación. Por ejemplo, si necesitas GPU para tus instancias, 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 instancias de VM en solo 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 se debe ejecutar el grupo de instancias, debes hacerlo cuando creas el grupo por primera vez. Después de elegir zonas específicas durante la creación, no puedes cambiar o 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, si deseas seleccionar las cuatro zonas dentro de una región, debes proporcionar las cuatro zonas explícitamente en tu solicitud. Si no lo haces, Compute Engine selecciona tres zonas de manera predeterminada.

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

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

Crea un grupo de instancias regionales administrado

Crea un grupo de instancias regionales administrado en la herramienta de línea de comandos de gcloud, Console o la API.

Si no hay suficiente capacidad en cada zona para admitir instancias del grupo de instancias, Compute Engine crea tantas instancias como sea posible y volverá a intentar crear las instancias restantes cuando haya una cuota adicional disponible.

Debido a que vas a crear un grupo de instancias regionales administrado, 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 adjuntarse a las instancias creadas por este grupo de instancias regionales administrado.

De manera predeterminada, si no especificas explícitamente zonas individuales en tu solicitud, Compute Engine elige automáticamente tres zonas para crear instancias. Si necesitas crear instancias en más o en menos de tres zonas, o bien si deseas elegir qué zonas se utilizan, 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 manualmente la cantidad de instancias en cada zona, puedes inhabilitar la redistribución proactiva de instancias y anular la configuración del ajuste de escala automático. Para obtener más información, consulta sobre la redistribución proactiva de instancias.

Console

  1. Ve a la página Grupos de instancias en GCP Console.

    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 desea 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 instancias para este grupo. Recuerda aprovisionar suficientes instancias para admitir tu aplicación si ocurre una falla de zona.
  9. Continúa con el resto del proceso de creación del grupo de instancias administrado.

gcloud

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

gcloud compute instance-templates create example-template

A continuación, usa el subcomando instance-groups managed create con el indicador --region. Por ejemplo, el siguiente 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 debe usar el grupo, proporciona el indicador --zones de la siguiente manera:

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 el indicador --instance-redistribution-type en NONE. Debido a que esta característica está en versión Beta, debes usar la herramienta de gcloud beta. No puedes inhabilitar la redistribución proactiva de instancias si el ajuste de escala automático está habilitado.

gcloud beta compute instance-groups managed create example-rmig \
    --template example-template --base-instance-name example-instances \
    --size 30 --instance-redistribution-type NONE

Nota: Si inhabilitas la redistribución proactiva de instancias, usa el componente gcloud beta, ya que la función de inhabilitación de la redistribución proactiva de instancias está actualmente en versión Beta.

API

Todos los grupos de instancias administrados 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://www.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]"}
      ]
   }
}

en la que:

  • [PROJECT_ID] es el ID del proyecto de esta solicitud.
  • [REGION] es la región para el grupo de instancias.
  • [BASE_INSTANCE_NAME] es el nombre de la instancia para cada instancia que se crea como parte del grupo de instancias. Por ejemplo, un nombre de instancia base de example-instance crearía instancias que tienen nombres como example-instance-[RANDOM_STRING], en el que [RANDOM_STRING] es generado por el servidor.
  • [INSTANCE_TEMPLATE_NAME] es la plantilla de instancias para usar.
  • [TARGET_SIZE] es la cantidad de instancias de destino del grupo de instancias.

Si deseas seleccionar zonas específicas, o bien crear instancias 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 deseas crear instancias.

POST https://www.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, lo siguiente crea un grupo de instancias llamado example-rmig con 10 instancias distribuidas entre us-east1-b y us-east1-c:

POST https://www.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 tu instanceRedistributionType en NONE. Debido a que esta función está en versión Beta, debes usar la API de Beta. No puedes inhabilitar la redistribución proactiva de instancias si el ajuste de escala automático está habilitado.

POST https://www.googleapis.com/compute/beta/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 regionales administrado

Si deseas obtener una lista de instancias para tu grupo de instancias regionales administrado, usa GCP 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. Ve a la página Grupos de instancias en GCP Console.

    Ir a la página Grupos de instancias

  2. Haz clic en el grupo de instancias regionales administrado del que deseas ver las instancias.

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

gcloud

Ejecuta el comando instance-groups managed list-instances siguiente:

gcloud compute instance-groups managed list-instances [INSTANCE_GROUP_NAME] --region [REGION]

en el que:

  • [INSTANCE_GROUP_NAME] es el nombre del grupo de instancias.
  • [REGION] es la región del grupo de instancias.

Por ejemplo, el comando siguiente enumera las instancias que forman parte de un grupo de instancias 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, haz una solicitud GET vacía para el método regionInstanceGroupManagers.listManagedInstances.

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

Por ejemplo:

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

Actualiza un grupo de instancias regionales administrado

Puedes actualizar un grupo de instancias regionales administrado mediante el actualizador de grupo de instancias. El actualizador te permite actualizar un subconjunto de tus instancias o todas tus instancias dentro de un grupo a una nueva plantilla de instancias. También puedes usar el actualizador para realizar actualizaciones Canary y controlar la velocidad de tu actualización.

Del mismo modo, también puedes cambiar la plantilla de instancias de un grupo de instancias sin actualizar las instancias existentes mediante el comando set-instance-template en gcloud o el método setInstanceTemplate de la API. Ten en cuenta que el cambio de la plantilla de instancias no actualiza automáticamente las instancias existentes a la nueva plantilla de instancias. Debes recrear instancias individuales o ejecutar el actualizador de grupo de instancias para aplicar los cambios. Sin embargo, las nuevas instancias de VM del grupo utilizará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 par de instancias en las zonas seleccionadas de la región. Esta configuración maximiza la disponibilidad de tu aplicación en caso de una falla en el nivel de la zona.

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

  • Borrar o abandonar manualmente las instancias de VM del grupo sin afectar otras instancias en ejecución
  • Borrar automáticamente una instancia de trabajador por lotes cuando finaliza el trabajo sin afectar a otros trabajadores
  • Proteger las instancias 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 de VM del grupo y provocas un desbalanceo de instancias entre las zonas, debes volver a balancear el grupo de forma manual antes de habilitar nuevamente la redistribución proactiva. Para volver a balancear manualmente el grupo, cambia su tamaño o quita instancias de zonas con más instancias.

Cuando cambias el tamaño de un grupo de instancias administrado 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 instancias a las zonas con la menor cantidad de VM; cuando el grupo se reduce, este siempre quita instancias de las zonas con la mayor cantidad de instancias.

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

Usa Console, la herramienta de gcloud o la API a fin de crear un grupo de instancias con la redistribución proactiva de instancias inhabilitada, o bien con el propósito de activar o desactivar la redistribución proactiva de instancias para un grupo existente.

Crear un grupo con redistribución proactiva inhabilitada

Console

  1. Ve a la página Grupos de instancias en GCP Console.

    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 Desactivado.
  7. Elige una plantilla de instancias para el grupo o crea una nueva.
  8. Especifica la cantidad de instancias para este grupo. Recuerda aprovisionar suficientes instancias para admitir tu aplicación si ocurre una falla de zona.
  9. Continúa con el resto del proceso de creación del grupo de instancias administrado.

gcloud

Para crear un grupo de instancias regionales administrado nuevo sin redistribución proactiva de instancias, usa el comando gcloud beta compute instance-groups managed create con el indicador --instance-redistribution-type establecido en NONE.

gcloud beta compute instance-groups managed create [INSTANCE_GROUP_NAME] \
    --template [TEMPLATE] \
    --size [SIZE] \
    --zones [ZONES] \
    --instance-redistribution-type NONE

en el que:

  • [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.
  • [SIZE] es el tamaño de destino del grupo de instancias.
  • [ZONES] es la lista de zonas de una sola región en la que necesitas implementar instancias de VM.

Por ejemplo:

gcloud beta 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 grupo de instancias regionales administrado 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://www.googleapis.com/compute/beta/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"
    }
}

en la que:

  • [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.
  • [BASE_INSTANCE_NAME] es el prefijo del nombre de cada instancia. El sufijo del nombre de instancia se genera automáticamente.
  • [TEMPLATE] es el nombre de la plantilla de instancias que se utilizará para el grupo.
  • [TARGET_SIZE] es el tamaño de destino del grupo de instancias.
  • [ZONE] es el nombre de una zona en la única región en la que necesitas implementar instancias de VM.

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. Ve a la página Grupos de instancias en GCP Console.

    Ir a la página Grupos de instancias

  2. Selecciona el grupo de instancias para 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 para un grupo de instancias regionales administrado sin ajuste de escala automático, usa el comando compute instance-groups managed update con el indicador --instance-redistribution-type establecido en NONE.

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

en el que:

  • [INSTANCE_GROUP_NAME] es el nombre del grupo de instancias.
  • [REGION] es la región del grupo de instancias.

Nota: Si inhabilitas la redistribución proactiva de instancias, usa el componente de gcloud beta, ya que la inhabilitación de la redistribución de instancias está actualmente en versión Beta.

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://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/regions/[REGION]/instanceGroupManagers/[INSTANCE_GROUP]

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

en la que:

  • [PROJECT_ID] es el ID del proyecto de esta solicitud.
  • [REGION] es la región para el grupo de instancias.
  • [INSTANCE_GROUP] es el nombre de un grupo de instancias administrado sin ajuste de escala automático.

Nota: Si inhabilitas la redistribución proactiva de instancias, usa la API en versión Beta porque la inhabilitación de la redistribución de instancias está actualmente en versión Beta.

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 con el tipo de redistribución de instancias establecido en PROACTIVE.

Si quitaste o abandonaste de forma manual algunas instancias y esto provocó una distribución desigual de instancias en toda la región, entonces, 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 instancias de VM entre dos zonas no debe exceder 1 VM.

Puedes lograr una distribución uniforme de instancias entre zonas manualmente mediante la eliminación de VM de zonas con más instancias o a través del cambio de tamaño del grupo para llenar las zonas con menos instancias hasta que la distribución sea uniforme.

Un grupo de instancias regionales administrado no permite activar la redistribución proactiva de instancias cuando las instancias se distribuyen de manera desigual entre las zonas (la diferencia en la cantidad de instancias de VM entre dos zonas es de 2 o más VM). Esto es para evitar una eliminación automática involuntaria de VM de zonas con más instancias, lo que se activaría para lograr una distribución uniforme.

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

Compute Engine ofrece el ajuste de escala automático para los grupos de instancias administrados, lo que permite que tus grupos de instancias agreguen o quiten instancias automáticamente en función de los aumentos o disminuciones de la carga.

Si habilitas el ajuste de escala automático para un grupo de instancias regionales administrado, la característica 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 a fin de alcanzar el 66% de uso de CPU, el escalador automático realiza un seguimiento de todas las instancias del grupo para mantener un promedio de uso del 66% en las instancias de todas las zonas.

  • El ajuste de escala automático intenta distribuir uniformemente las instancias entre las zonas disponibles siempre que sea posible. 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 instancias de manera uniforme en 3 zonas y una zona experimenta una falla, o falla un grupo de instancias dentro de una zona, se puede perder 1/3 de la capacidad, pero 2/3 de la capacidad permanecen en las otras zonas. Recomendamos que aprovisiones en exceso tu grupo de instancias regionales administrado 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, instancias interrumpibles) no están disponibles temporalmente en una zona, el grupo continúa intentando crear estas instancias administradas en esa zona. Una vez que los recursos vuelven a estar disponibles, el grupo adquiere la cantidad deseada de instancias en ejecución.

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

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

Aprovisiona tu configuración de escalador automático

Al igual que en el caso del consejo sobre el aprovisionamiento en exceso de un grupo de instancias administrado, aprovisiona en exceso la configuración de tu escalador automático para que suceda lo siguiente:

  • El uso de destino del ajuste de escala automático es 2/3 del objetivo de uso deseado.
  • Para adaptarse al objetivo de uso menor, el escalador automático agregará más instancias, por lo que debes aumentar maxNumReplicas a fin de que sea un 50% más que la cantidad que habrías establecido sin tener en cuenta el aprovisionamiento en exceso.

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

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

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

Sin embargo, no debes confiar únicamente en el aprovisionamiento en exceso de tus grupos de instancias administrados para manejar una carga mayor. Como práctica recomendada, Google recomienda que pruebes regularmente tus aplicaciones de carga para asegurarte de que puedas manejar el mayor uso que podría ser causada por una interrupción de zona que quita 1/3 de las instancias.

Habilita el ajuste de escala automático

Console

  1. Ve a la página Grupos de instancias en GCP Console.

    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 grupo de instancias regionales administrado 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, utiliza el subcomando set-autoscaling para habilitar el ajuste de escala automático regional, seguido por el indicador --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, los fragmentos siguientes configuran el escalador automático para un grupo de instancias llamado example-rmig. Reemplaza us-east1 por la región de tu grupo de instancias administrado, example-autoscaler por el nombre de tu escalador automático deseado y example-rmig por el nombre del grupo de instancias regionales administrado, como se muestra a continuación:

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

API

A fin de configurar el ajuste de escala automático regional en la API, realiza una solicitud POST para la siguiente URL, con tu propio ID del proyecto y la región de tu grupo de instancias administrado de la siguiente manera:

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

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

{
 "name": "[AUTOSCALER_NAME]",
 "target": "regions/us-east1/instanceGroupManagers/[INSTANCE_GROUP_NAME]",
 "autoscalingPolicy": {
    "maxNumReplicas": [MAX_NUM_INSTANCES],
    "cpuUtilization": {
       "utilizationTarget": [TARGET_UTILIZATION]
     },
    "coolDownPeriodSec": [SECONDS]
  }
}

Por ejemplo:

{
 "name": "example-autoscaler",
 "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 utiliza grupos de instancias para entregar tráfico. En función del tipo de balanceador de cargas que utilices, puedes agregar grupos de instancias a un grupo de destino o servicio de backend. Para leer más sobre los grupos de instancias administrados y el balanceo de cargas, consulta la descripción general de los grupos de instancias.

Puedes asignar un grupo de instancias regionales administrado como destino de un servicio de backend en el balanceo de cargas externas y el balanceo de cargas internas, 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 grupos de instancias regionales administrados.

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

Un servicio de backend es necesario para crear un HTTP(S), un proxy SSL, un proxy TCP o un balanceador de cargas interno. Un servicio de backend puede contener varios backends. Un grupo de instancias es un tipo de backend. Las instancias del grupo 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, este servicio supervisa la verificación de estado y no envía conexiones nuevas a instancias en mal estado.

Si quieres obtener instrucciones para agregar un grupo de instancias a un servicio de backend, consulta la sección sobre cómo agregar grupos de instancias a un servicio de backend.

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 utiliza 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. Esto agrega 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 GCP 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, utiliza el comando set-target-pools:

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

donde:

  • [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://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/regions/[REGION]/regionInstanceGroupManagers/[INSTANCE_GROUP]/setTargetPools

donde:

  • [PROJECT_ID] es el ID del proyecto de esta solicitud.
  • [REGION] es la región para el 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 regionales administrado

Para probar que tu grupo de instancias regionales administrado está aprovisionado en exceso de manera suficiente y puede sobrevivir a una interrupción de zona, puedes usar el siguiente ejemplo con el fin de 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 propio escenario de falla y recuperación.

  1. Implementa y ejecuta esta secuencia de comandos continuamente en cada instancia de máquina virtual del grupo de instancias. 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 (se limita la falla a solo una zona).
    • failed_instance_names: Elige las instancias que se dejarán sin conexión por nombre (para limitar la falla a solo nombres de instancias que contengan esta string).

    Puedes establecer estos metadatos con la herramienta de línea de comandos de gcloud. Por ejemplo, el siguiente comando establece la interrupción de zona en la zona europe-west1-b y afecta a las instancias que tienen nombres que comienzan con instance-base-name de la siguiente manera:

    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 escenarios de falla que puedes ejecutar con esta secuencia de comandos:

  • Detén la aplicación por completo para ver cómo responde el grupo de instancias administrado.
  • Haz que tus instancias se muestren como "poco saludables" en las verificaciones de estado de balanceo de cargas.
  • Modifica iptables para bloquear parte del tráfico hacia y desde la instancia.
  • Apaga las instancias de la máquina virtual. De forma predeterminada, el grupo de instancias regionales administrado lo volverá a crear poco después, pero la nueva encarnación se cerrará inmediatamente en cuanto se ejecute la secuencia de comandos y siempre que se establezcan los valores de metadatos. Esto dará como resultado un bucle de bloqueo.

Pasos siguientes

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Compute Engine