Prácticas recomendadas para el spot de Amazon EC2 - Amazon Elastic Compute Cloud

Prácticas recomendadas para el spot de Amazon EC2

Amazon EC2 proporciona acceso a la capacidad de computación de EC2 de reserva en la Nube de AWS mediante instancias de spot con un ahorro de hasta el 90 % en comparación con los precios bajo demanda. La única diferencia entre instancias bajo demanda e instancias de spot es que Amazon EC2 puede interrumpir las instancias de spot con dos minutos de notificación si Amazon EC2 necesita de nuevo la capacidad. Para garantizar la mejor experiencia con las instancias de spot, es importante comprender y aplicar las mejores prácticas para su uso.

Se recomienda el uso de instancias de spot para aplicaciones sin estado, tolerantes a fallos y flexibles. Por ejemplo, las instancias de spot funciona bien para big data, cargas de trabajo en contenedores, CI/CD, servidores web sin estado, informática de alto rendimiento (HPC) y cargas de trabajo de representación.

Mientras se ejecutan, las instancias de spot son exactamente iguales que las instancias bajo demanda. Sin embargo, las instancias de spot no garantizan que pueda mantener las instancias en ejecución el tiempo suficiente para finalizar sus cargas de trabajo. Las instancias de spot tampoco garantizan que pueda obtener disponibilidad inmediata de las instancias que está buscando, ni que siempre pueda obtener la capacidad agregada que solicitó. Además, las interrupciones y la capacidad de las instancias de spot pueden cambiar con el paso del tiempo porque la disponibilidad de instancias de spot varía según la oferta y la demanda, y el rendimiento pasado no es garantía de resultados futuros.

Las instancias de spot no son adecuadas para cargas de trabajo que no sean flexibles, con estado, sin tolerancia a errores o estrechamente acopladas entre nodos de instancia. No se recomienda utilizar instancias de spot para las cargas de trabajo que no sean tolerantes a periodos ocasionales en los que la capacidad de destino en su totalidad no esté completamente disponible. Si bien seguir las prácticas recomendadas de spot para ser flexible en cuanto a los tipos de instancias y las zonas de disponibilidad es la mejor opción para obtener una alta disponibilidad, no hay garantías de que la capacidad esté disponible, ya que el aumento de la demanda de instancias bajo demanda puede interrumpir las cargas de trabajo en las instancias de spot.

Es de suma importancia que no se utilicen instancias de spot para estas cargas de trabajo ni que se intente realizar una conmutación por error a instancias bajo demanda para controlar las interrupciones o los periodos de falta de disponibilidad. La conmutación por error de instancias bajo demanda puede provocar interrupciones inadvertidas en el resto de las instancias de spot. Además, si se interrumpen las instancias de spot de una combinación de una instancia y una zona de disponibilidad, puede resultar difícil conseguir instancias bajo demanda con la misma combinación.

Con independencia de si es un usuario de instancias de spot con experiencia o no conoce este tipo de instancias, si está experimentando problemas con interrupciones o disponibilidad de instancias de spot, le aconsejamos que siga estas prácticas recomendadas para tener la mejor experiencia con el servicio de instancias de spot.

Preparar instancias individuales para interrupciones

La mejor manera de gestionar las interrupciones de instancias de spot correctamente es diseñar su aplicación para que sea tolerante a errores. Para lograrlo, puede aprovechar las recomendaciones de reequilibrio de instancia de EC2 y los avisos de interrupción de instancias de spot.

Una recomendación de reequilibrio de instancia de EC2 es una señal que notifica cuando una instancia de spot corre un riesgo elevado de interrupción. La señal brinda la oportunidad de administrar la instancia de spot de forma proactiva antes del aviso de interrupción de instancia de spot de dos minutos de anticipación. Puede decidir reequilibrar su carga de trabajo con instancias de spot nuevos o existentes que no tengan un riesgo elevado de interrupción. Hemos facilitado el uso de esta señal mediante la característica de reequilibrio de capacidad en los grupos de escalado automático y flota de EC2.

Un aviso de interrupción de instancia de spot es una advertencia que se emite dos minutos antes de que Amazon EC2 interrumpa una instancia de spot. Si su carga de trabajo acepta “cambios de programación”, puede configurar sus instancias de spot para que se detengan o hibernen, en lugar de terminarlas, cuando se interrumpan. Amazon EC2 detiene o hiberna automáticamente sus instancias de spot en caso de interrupción y las reanuda también de manera automática cuando hay capacidad disponible.

Se recomienda crear una regla en Amazon EventBridge que capture las recomendaciones de reequilibrio y las notificaciones de interrupción y, a continuación, active un punto de control para el progreso de la carga de trabajo o gestione correctamente la interrupción. Para obtener más información, consulte Monitorear las señales de recomendación de reequilibrio. Para obtener un ejemplo detallado que le explica cómo crear y utilizar reglas de eventos, consulte Aprovechamiento de los avisos de interrupción de instancias de spot de Amazon EC2.

Para obtener más información, consulte Recomendación de reequilibrio de instancias de EC2 y Interrupciones de instancias de spot.

Sea flexible con respecto a los tipos de instancia y las zonas de disponibilidad

Un grupo de capacidad de spot es un conjunto de instancias de EC2 que no se utilizan con el mismo tipo de instancia (por ejemplo, m5.large) y zona de disponibilidad (por ejemplo: us-east-1a). Debe ser flexible en cuanto a los tipos de instancia que solicita y las zonas de disponibilidad en las que puede implementar la carga de trabajo. Esto le da a las instancias de spot una mejor oportunidad de encontrar y asignar la cantidad necesaria de capacidad de cómputo. Por ejemplo, no pida solo c5.large si estaría dispuesto a usar larges de las familias c4, m5 y m4.

En función de sus necesidades concretas, puede evaluar con qué tipos de instancia puede ser flexible para cumplir sus requisitos informáticos. Si una carga de trabajo se puede escalar verticalmente, debe incluir tipos de instancia más grandes (más vCPU y memoria) en sus solicitudes. Si solo puede escalar horizontalmente, debe incluir tipos de instancias de generación anterior, ya que tienen menos demanda de los clientes bajo demanda.

Una buena regla general es ser flexible con al menos 10 tipos de instancias para cada carga de trabajo. Además, asegúrese de que todas las zonas de disponibilidad estén configuradas para su uso en la VPC y seleccionadas para su carga de trabajo.

Uso de la selección del tipo de instancia basada en atributos

Con la selección del tipo de instancia basada en atributos, puede especificar los atributos de la instancia, como las vCPU, la memoria y el almacenamiento, para la carga de trabajo que desee ejecutar. El escalado automático de EC2 o la Flota de EC2 identificarán e iniciarán automáticamente las instancias que coincidan con los atributos especificados. Esto elimina el esfuerzo necesario para seleccionar manualmente tipos de instancias específicos, lo que requiere un conocimiento profundo de la oferta de cada tipo de instancia.

Además, la selección del tipo de instancia basada en atributos le permite utilizar automáticamente los tipos de instancias recién lanzados a medida que estén disponibles. Esto garantiza un acceso sin problemas a una gama cada vez más amplia de capacidades de instancias de spot.

La selección del tipo de instancia basada en atributos es ideal para cargas de trabajo y marcos de trabajo que pueden ser flexibles sobre los tipos de instancias en los que se ejecutan, tales como la computación de alto rendimiento (HPC) y cargas de trabajo de macrodatos.

Para obtener más información, consulte Crear un grupo de instancias mixto mediante la selección del tipo de instancia basada en atributos en la Guía del usuario de Amazon EC2 Auto Scaling y Especifique atributos para la selección del tipo de instancia para la flota de EC2 o flota de spot en esta guía.

Uso de las puntuaciones de ubicación de spot para identificar las regiones y zonas de disponibilidad óptimas

Las instancias de spot son capacidad de EC2 no utilizada y esta capacidad fluctúa en función de la oferta y la demanda de EC2. Como resultado, es posible que no siempre obtenga la capacidad de spot exacta que necesita en una ubicación específica y en un momento específico. Para mitigar esta imprevisibilidad, puede utilizar la característica de puntuación de ubicación de spot. Esta característica ofrece recomendaciones para las regiones o zonas de disponibilidad que tienen más probabilidades de tener suficiente capacidad para satisfacer sus necesidades de capacidad de spot sin necesidad de que primero tenga que iniciar instancias de spot en esas ubicaciones.

La puntuación de ubicación de spot se utiliza mejor para las cargas de trabajo que pueden ser flexibles en cuanto a los tipos de instancias y la región o zona de disponibilidad que pueden utilizar. Lo único que tiene que hacer es especificar la capacidad de spot que necesita, los requisitos de tipo de instancia y si desea recibir recomendaciones para las regiones o las zonas de disponibilidad. A cambio, recibirá una puntuación del 1 al 10 por cada región o zona de disponibilidad, lo que indica la probabilidad de aprovisionar correctamente la capacidad de spot solicitada en esa ubicación. Una puntuación de 10 indica que es probable que la solicitud de spot tenga éxito.

Es importante tener en cuenta que la puntuación de ubicación de spot es una recomendación puntual, ya que la capacidad puede variar con el tiempo. No garantiza la capacidad disponible ni predice el riesgo de interrupción.

Puede utilizar la característica de puntuación de ubicación de spot en la consola de Amazon EC2, en AWS CLI, o en un SDK. Para obtener más información, consulte Puntuación de ubicación de spot.

Uso de grupos de escalado automático de EC2 o flota de EC2 para administrar la capacidad agrupada

Las instancias de spot le permiten pensar en términos de capacidad agrupada, en unidades que incluyen vCPU, memoria, almacenamiento o rendimiento de red, en lugar de pensar en términos de instancias individuales. Los grupos de escalado automático y flota de EC2 le permiten iniciar y mantener una capacidad objetivo, así como solicitar automáticamente recursos para reemplazar cualquier recurso que sufra una interrupción o terminación manual. Cuando configura un grupo de escalado automático o una flota de EC2, solo tiene que especificar los tipos de instancia y la capacidad objetivo en función de las necesidades de la aplicación. Para obtener más información, consulte Grupos de escalado automático en la Guía del usuario de Amazon EC2 Auto Scaling y Crear una flota de EC2 en esta guía del usuario.

Utilice la estrategia de asignación optimizada para capacidad y precio

Las estrategias de asignación en grupos de Auto Scaling ayudan a aprovisionar la capacidad de destino sin necesidad de buscar manualmente los grupos de capacidad de spot con capacidad sobrante. Recomendamos utilizar la estrategia price-capacity-optimized porque aprovisiona automáticamente instancias de los grupos de capacidad de spot más disponibles que también tienen el precio más bajo posible. También puede usar la estrategia de asignación price-capacity-optimized en flota de EC2. Debido a que la capacidad de la instancia de spot proviene de grupos con capacidad óptima, esto disminuye la posibilidad de que se reclamen las instancias de spot. Para obtener más información acerca de las estrategias de asignación, consulte instancias de spot en Guía del usuario de Amazon EC2 Auto Scaling y Cuando las cargas de trabajo tienen un alto costo de interrupción en esta guía del usuario.

Utilice servicios integrados de AWS para administrar sus instancias de spot

Otros servicios de AWS se integran con instancias de spot para reducir los costos informáticos generales sin necesidad de administrar las instancias o flotas individuales. Le recomendamos que se plantee utilizar las siguientes soluciones para sus cargas de trabajo aplicables: Amazon EMR, Amazon Elastic Container Service, AWS Batch, Amazon Elastic Kubernetes Service, Amazon SageMaker, AWS Elastic Beanstalk y Amazon GameLift. Para obtener más información sobre las prácticas recomendadas de instancias de spot con estos servicios, consulte el sitio web de Amazon EC2 instancias de spot Workshops.

¿Cuál es el mejor método de solicitud de spot que se puede utilizar?

Use la siguiente tabla para determinar qué API debe utilizar al solicitar instancias de spot.

API ¿Cuándo se debe utilizar? Caso de uso ¿Debo utilizar esta API?

CreateAutoScalingGroup

  • Necesita varias instancias con una configuración única o una configuración mixta.

  • Desea automatizar la administración del ciclo de vida mediante una API configurable.

Cree un grupo de Auto Scaling que administre el ciclo de vida de las instancias a la vez que mantiene el número de instancias deseado. Admite escalado horizontal (agregar más instancias) entre los límites mínimo y máximo especificados.

CreateFleet
  • Necesita varias instancias con una configuración única o una configuración mixta.

  • Desea administrar por sí mismo el ciclo de vida de las instancias.

  • Si no necesita escalado automático, se recomienda utilizar el tipo de flota instant.

Cree una flota de instancias bajo demanda e instancias de spot en una única solicitud, con varias especificaciones de inicialización que varían por tipo de instancia, AMI, zona de disponibilidad o subred. La estrategia de asignación de instancias de spot se establece de manera predeterminada como lowest-price por unidad, pero se puede cambiar a price-capacity-optimized, capacity-optimized o diversified.

Sí, en modo instant si no necesita escalado automático

RunInstances
  • Ya está utilizando la API RunInstances para iniciar instancias bajo demanda, y simplemente desea cambiar a iniciar instancias de spot modificando un único parámetro.

  • No necesita varias instancias con distintos tipos de instancias.

Lance un número especificado de instancias utilizando una AMI y un tipo de instancia.

No, porque RunInstances no permite tipos de instancias mixtos en una sola solicitud

RequestSpotFleet
  • Se desaconseja encarecidamente utilizar la API RequestSpotFleet, porque es una API heredada sin inversión planificada.

  • Si desea administrar el ciclo de vida de las instancias, utilice la API CreateFleet.

  • Si no desea administrar el ciclo de vida de las instancias, utilice la API CreateAutoScalingGroup.

NO UTILIZAR. RequestSpotFleet es una API heredada sin inversión planificada.

No
RequestSpotInstances
  • Se desaconseja encarecidamente utilizar la API RequestSpotInstances, porque es una API heredada sin inversión planificada.

NO UTILIZAR. RequestSpotInstances es una API heredada sin inversión planificada.

No