Escalamiento según la capacidad de entrega de CPU o balanceo de cargas

La forma más simple de ajustar la escala de forma automática es escalar según el uso de CPU de un grupo de instancias de máquina virtual (VM). También puedes elegir escalar según la capacidad de entrega de balanceo de cargas de HTTP(S) de un grupo de instancias.

En este documento, se describen ambas opciones.

Antes de comenzar

Escalamiento según el uso de CPU

Puedes ajustar la escala de forma automática en función del uso de CPU promedio de un grupo de instancias administrado (MIG). El uso de esta política le indica al escalador automático que recopile el uso de CPU de las instancias en el grupo y determine si necesita escalar. Estableces el uso objetivo de CPU que debe mantener el escalador automático y este funciona para mantenerlo.

El escalador automático considera el nivel de uso objetivo de CPU de destino como una fracción del uso promedio de todas las CPU virtuales a lo largo del tiempo en el grupo de instancias. Si el uso promedio del total de las CPU virtuales excede el uso objetivo, el escalador automático agrega más máquinas virtuales. Por ejemplo, establecer un uso objetivo de 0.75 le dice al escalador automático que mantenga un uso promedio del 75% entre todas las CPU virtuales en el grupo de instancias.

Habilita el ajuste de escala automático según el uso de CPU

Console


  1. Ir a la página Grupos de instancias.
  2. Si tienes un grupo de instancias, selecciónalo y 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 CPU.
  5. Ingresa el Uso objetivo de CPU que desees. Este valor se trata como un porcentaje. Por ejemplo, para un 60% de uso de CPU, 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 VM antes de comenzar a recopilar información. Esto explica la cantidad de tiempo que puede tardar una VM en inicializarse, durante el cual los datos recopilados 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


Usa el subcomando set-autoscaling a fin de habilitar el ajuste de escala automático para un grupo de instancias administrado. Por ejemplo, el siguiente comando crea un escalador automático que tiene un uso objetivo de CPU del 75%. Además del parámetro --target-cpu-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-cpu-utilization 0.75 \
    --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 ajuste de escala automático se habilitó de manera correcta mediante el subcomando instance-groups managed describe, que describe el grupo de instancias administrado correspondiente y proporciona información sobre las funciones de ajuste de escala automático para ese grupo de instancias:

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 .

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 cpuUtilization y maxNumReplicas.

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": "https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instanceGroupManagers/example-managed-instance-group",
 "autoscalingPolicy": {
    "maxNumReplicas": 10,
    "cpuUtilization": {
       "utilizationTarget": 0.8
     },
    "coolDownPeriodSec": 90
  }
}

A fin de obtener más información sobre cómo habilitar el ajuste de escala automático según el uso de CPU, completa el instructivo sobre cómo usar el ajuste de escala automático para aplicaciones altamente escalables .

Cómo el escalador automático maneja el uso intensivo de CPU

Durante los períodos de uso intensivo de CPU, si el uso alcanza cerca del 100%, el escalador automático estima que el grupo puede estar muy sobrecargado. En estos casos, el escalador automático aumenta la cantidad de máquinas virtuales en un 50% como máximo.

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 tus instancias.

Un balanceador de cargas de HTTP(S) distribuye la carga entre servicios de backend, que distribuye el tráfico entre los grupos de instancias. Dentro del servicio de backend, puedes definir la capacidad de entrega de balanceo de cargas de los grupos de instancias asociados con el backend como uso máximo de CPU, solicitudes máximas por segundo (RPS) o solicitudes máximas por segundo del grupo. Cuando un grupo de instancias alcanza la capacidad de entrega, el servicio de backend comienza a enviar tráfico a otro grupo de instancias.

Cuando adjuntas un escalador automático a 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 de 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.

Configuraciones de balanceo de cargas aplicables

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 de CPU, 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 de CPU y las solicitudes máximas por segundo o instancia porque el valor de esta configuración se puede controlar mediante el agregado o quitado de instancias. Por ejemplo, si configuras un backend a fin de manejar 10 solicitudes por segundo por instancia y el escalador automático está configurado para mantener el 80% de esa tasa, entonces el escalador automático puede agregar o quitar instancias cuando cambian las 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 Platform 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 .

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 según el balanceo de cargas de red

Un balanceador de cargas de red distribuye la carga mediante protocolos de nivel inferior como TCP y UDP. El balanceo de cargas de red te permite distribuir el tráfico no basado en HTTP(S), como SMTP.

Puedes escalar de manera automática un grupo de instancias administrado que es parte de un grupo de destino de un balanceador de cargas de red con el uso de CPU o las métricas personalizadas. Para obtener más información, consulta Escalamiento según el uso de CPU o Ajusta la escala según las métricas de Stackdriver Monitoring.

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

Enviar comentarios sobre...

Documentación de Compute Engine