Usar una política de autoescalado con varias señales


Cuando creas una política de autoescalado con varias señales, la herramienta de autoescalado se escala en función de la señal que proporcione el mayor número de instancias de máquina virtual (VM) en el grupo de instancias gestionado (MIG). De esta forma, siempre habrá suficientes máquinas virtuales para gestionar las cargas de trabajo de tu aplicación y podrás escalar aplicaciones con varios posibles cuellos de botella.

Para obtener más información sobre los diferentes tipos de señales de autoescalado, consulta Política de autoescalado.

Antes de empezar

  • Consulta los aspectos básicos del escalado automático.
  • Si aún no lo has hecho, configura la autenticación. La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    2. Set a default region and zone.

    REST

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

      Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .

Cómo gestiona el autoescalador varias señales

Una herramienta de escalado automático gestiona varias señales calculando el número recomendado de VMs para cada señal y, a continuación, elige la señal que da como resultado el mayor número de VMs en el MIG.

Un escalador automático puede gestionar una señal por tipo de métrica, excepto en el caso de las métricas de Cloud Monitoring y las programaciones de escalado. Puedes elegir hasta 5 señales de autoescalado para las métricas de Cloud Monitoring y crear hasta 128 programaciones por MIG. Por ejemplo, puedes crear un auto escalador que use hasta 1 señal de uso de CPU, hasta 1 señal de balanceo de carga, hasta 5 señales de métricas personalizadas y hasta 128 programaciones de escalado.

Por ejemplo, puedes definir un escalador automático con todas las señales siguientes:

  • cpuUtilization con un objetivo de 0,8
  • loadBalancingUtilization con un objetivo de 0,6
  • customMetricUtilization de la métrica 1 con un objetivo de 1000
  • customMetricUtilization para métrica2 con un objetivo de 2000
  • scalingSchedules
    • Un mínimo de 6 máquinas virtuales todos los sábados y domingos a las 00:00 durante 24 horas
    • Un mínimo de 15 máquinas virtuales de lunes a viernes a las 9:00 durante 8 horas

En este ejemplo, supongamos que el escalador automático mide los siguientes valores de utilización media de un MIG que contiene 10 VMs en el momento de la medición:

  • 0,5 para el uso de CPU
  • 0,4 de uso del balanceo de carga
  • 1100 para métrica1
  • 2700 para metric2

Con los valores anteriores, el escalador automático calcula el número recomendado de VMs en función de cada señal:

  • 7 VMs basadas en el uso de CPU
  • 7 VMs basadas en el uso del balanceo de carga
  • 11 VMs based on metric1
  • 14 VMs basadas en metric2
  • 6 VMs todos los sábados y domingos durante todo el día según la primera programación de escalado
  • 15 VMs de lunes a viernes, de 9:00 a 17:00, según la segunda programación de escalado

La herramienta de ajuste automático de escala elige la señal que da como resultado el mayor número de VMs en el MIG y asigna ese valor al tamaño recomendado del MIG. En este caso, el escalador automático cambia el tamaño del MIG a 15 VMs si la segunda programación está activa o a 14 VMs en caso contrario.

Crear una herramienta de adaptación dinámica con varias señales

El proceso para crear un escalador automático con varias señales es ligeramente diferente en función de si usas la consola de Google Cloud , la CLI de gcloud o la API REST.

Consola

  1. En la consola, ve a la página Grupos de instancias. Google Cloud

    Ir a Grupos de instancias

  2. Haz clic en el nombre de un MIG de la lista.

  3. Haz clic en Editar.

  4. Haga clic en Tamaño del grupo y escalado automático para desplegar la sección.

  5. En la lista Modo de autoescalado, asegúrate de que esté seleccionada la opción Activado: añadir y quitar instancias del grupo.

  6. En el campo Número mínimo de instancias, introduce el número mínimo de VMs que quieras que tenga este MIG. El tamaño mínimo de este MIG se mantiene siempre, independientemente de sus señales de autoescalado.

  7. En el campo Número máximo de instancias, introduce el número máximo de VMs que quieras que tenga este MIG. El tamaño máximo de este MIG nunca se supera, independientemente del tamaño recomendado generado por sus señales de autoescalado.

  8. Por cada señal de escalado automático basada en métricas que quieras añadir, haz clic en Añadir una señal.

    • Para crear una señal de autoescalado basada en la utilización media de la CPU, selecciona Utilización de la CPU en la lista Tipo de señal. A continuación, introduce un Uso de CPU objetivo y haz clic en Hecho. Para obtener más información, consulta Escalar según uso de CPU.
    • Para crear una señal de escalado automático basada en la capacidad de servicio del balanceo de carga HTTP, en la lista Tipo de señal, selecciona Uso del balanceo de carga HTTP. A continuación, introduce un valor en Uso del balanceo de carga HTTP objetivo y haz clic en Hecho. Para obtener más información, consulta Escalar según capacidad de balanceo de carga.
    • Para crear una señal de escalado automático basada en métricas de Cloud Monitoring, en la lista Tipo de señal, selecciona Métrica de Cloud Monitoring. A continuación, completa los campos restantes y haz clic en Hecho. Para obtener más información, consulta el artículo Escalar según las métricas de Cloud Monitoring.
  9. En la sección Programaciones de escalado automático, haga clic en Gestionar para cada señal de escalado automático basada en una programación que quiera añadir.

    1. Haz clic en Crear programación.

    2. En el panel Crear programación de escalado, rellena los campos obligatorios y haz clic en Guardar.

    3. En el panel Programaciones de escalado, haga clic en Hecho.

    Para obtener más información, consulta Escalar en función de las programaciones.

  10. En la sección Periodo de inicialización, introduce el número de segundos que necesita tu aplicación para inicializarse. Durante este periodo, las máquinas virtuales terminan de inicializarse antes de que el autoescalador considere que sus datos de uso son fiables. Para obtener más información, consulta el artículo Periodo de inicialización.

  11. Opcional: Para habilitar los controles de reducción de tamaño, en la sección Controles de reducción de tamaño, marca la casilla Habilitar controles de reducción de tamaño. Para obtener más información, consulta los controles de reducción.

  12. Haz clic en Guardar.

gcloud

Para crear un escalador automático con varias señales, usa el comando set-autoscaling. Transfiere varias especificaciones de señales mediante sus respectivas marcas de línea de comandos.

Por ejemplo, el siguiente comando crea un auto escalador que usa el uso de CPU, la capacidad de servicio de balanceo de carga, dos métricas personalizadas y una programación de escalado. Las marcas --max-num-replicas y --min-num-replicas restringen el tamaño máximo y mínimo del MIG.

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
   --target-cpu-utilization=0.8 \
   --target-load-balancing-utilization=0.6 \
   --custom-metric-utilization metric=PATH_TO_CUSTOM_METRIC_1,utilization-target=1000.0,utilization-target-type=GAUGE \
   --custom-metric-utilization metric=PATH_TO_CUSTOM_METRIC_2,utilization-target=2000.0,utilization-target-type=DELTA_PER_SECOND \
   --set-schedule=workday-capacity \
   --schedule-cron="30 8 * * Mon-Fri" \
   --schedule-duration-sec=30600 \
   --schedule-min-required-replicas=10 \
   --schedule-description="Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC" \
   --min-num-replicas=1 \
   --max-num-replicas=50

Haz los cambios siguientes:

  • MIG_NAME: el nombre de un MIG.
  • PATH_TO_CUSTOM_METRIC_1 y PATH_TO_CUSTOM_METRIC_2: opcional: las rutas a las métricas personalizadas con un formato similar a custom.cloudmonitoring.googleapis.com/path/to/metric1 y custom.cloudmonitoring.googleapis.com/path/to/metric2. Para obtener más información, consulta el artículo Métricas personalizadas.

A excepción de las marcas de métricas personalizadas, solo puedes incluir una marca como máximo por cada tipo de métrica en cada comando gcloud. En el caso de las métricas personalizadas, puedes proporcionar varias métricas personalizadas en un solo comando repitiendo la marca --custom-metric-utilization.

Para obtener más información sobre cómo configurar las marcas de cada tipo de señal de escalado automático, consulta las siguientes páginas:

REST

Para 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.

Por ejemplo, la siguiente solicitud crea un escalador automático que usa la utilización de la CPU, la capacidad de servicio de balanceo de carga, dos métricas personalizadas y dos programaciones de escalado. Los campos maxNumReplicas y minNumReplicas restringen el tamaño máximo y mínimo que puede alcanzar el MIG.

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

{
  "autoscalingPolicy" : {
    "cpuUtilization":{
      "utilizationTarget": 0.8
    },
    "loadBalancingUtilization":{
      "utilizationTarget": 0.6
    },
    "customMetricUtilizations":[
      {
        "metric": "PATH_TO_CUSTOM_METRIC_1",
        "utilizationTarget": 1000,
        "utilizationTargetType":"GAUGE"
      },
      {
        "metric": "PATH_TO_CUSTOM_METRIC_2",
        "utilizationTarget": 2000,
        "utilizationTargetType": "DELTA_PER_SECOND"
      }
    ],
    "scalingSchedules": {
      "workday-capacity": {
        "minRequiredReplicas": 10,
        "schedule": "30 8 * * Mon-Fri",
        "durationSec": 30600,
        "description": "Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC"
      },
      "january-30-2030-schedule": {
        "minRequiredReplicas": 30,
        "schedule": "0 0 30 1 * 2030",
        "timeZone": "America/New_York",
        "durationSec": 86400,
        "description": "Schedule a minimum of 30 VMs all day for January 30, 2030"
      }
    },
    "maxNumReplicas": 50,
    "minNumReplicas": 1
  },
  "target": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroupManagers/MIG_NAME",
  "name": "MIG_NAME"
}

Haz los cambios siguientes:

  • PROJECT: tu ID de proyecto.
  • ZONE: la zona en la que se encuentra tu MIG.
  • MIG_NAME: el nombre de un MIG.
  • PATH_TO_CUSTOM_METRIC_1 y PATH_TO_CUSTOM_METRIC_2: opcional: las rutas a las métricas personalizadas con un formato similar a custom.cloudmonitoring.googleapis.com/path/to/metric1 y custom.cloudmonitoring.googleapis.com/path/to/metric2. Para obtener más información, consulta el artículo Métricas personalizadas.

Como se muestra en este ejemplo, puede proporcionar varias métricas personalizadas y programaciones de escalado en la misma solicitud.

Para obtener más información sobre cómo configurar los campos de cada tipo de señal de escalado automático, consulta las siguientes páginas: