Todo lo que necesita saber sobre Instancias Spot — AWS

Raúl A. Alzate Gomez
Nov 7 · 6 min read

Spot Instance le permite ofertar el precio que desee, por ejemplo, capacidad, lo que proporciona ahorros aún mayores si sus aplicaciones tienen horarios de inicio y finalización flexibles.

  • Aplicaciones que tienen horarios de inicio y finalización flexibles
  • Aplicaciones que solo son factibles a precios de computación muy bajos
  • Usuarios con necesidades informáticas urgentes para grandes cantidades de capacidad adicional

Hacer un Request Spot le permite aprovechar la capacidad EC2 no utilizada disponible en la nube de AWS. Las instancias puntuales están disponibles con hasta un 90% de descuento en comparación con los precios a pedido‌

Spot Instance

‌Es la forma previa para lanzar una solicitud Spot. Sobre esta es necesario configurar el requerimiento o la necesidad para ejecutar una instancia On-Demand. Las características son:

  • Solo paga lo que ofertes.
  • No se cobrará si Amazon EC2 finaliza la instancia, pero se cobrará si el usuario finaliza la instancia

Type‌

Los tipos de Spot Instance depende de los tipos on-time y persistent para su interrupción y del comportamiento de la interrupción (hibernate, stop, or terminate). Si la solicitud es persistent, la solicitud se abre nuevamente después de que se interrumpe su instancia puntual, por el contrario una solicitud tipo one-time al interrumpir se terminar y se finaliza la solicitud.

fuente: https://docs.aws.amazon.com/

Requirements

‌El requerimiento es la necesidad de computo que se requiere para la instancia. Aquí se usa un Launch Template para cargar una configuración parametrizada dentro de las especificaciones de EC2. Se configurar lo relacionado con la instancia; tipo de instancia, VPC, Security Group, Availability Zone, EBS Volume, etc.

Load Balancing

Para recibir el tráfico de uno o más equilibradores de carga y configurar el Target Group para el Application Load Balancer.

Cada target groups se utiliza para enrutar solicitudes a uno o más objetivos registrados. Cuando crea cada regla de escucha, especifica un grupo objetivo y condiciones.

Spot request fulfillment

‌El tiempo de fulfillment de la instancia Spot varía según la oferta y la demanda en un momento dado. Si bien muchas solicitudes Spot se cumplirán rápidamente (minutos), otras no. Desafortunadamente, no es posible predecir de manera confiable lo que sucederá con una solicitud hasta que la haya realizado.

  • Allocation strategy: Determinar cómo se cumple su solicitud de Spot de los posibles grupos de Spot seleccionados para su lanzamiento. Las estrategias de asignación que puede especificar en su solicitud Spot:
  • Diversified: Las instancias de spot están equilibradas en todos los grupos de Spot.
  • Lowest price: Inicie instancias de Spot desde los grupos de Spot con el precio más bajo.
  • Maximum price: La cantidad máxima que está dispuesto a pagar por unidad u hora de instancia para todos los tipos de instancia seleccionados.
  • Default: Provisión de instancias al precio spot actual limitado al precio bajo demanda
  • Set your max price(per instance/hour)

Amount

A travez del Target Capacity (número de instancias o vCPU) puedes configurar el número de instancias que le gustaría iniciar. También puede aprovisionar capacidad mediante vCPU en varios tipos de instancia.‌

Igualmente con On-Demand portion tu puedes designar una parte de su capacidad objetivo total como On-Demand. Su parte de On-Demand persiste, mientras que su capacidad de Spot puede estar vinculada a la escala, según su configuración. Debe especificar una plantilla de inicio para que su solicitud de capacidad bajo demanda sea válida.

Configuration Spot Instance JSON

{
"IamFleetRole":"arn:aws:iam::906739970468:role/aws-ec2-spot-fleet-tagging-role",
"AllocationStrategy":"capacityOptimized",
"TargetCapacity":1,
"SpotPrice":"0.1",
"ValidFrom":"2019-11-05T20:33:35Z",
"ValidUntil":"2020-11-05T20:33:35Z",
"TerminateInstancesWithExpiration":true,
"LaunchSpecifications":[
{
"ImageId":"ami-02e680c4540db351e",
"InstanceType":"c4.large",
"KeyName":"accessToInstances",
"SpotPrice":"0.1",
"BlockDeviceMappings":[
{
"DeviceName":"/dev/xvda",
"Ebs":{
"DeleteOnTermination":true,
"VolumeType":"gp2",
"VolumeSize":8,
"SnapshotId":"snap-00525f7708ba0b6dc"
}
}
],
"SecurityGroups":[
{
"GroupId":"sg-0febe9e85b3216d98"
}
]
}
],
"Type":"request"
}‌

Spot Fleet

Fleet request setting

consola de AWS

‌La configuración para el request de la instancia Spot Fleet, desde la consola de administración, permite optimizar el request. Se usa lo siguiente para lograr una correcta asignación.‌

Recommendations:

Feet request. La nueva consola rediseñada Amazon EC2 Spot simplifica la experiencia de implementación de la capacidad Spot y también ofrece recomendaciones de Fleet basadas en los requisitos de su aplicación. Igualmente se puede seleccionar el tipos de instancias basados en un Spot savings.

Las recomendaciones son basadas del tablero Spot Instance Pricing History

Fleet allocation strategy:‌

  • Capacity Optimized: Es para el aprovisionamiento de instancias spot a través de EC2 Auto Scaling, EC2 Fleet y Spot Fleet. La estrategia de asignación “Capacidad optimizada” automáticamente hace el uso más eficiente de la capacidad disponible mientras sigue aprovechando los grandes descuentos ofrecidos por las instancias spot.
  • Diversified across instance pools in my fleet: Satisface su solicitud de capacidad utilizando un conjunto diversas agrupaciones de instancias de su Fleet. Esta opción le ayuda a evitar la interrupción concurrente generalizada y garantiza ahorros más consistentes.
  • Lowest price: Amazon EC2 lanza instancias puntuales desde sus agrupaciones de instancias con el precio más bajo‌

Tasks for specification — Spot Fleet

Resumiendo un poco el proceso “para usar un Spot Fleet, crea una Request Spot Fleet que incluye el Target Capacity, una porción opcional On-Demand, una o más especificaciones de lanzamiento para las instancias y el precio máximo que está dispuesto a pagar”.

Amazon EC2 intenta mantener la capacidad objetivo del spot fleet a medida que cambian los precios spot.

La siguientes son los tipos de tasks para las especificaciones de un Spot Fleet.

Especificaciones al crear un Spot Fleet

Cada especificación de inicio incluye la información que Amazon EC2 necesita para iniciar una instancia, como una AMI, tipo de instancia, subnet o zona de disponibilidad, y uno o más grupos de seguridad.

Role‌

Amazon EC2 usa AWSServiceRoleForEC2SpotFleet para completar las siguientes acciones:

  • ec2: RequestSpotInstances — Solicitar instancias puntuales
  • ec2: TerminateInstances — Terminar instancias puntuales
  • ec2: DescribeImages — Describe Amazon Machine Images (AMI) para las instancias Spot
  • ec2: DescribeInstanceStatus — Describe el estado de las instancias puntuales
  • ec2: DescribeSubnets — Describe las subredes para instancias puntuales
  • ec2: CreateTags — Agregue etiquetas de sistema a instancias puntuales

Se mantiene la solicitud válida un año a partir de la creación. Finalice las instancias cuando la solicitud caduque.‌

Amount

Un Spot Fleet intenta lanzar el número de instancias Spot e instancias On-Demand para cumplir con el Target Capacity (número de instancias o vCPU). Si especificó un Launch Template, puede asignar parte de la capacidad objetivo como On-Demand.

  • Mantener la capacidad objetivo: como hibernar, detener o finalizar ‌
  • Mantener el costo objetivo para Spot (avanzado — opcional): Establezca un límite de costo por hora máximo para el uso general de Spot para esta solicitud. Esto podría limitar su capacidad para lograr la capacidad objetivo, y es opcional.
  • Establece el costo máximo (por hora)

Spot Fleet Configuration JSON

{
"IamFleetRole":"arn:aws:iam::906739970468:role/aws-ec2-spot-fleet-tagging-role",
"AllocationStrategy":"capacityOptimized",
"TargetCapacity":1,
"SpotPrice":"0.1",
"ValidFrom":"2019-11-05T19:50:09Z",
"ValidUntil":"2020-11-05T19:50:09Z",
"TerminateInstancesWithExpiration":true,
"LaunchSpecifications":[
{
"ImageId":"ami-02e680c4540db351e",
"InstanceType":"c4.large",
"SubnetId":"subnet-2a5d5c42, subnet-38611e42",
"KeyName":"accessToInstances",
"SpotPrice":"0.1",
"BlockDeviceMappings":[
{
"DeviceName":"/dev/xvda",
"Ebs":{
"DeleteOnTermination":true,
"VolumeType":"gp2",
"VolumeSize":8,
"SnapshotId":"snap-00525f7708ba0b6dc"
}
}
]
},
{
"ImageId":"ami-02e680c4540db351e",
"InstanceType":"t3a.medium",
"SubnetId":"subnet-05248349, subnet-2a5d5c42, subnet-38611e42",
"KeyName":"accessToInstances",
"SpotPrice":"0.0376",
"BlockDeviceMappings":[
{
"DeviceName":"/dev/xvda",
"Ebs":{
"DeleteOnTermination":true,
"VolumeType":"gp2",
"VolumeSize":8,
"SnapshotId":"snap-00525f7708ba0b6dc"
}
}
]
},
{
"ImageId":"ami-02e680c4540db351e",
"InstanceType":"t3.medium",
"SubnetId":"subnet-05248349, subnet-2a5d5c42, subnet-38611e42",
"KeyName":"accessToInstances",
"SpotPrice":"0.0416",
"BlockDeviceMappings":[
{
"DeviceName":"/dev/xvda",
"Ebs":{
"DeleteOnTermination":true,
"VolumeType":"gp2",
"VolumeSize":8,
"SnapshotId":"snap-00525f7708ba0b6dc"
}
}
]
}
],
"Type":"request"
}

Important

Si Amazon EC2 finaliza una instancia de Spot, no se le cobrará por una hora parcial de uso. Sin embargo, si termina la instancia usted mismo, se le cobrará por la hora completa en que se ejecutó la instancia.

¡Muchas gracias!