Escalamiento según la capacidad de entrega del balanceo de cargas


En este documento, se describe cómo escalar un grupo de instancias administrado (MIG) según la capacidad de entrega de un balanceador de cargas de aplicaciones externo o un balanceador de cargas de aplicaciones interno. Esto significa que el ajuste de escala automático agrega o quita instancias de VM del grupo cuando el balanceador de cargas indica que el grupo alcanzó una fracción configurable de su plenitud, en donde su plenitud se define como la capacidad objetivo del modo de balanceo seleccionado del grupo de instancias del backend.

También puedes escalar un MIG según su uso de CPU o las métricas de Monitoring.

Limitaciones

Puedes ajustar automáticamente la escala de un grupo de instancias administrado según la capacidad de entrega de un balanceador de cargas de aplicaciones externo y un balanceador de cargas de aplicaciones interno. No se admiten otros tipos de balanceadores de cargas.

Antes de comenzar

  • Revisa las limitaciones del escalador automático.
  • Lee acerca de los aspectos básicos del escalador automático.
  • Si aún no lo hiciste, configura la autenticación. La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine de la siguiente manera.

    Selecciona la pestaña para saber cómo planeas usar las muestras en esta página:

    Consola

    Cuando usas la consola de Google Cloud para acceder a los servicios y las APIs de Google Cloud, no necesitas configurar la autenticación.

    gcloud

    1. Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init
    2. Configura una región y una zona predeterminadas.

    REST

    Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.

      Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init

Escalamiento según la capacidad de entrega de balanceo de cargas de HTTP(S)

Compute Engine proporciona compatibilidad para el balanceo de cargas dentro de tus grupos de instancias. Puedes usar el ajuste de escala automático junto con el balanceo de cargas si configuras un escalador automático que escala según la carga de las instancias.

Un balanceador de cargas de HTTP(S) externo o interno distribuye las solicitudes a los servicios de backend según su mapa de URL. El balanceador de cargas puede tener uno o más servicios de backend, cada uno de los cuales admite grupos de instancias o grupos de extremos de red (NEG). Cuando los backends son grupos de instancias, el balanceador de cargas de HTTP(S) ofrece dos modos de balanceo: UTILIZATION y RATE. Con UTILIZATION, puedes especificar un objetivo máximo para el uso de backend promedio de las instancias en el grupo de instancias. Con RATE, debes especificar una cantidad objetivo de solicitudes por segundo por instancia o por grupo (solo los grupos de instancias zonales admiten la especificación de una tasa máxima para todo el grupo. (Los grupos de instancias administrados regionales no admiten la definición de una tasa máxima por grupo).

El modo de balanceo y la capacidad objetivo que especificas definen las condiciones en las que Google Cloud determina cuándo una VM de backend está a máxima capacidad. Google Cloud intenta enviar tráfico a las VM en buen estado que tienen capacidad restante. Si todas las VMs ya están al máximo de capacidad, se excede el uso o la tasa de destino.

Cuando conectas un escalador automático a un backend de grupo de instancias de un balanceador de cargas de HTTP(S), el escalador automático escala el grupo de instancias administrado para mantener una fracción de la capacidad de entrega del balanceo de cargas.

Por ejemplo, supongamos que la capacidad de entrega de balanceo de cargas de un grupo de instancias administrado se define como 100 RPS por instancia. Si creas un escalador automático con la política de balanceo de cargas HTTP(S) y lo configuras para mantener un nivel de uso objetivo de 0.8 o del 80%, el escalador automático agrega o quita instancias del grupo de instancias administrado a fin de mantener el 80% de la capacidad de servicio, o las 80 RPS por instancia.

El diagrama siguiente muestra cómo el escalador automático interactúa con un grupo de instancias administrado y un servicio de backend:

Las relaciones entre el escalador automático, los grupos de instancias administrados y los servicios de backend de balanceo de cargas.
El escalador automático observa la capacidad de entrega del grupo de instancias administrado, que se define en el servicio de backend, y escala según el uso objetivo. En este ejemplo, la capacidad de entrega se mide en el valor maxRatePerInstance.

Configuración de balanceo de cargas aplicable

Puedes establecer una de las tres opciones para la capacidad de entrega del balanceo de cargas. Cuando creas el backend por primera vez, puedes elegir entre el uso máximo del backend, las solicitudes máximas por segundo por instancia o las solicitudes máximas por segundo de todo el grupo. El ajuste de escala automático solo funciona con el uso máximo del backend y las solicitudes máximas por segundo o instancia porque el valor de esta configuración se puede controlar mediante la adición o eliminación de instancias. Por ejemplo, si configuras un backend para que procese 10 solicitudes por segundo por instancia y el escalador automático está configurado para mantener el 80% de esa frecuencia, este mecanismo puede agregar o quitar instancias cuando cambia la cantidad de solicitudes por segundo por instancia.

El ajuste de escala automático no funciona con solicitudes máximas por grupo porque esta configuración es independiente de la cantidad de instancias en el grupo de instancias. El balanceador de cargas envía de manera continua la cantidad máxima de solicitudes por grupo al grupo de instancias, independientemente de cuántas instancias haya en el grupo.

Por ejemplo, si configuras el backend para manejar 100 solicitudes máximas por grupo por segundo, el balanceador de cargas envía 100 solicitudes por segundo al grupo, ya sea que el grupo tenga dos instancias o 100 instancias. Debido a que no se puede ajustar este valor, el ajuste de escala automático no funciona con una configuración de balanceo de cargas que usa la cantidad máxima de solicitudes por segundo por grupo.

Habilita el ajuste de escala automático según la capacidad de entrega de balanceo de cargas

Console

  1. Ve a la página Grupos de instancias en la consola de Google Cloud.

    Ir a Grupos de instancias

  2. Si tienes un grupo de instancias, selecciónalo y, luego, haz clic en Editar. Si no tienes un grupo de instancias, haz clic en Crear grupo de instancias.
  3. En Modo de ajuste de escala automático, selecciona Activar: agregar y quitar instancias al grupo para habilitar el ajuste de escala automático.
  4. Especifica la cantidad mínima y máxima de instancias que deseas que el escalador automático cree en este grupo.
  5. En la sección Métricas con ajuste de escala automático, haz clic en Agregar métricas.
  6. Configura el Tipo de métrica como Uso del balanceo de cargas de HTTP.
  7. Ingresa el Uso objetivo de balanceo de cargas HTTP. Este valor se trata como un porcentaje. Por ejemplo, para un uso de balanceo de cargas HTTP del 60%, ingresa 60.

  8. Puedes usar el período de inactividad para establecer el período de inicialización, que indica al escalador automático que tarda la aplicación en inicializarse. Especificar un período de inicialización preciso mejora las decisiones de escalador automático. Por ejemplo, cuando se escala horizontalmente, el escalador automático ignora los datos de las VMs que aún se están inicializando, ya que es posible que estas aún no representen el uso normal de tu aplicación. El período de inicialización predeterminado es de 60 segundos.

  9. Guarda los cambios.

gcloud

Para habilitar un escalador automático que se ajuste a la capacidad de entrega, usa el subcomando set-autoscaling. Por ejemplo, el siguiente comando crea un escalador automático que escala el grupo de instancias de destino administrado para mantener el 60% de la capacidad de entrega. Además del parámetro --target-load-balancing-utilization, también se requiere el parámetro --max-num-replicas cuando se crea un escalador automático:

gcloud compute instance-groups managed set-autoscaling example-managed-instance-group \
    --max-num-replicas 20 \
    --target-load-balancing-utilization 0.6 \
    --cool-down-period 90

Puedes usar la marca --cool-down-period para establecer el período de inicialización, que le indica al escalador automático cuánto tarda tu aplicación en inicializarse. Especificar un período de inicialización preciso mejora las decisiones de escalador automático. Por ejemplo, cuando se escala horizontalmente, el escalador automático ignora los datos de las VMs que aún se están inicializando, ya que es posible que estas aún no representen el uso normal de tu aplicación. El período de inicialización predeterminado es de 60 segundos.

Puedes verificar que el escalador automático se creó de manera correcta con el subcomando instance-groups managed describe:

gcloud compute instance-groups managed describe example-managed-instance-group

Para obtener una lista de los comandos y las marcas gcloud disponibles, consulta la referencia de gcloud.

REST

A fin de crear un escalador automático, usa el método autoscalers.insert para un MIG zonal o el método regionAutoscalers.insert para un MIG regional.

En el siguiente ejemplo, se crea un escalador automático para un MIG zonal:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers/

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

Puedes usar el campo coolDownPeriodSec para establecer el período de inicialización, que le indica al escalador automático cuánto tarda tu aplicación en inicializarse. Especificar un período de inicialización preciso mejora las decisiones de escalador automático. Por ejemplo, cuando se escala horizontalmente, el escalador automático ignora los datos de las VMs que aún se están inicializando, ya que es posible que estas aún no representen el uso normal de tu aplicación. El período de inicialización predeterminado es de 60 segundos.

{

 "name": "example-autoscaler",
 "target": "zones/us-central1-f/instanceGroupManagers/example-managed-instance-group",
 "autoscalingPolicy": {
    "maxNumReplicas": 20,
    "loadBalancingUtilization": {
       "utilizationTarget": 0.8
     },
    "coolDownPeriodSec": 90
  }
}

Para obtener más información sobre cómo habilitar el ajuste de escala automático según la capacidad de entrega de balanceo de cargas, completa el instructivo sobre el Ajuste de escala automático global de un servicio web en Compute Engine.

¿Qué sigue?