Ajusta la escala según la capacidad de entrega de la CPU o el balanceo de cargas

La forma más sencilla de ajustar automáticamente la escala es hacerlo según el uso de CPU de un grupo de instancias de máquinas virtuales (VM). También puedes hacerlo en función de la capacidad de entrega del 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 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 supera el uso objetivo, el escalador automático agregará más instancias de VM. Si el uso promedio del total de las CPU virtuales es menor que el objetivo de uso, el escalador automático quitará instancias. Por ejemplo, si se establece el objetivo de uso en 0.75, se le indica al escalador automático que mantenga un uso promedio del 75% entre todas las CPU virtuales del 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 está 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 las cargas entre los backends que pertenecen a los servicios de backend del balanceador de cargas. Cuando los backends son grupos de instancias, el balanceador de cargas HTTP(S) cuenta con dos modos de funcionamiento: de uso y de tasa. Con el modo de uso, puedes especificar un objetivo máximo para el uso promedio del backend en las instancias de cada grupo. Con el modo de tasa, puedes especificar un objetivo máximo para las solicitudes por segundo a nivel de instancia o de grupo (los grupos de instancias administrados regionales no admiten la definición de una tasa máxima a nivel de grupo).

El modo de balanceo y el objetivo máximo que especifiques definirán las condiciones en las que Google Cloud determinará si una VM de backend alcanzó su límite de capacidad. Google Cloud intenta enviar tráfico a las VM en buen estado que tienen capacidad restante. Si todas las VM ya alcanzaron su límite de capacidad, se excede el objetivo de uso o tasa máximo.

Cuando adjuntas un escalador automático a un balanceador de cargas de HTTP(S), el escalador automático ajusta la escala del 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.

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 .

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 ajustar automáticamente la escala un grupo de instancias administrado que forma parte de un grupo de destino de un balanceador de cargas de red con el uso del backend o las métricas personalizadas. Para obtener más información, consulta el artículo sobre el escalamiento según el uso del backend o según las métricas de Stackdriver Monitoring.

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Documentación de Compute Engine