Configuración del escalado de flotas

Al crear una flota, utiliza los parámetros de escalado para controlar el número de trabajadores que despliega tu flota de Code Engine y cómo responde a los cambios en la carga de trabajo.

Todos los parámetros de escalabilidad son opcionales y se pueden configurar al crear una flota.

Parámetros de escalado en la CLI de Code Engine

Para crear una flota, utiliza el comando ibmcloud ce fleet create o ibmcloud ce fleet run. Admite las siguientes opciones para el escalado de la flota. Para obtener una lista completa de todas las opciones comando disponibles, consulta la referencia de la CLI.

--scale-max

El límite máximo del número total de ranuras de tareas simultáneas en todos los trabajadores. Los trabajadores se amplían para admitir, como máximo, este número de tareas simultáneas. El valor predeterminado es 10.

--scale-min

El número mínimo de ranuras de tareas simultáneas que siempre se mantienen aprovisionadas, incluso cuando no hay tareas pendientes ni en ejecución. Los trabajadores que proporcionan esta capacidad permanecen activos y nunca se reducen automáticamente.

Una flota con trabajadores activos debido a esta configuración, pero sin tareas pendientes ni en ejecución, tiene el estado En espera.

Debe ser inferior o igual a --scale-max. El valor por defecto es 0.

--scale-spare

El número de ranuras de tareas simultáneas libres que se mantiene por encima del número actual de tareas en ejecución. Cuando todos los trabajadores están ocupados, la flota proporciona trabajadores adicionales para restablecer el margen de reserva, hasta un máximo de --scale-max. Las nuevas tareas que llegan mientras hay capacidad disponible se inician de inmediato, sin esperar a que haya un nuevo trabajador.

Debe ser inferior o igual a --scale-max. El valor por defecto es 0.

--scale-down-delay

Especifica durante cuánto tiempo un trabajador sigue en ejecución tras completar su última tarea antes de que Code Engine reduzca su capacidad. Un trabajador cuya última tarea se haya completado dentro del intervalo de espera recoge nuevas tareas inmediatamente en cuanto llegan.

Especifique un número entero positivo que represente el número de segundos. Por defecto, 0 los trabajadores se reducen en cuanto dejan de ser necesarios.

Parámetros de escalabilidad en la consola de Code Engine

Número máximo de ranuras de contenedores

El límite máximo del número total de ranuras de tareas simultáneas en todos los trabajadores. Los trabajadores se amplían para admitir, como máximo, este número de tareas simultáneas. El valor predeterminado es 10.

Número mínimo de ranuras de contenedor

El número mínimo de ranuras de tareas simultáneas que siempre se mantienen aprovisionadas, incluso cuando no hay tareas pendientes ni en ejecución. Los trabajadores que proporcionan esta capacidad permanecen activos y nunca se reducen automáticamente.

Una flota con trabajadores activos debido a esta configuración, pero sin tareas pendientes ni en ejecución, tiene el estado En espera.

Debe ser inferior o igual al número máximo de ranuras del contenedor. El valor por defecto es 0.

Espacios libres en contenedores

El número de ranuras de tareas simultáneas libres que se mantiene por encima del número actual de tareas en ejecución. Cuando todos los trabajadores están ocupados, la flota proporciona trabajadores adicionales para restablecer el margen de reserva, hasta el número máximo de ranuras de contenedor. Las nuevas tareas que llegan mientras hay capacidad disponible se inician de inmediato, sin esperar a que haya un nuevo trabajador.

Debe ser inferior o igual al número máximo de ranuras del contenedor. El valor por defecto es 0.

Retraso en la reducción de escala

Especifica durante cuánto tiempo un trabajador sigue en ejecución tras completar su última tarea antes de que Code Engine reduzca su capacidad. Un trabajador cuya última tarea se haya completado dentro del intervalo de espera recoge nuevas tareas inmediatamente en cuanto llegan.

Especifica el número de minutos. Por defecto, 0 los trabajadores se reducen en cuanto dejan de ser necesarios.

Patrones de carga de trabajo y parámetros relevantes

Los parámetros que se deben utilizar dependen de cómo se generen las tareas, cuáles sean sus requisitos de latencia y de la estabilidad de la configuración de la flota.

Carga de trabajo por lotes de una sola ejecución en la CLI de Code Engine

Conoces todas las tareas desde el principio, las indicas al crear la flota y esta finaliza cuando se completa la última tarea. Este es el modelo más sencillo y no requiere ninguna configuración especial de escalabilidad más allá de establecer --scale-max para controlar cuántas tareas se ejecutan en paralelo. Utiliza este enfoque cuando necesites una configuración de flota específica para un lote de tareas.

Opción relevante: --scale-max

Carga de trabajo por lotes de una sola ejecución en la consola de Code Engine

Conoces todas las tareas desde el principio, las indicas al crear la flota y esta finaliza cuando se completa la última tarea. Este es el modelo más sencillo y no requiere ninguna configuración especial de escalabilidad, salvo establecer el número máximo de ranuras de contenedor para controlar cuántas tareas se ejecutan en paralelo. Utiliza este enfoque cuando necesites una configuración de flota específica para un lote de tareas.

Parámetro relevante: número máximo de ranuras de contenedor

Carga de trabajo por lotes programada en la CLI de Code Engine

Mantienes una flota en funcionamiento y añades un nuevo lote de tareas según un calendario. Entre lotes, la flota no tiene tareas pendientes. El intervalo entre lotes es predecible y lo suficientemente largo como para que no merezca la pena mantener a los trabajadores calientes, por lo que no hay ninguna ventaja en utilizar --scale-min, --scale-spare, o --scale-down-delay. La configuración de la flota se mantiene estable en todos los lotes.

Opción relevante: --scale-max

Carga de trabajo por lotes programada en la consola de Code Engine

Mantienes una flota en funcionamiento y añades un nuevo lote de tareas según un calendario. Entre lotes, la flota no tiene tareas pendientes. El intervalo entre lotes es predecible y lo suficientemente largo como para que no merezca la pena mantener activos los trabajadores; por lo tanto, no supone ninguna ventaja utilizar las opciones Espacios mínimos en contenedores, Espacios de reserva en contenedores o Retraso de reducción de escala. La configuración de la flota se mantiene estable en todos los lotes.

Parámetro relevante: número máximo de ranuras de contenedor

Carga de trabajo continua y sensible a la latencia en la CLI de Code Engine

Las tareas se producen de forma impredecible a lo largo del día, activadas por acciones de los usuarios, lecturas de sensores u otros eventos en tiempo real. Esperar a que se inicie un nuevo trabajador cada vez que llega una tarea añadiría una latencia inaceptable. En su lugar, configura la flota para mantener un grupo de trabajadores en espera, de modo que las tareas puedan comenzar de inmediato.

Opciones relevantes: --scale-max, --scale-min, --scale-spare, --scale-down-delay

  • Utilice --scale-max para definir el número máximo de ranuras de contenedor que se pueden aprovisionar. Tu flota se amplía hasta este límite de concurrencia en función de la demanda de la carga de trabajo.
  • Utilízalo para --scale-min garantizar que siempre haya un grupo básico de trabajadores en ejecución, incluso cuando no haya tareas en cola. Utiliza esta opción cuando el tráfico pueda caer a cero durante un tiempo, pero quieras que se reinicie al instante cuando se reanude.
  • Utiliza --scale-spare para mantener disponibles una serie de espacios libres para tareas por encima del número actual de tareas en ejecución. Cuando llega una tarea, el procesamiento comienza inmediatamente en un trabajador que ya está en funcionamiento, y la flota aprovisiona más trabajadores en segundo plano para reponer la capacidad disponible.
  • Utiliza para --scale-down-delay evitar que los trabajadores se reduzcan inmediatamente después de que finalice su última tarea. Esta configuración resulta útil cuando las tareas se reciben de forma intermitente, con intervalos temporales entre ellas, ya que permite a los trabajadores mantenerse disponibles y evita ciclos innecesarios de reducción y ampliación de la capacidad. Mantener los workers en estado activo reduce la latencia en el inicio de las tareas, minimiza la sobrecarga de inicialización de los workers y reduce el coste que supone el aprovisionamiento repetido de nuevos workers.

Carga de trabajo continua y sensible a la latencia en la consola de Code Engine

Las tareas se producen de forma impredecible a lo largo del día, activadas por acciones de los usuarios, lecturas de sensores u otros eventos en tiempo real. Esperar a que se inicie un nuevo trabajador cada vez que llega una tarea añadiría una latencia inaceptable. En su lugar, configura la flota para mantener un grupo de trabajadores en espera, de modo que las tareas puedan comenzar de inmediato.

Parámetros relevantes: Número máximo de ranuras de contenedor, Número mínimo de ranuras de contenedor, Ranuras de contenedor de reserva, Retraso en la reducción de escala

  • Utilice Número máximo de ranuras de contenedor para definir el número máximo de ranuras de contenedor que se pueden aprovisionar. Tu flota se amplía hasta este límite de concurrencia en función de la demanda de la carga de trabajo.
  • Utiliza el número mínimo de ranuras de contenedor para garantizar que siempre haya un grupo básico de trabajadores en ejecución, incluso cuando no haya tareas en cola. Utiliza esta opción cuando el tráfico pueda caer a cero durante un tiempo, pero quieras que se reinicie al instante cuando se reanude.
  • Utiliza las ranuras de contenedor libres para mantener un número de ranuras de tareas libres disponibles superior al número actual de tareas en ejecución. Cuando llega una tarea, el procesamiento comienza inmediatamente en un trabajador que ya está en funcionamiento, y la flota aprovisiona más trabajadores en segundo plano para reponer la capacidad disponible.
  • Utiliza el retardo de reducción de escala para evitar que los trabajadores reduzcan su escala inmediatamente después de que finalice su última tarea. Esta configuración resulta útil cuando las tareas se reciben de forma intermitente, con intervalos temporales entre ellas, ya que permite a los trabajadores mantenerse disponibles y evita ciclos innecesarios de reducción y ampliación de la capacidad. Mantener los workers en estado activo reduce la latencia en el inicio de las tareas, minimiza la sobrecarga de inicialización de los workers y reduce el coste que supone el aprovisionamiento repetido de nuevos workers.