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 HTTP(S) externo. 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; 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.

Antes de comenzar

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 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) externo 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 VM 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) externo, 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 Google Cloud Console.

    Ir a la página Grupos de instancias

  2. Si tienes un grupo de instancias, selecciónalo y, luego, haz clic en Editar grupo. Si no tienes un grupo de instancias, haz clic en Crear grupo de instancias.
  3. En Ajuste de escala automático, selecciona Activado.
  4. En Ajuste de escala automático según, selecciona Uso de balanceo de cargas HTTP.
  5. Ingresa el Uso objetivo de balanceo de cargas. Este valor se trata como un porcentaje. Por ejemplo, para un uso de balanceo de cargas HTTP del 60%, ingresa 60.
  6. Proporciona un número para la cantidad máxima de instancias que quieres en este grupo de instancias. También puedes establecer la cantidad mínima de instancias y el período de inactividad. El período de inactividad es la cantidad de segundos que el escalador automático debe esperar luego de que se inició una máquina virtual antes de comenzar a recopilar información. Esto explica el tiempo que puede tardar una instancia en inicializar; los datos recopilados durante este tiempo no son confiables para el ajuste de escala automático. El período de inactividad predeterminado es de 60 segundos.
  7. 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

De manera opcional, puedes usar la marca --cool-down-period, que le indica al escalador automático cuántos segundos esperar después de que se inició una instancia nueva antes de considerar sus datos. Este período de inactividad representa la cantidad de tiempo que puede demorar la instancia en inicializarse, durante el cual los datos de uso recopilados no son confiables para el ajuste de escala automático. Después de que finaliza el período de inactividad, el escalador automático comienza a incluir los datos de uso de la instancia para determinar si se debe escalar el grupo. El período de inactividad predeterminado es de 60 segundos.

Puedes verificar que el escalador automático se creó de manera correcta con el subcomando 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.

API


Nota: Si bien el ajuste de escala automático es una característica de los grupos de instancias administrados, es un recurso de la API diferente. Ten esto en cuenta cuando construyas solicitudes a la API para el ajuste de escala automático.

En la API, realiza una solicitud POST al método autoscalers.insert:

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.

De manera opcional, puedes usar el campo coolDownPeriodSec, que le indica al escalador automático cuántos segundos esperar después de que se inició una instancia nueva antes de considerar sus datos. Este período de inactividad representa la cantidad de tiempo que puede demorar la instancia en inicializarse, durante el cual los datos de uso recopilados no son confiables para el ajuste de escala automático. Después de que finaliza el período de inactividad, el escalador automático comienza a incluir los datos de uso de la instancia para determinar si se debe escalar el grupo. El período de inactividad 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.

Escalamiento para otros tipos de balanceadores de cargas

A fin de escalar automáticamente un grupo de instancias administrado que se usa como backend para otros tipos de balanceadores de cargas de Google Cloud, usa una política de escalador automático diferente.