Configuraciones de ejemplo de flota de spot - Amazon Elastic Compute Cloud

Configuraciones de ejemplo de flota de spot

En los siguientes ejemplos, se muestran configuraciones de inicialización que puede utilizar con el comando request-spot-fleet para crear una solicitud de flota de spot. Para obtener más información, consulte Creación de una solicitud de flota de spot.

nota

En la flota de spot, no se puede indicar un ID de interfaz de red en una especificación de inicialización. No olvide omitir el parámetro NetworkInterfaceID en la plantilla o especificación de inicialización.

Ejemplo 1: inicialización de instancias de spot con la zona de disponibilidad o subred de menor precio de la región

En el siguiente ejemplo se describe una especificación de inicialización sin una zona de disponibilidad o una subred. La flota de spot inicia las instancias en la zona de disponibilidad de menor precio que tenga una subred predeterminada. El precio que paga no supera el precio bajo demanda.

{ "TargetCapacity": 20, "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role", "LaunchSpecifications": [ { "ImageId": "ami-1a2b3c4d", "KeyName": "my-key-pair", "SecurityGroups": [ { "GroupId": "sg-1a2b3c4d" } ], "InstanceType": "m3.medium", "IamInstanceProfile": { "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role" } } ] }

Ejemplo 2: inicialización de instancias de spot con la zona de disponibilidad o subred de menor precio de una lista especificada

En los siguientes ejemplos se describen dos especificaciones de inicialización con zonas de disponibilidad o subredes diferentes, pero el mismo tipo de instancia y AMI.

Zonas de disponibilidad

La flota de spot inicia las instancias en la subred predeterminada de la zona de disponibilidad de menor precio que ha especificado.

{ "TargetCapacity": 20, "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role", "LaunchSpecifications": [ { "ImageId": "ami-1a2b3c4d", "KeyName": "my-key-pair", "SecurityGroups": [ { "GroupId": "sg-1a2b3c4d" } ], "InstanceType": "m3.medium", "Placement": { "AvailabilityZone": "us-west-2a, us-west-2b" }, "IamInstanceProfile": { "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role" } } ] }

Subredes

Puede especificar subredes predeterminadas o subredes no predeterminadas, y estas últimas pueden ser de una VPC predeterminada o de una VPC no predeterminada. El servicio de spot inicia las instancias en la subred que está en la zona de disponibilidad de menor precio.

No puede especificar diferentes subredes de la misma zona de disponibilidad en una solicitud de flota de spot.

{ "TargetCapacity": 20, "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role", "LaunchSpecifications": [ { "ImageId": "ami-1a2b3c4d", "KeyName": "my-key-pair", "SecurityGroups": [ { "GroupId": "sg-1a2b3c4d" } ], "InstanceType": "m3.medium", "SubnetId": "subnet-a61dafcf, subnet-65ea5f08", "IamInstanceProfile": { "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role" } } ] }

Si las instancias se inician en una VPC predeterminada, reciben una dirección IPv4 pública de forma predeterminada. Si las instancias se inician en una VPC no predeterminada, no reciben una dirección IPv4 pública de forma predeterminada. Use una interfaz de red en la especificación de inicialización para asignar una dirección IPv4 pública a las instancias iniciadas en una VPC no predeterminada. Si especifica una interfaz de red, debe incluir el ID de subred y el ID de grupo de seguridad mediante la interfaz de red.

... { "ImageId": "ami-1a2b3c4d", "KeyName": "my-key-pair", "InstanceType": "m3.medium", "NetworkInterfaces": [ { "DeviceIndex": 0, "SubnetId": "subnet-1a2b3c4d", "Groups": [ "sg-1a2b3c4d" ], "AssociatePublicIpAddress": true } ], "IamInstanceProfile": { "Arn": "arn:aws:iam::880185128111:instance-profile/my-iam-role" } } ...

Ejemplo 3: inicialización de instancias de spot con el tipo de instancia de menor precio de una lista especificada

En los siguientes ejemplos se describen dos configuraciones de inicialización con tipos de instancias diferentes, pero la misma AMI y zona de disponibilidad o subred. La flota de spot inicia las instancias mediante el tipo de instancia especificado con el menor precio.

Zona de disponibilidad

{ "TargetCapacity": 20, "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role", "LaunchSpecifications": [ { "ImageId": "ami-1a2b3c4d", "SecurityGroups": [ { "GroupId": "sg-1a2b3c4d" } ], "InstanceType": "c5.4xlarge", "Placement": { "AvailabilityZone": "us-west-2b" } }, { "ImageId": "ami-1a2b3c4d", "SecurityGroups": [ { "GroupId": "sg-1a2b3c4d" } ], "InstanceType": "r3.8xlarge", "Placement": { "AvailabilityZone": "us-west-2b" } } ] }

Subred

{ "TargetCapacity": 20, "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role", "LaunchSpecifications": [ { "ImageId": "ami-1a2b3c4d", "SecurityGroups": [ { "GroupId": "sg-1a2b3c4d" } ], "InstanceType": "c5.4xlarge", "SubnetId": "subnet-1a2b3c4d" }, { "ImageId": "ami-1a2b3c4d", "SecurityGroups": [ { "GroupId": "sg-1a2b3c4d" } ], "InstanceType": "r3.8xlarge", "SubnetId": "subnet-1a2b3c4d" } ] }

Ejemplo 4. Anulación del precio para la solicitud

Le recomendamos usar el precio máximo predeterminado, que es el precio bajo demanda. Si lo prefiere, puede especificar un precio máximo para la solicitud de flota y precios máximos para las especificaciones de inicialización individuales.

En los siguientes ejemplos se especifica un precio máximo para la solicitud de flota y precios máximos para dos de las tres especificaciones de inicialización. El precio máximo para la solicitud de flota se usa para cualquier especificación de inicialización que no especifique un precio máximo. La flota de spot inicia las instancias mediante el tipo de instancia con el menor precio.

Zona de disponibilidad

{ "SpotPrice": "1.00", "TargetCapacity": 30, "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role", "LaunchSpecifications": [ { "ImageId": "ami-1a2b3c4d", "InstanceType": "c3.2xlarge", "Placement": { "AvailabilityZone": "us-west-2b" }, "SpotPrice": "0.10" }, { "ImageId": "ami-1a2b3c4d", "InstanceType": "c3.4xlarge", "Placement": { "AvailabilityZone": "us-west-2b" }, "SpotPrice": "0.20" }, { "ImageId": "ami-1a2b3c4d", "InstanceType": "c3.8xlarge", "Placement": { "AvailabilityZone": "us-west-2b" } } ] }

Subred

{ "SpotPrice": "1.00", "TargetCapacity": 30, "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role", "LaunchSpecifications": [ { "ImageId": "ami-1a2b3c4d", "InstanceType": "c3.2xlarge", "SubnetId": "subnet-1a2b3c4d", "SpotPrice": "0.10" }, { "ImageId": "ami-1a2b3c4d", "InstanceType": "c3.4xlarge", "SubnetId": "subnet-1a2b3c4d", "SpotPrice": "0.20" }, { "ImageId": "ami-1a2b3c4d", "InstanceType": "c3.8xlarge", "SubnetId": "subnet-1a2b3c4d" } ] }

Ejemplo 5: inicialización de una flota de spot con la estrategia de asignación diversificada

En el siguiente ejemplo se usa la estrategia de asignación diversified. Las especificaciones de inicialización tienen tipos de instancias diferentes, pero la misma AMI y zona de disponibilidad o subred. La flota de spot distribuye las 30 instancias entre las tres especificaciones de inicialización, de forma que haya 10 instancias de cada tipo. Para obtener más información, consulte Estrategias de asignación de instancias de spot.

Zona de disponibilidad

{ "SpotPrice": "0.70", "TargetCapacity": 30, "AllocationStrategy": "diversified", "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role", "LaunchSpecifications": [ { "ImageId": "ami-1a2b3c4d", "InstanceType": "c4.2xlarge", "Placement": { "AvailabilityZone": "us-west-2b" } }, { "ImageId": "ami-1a2b3c4d", "InstanceType": "m3.2xlarge", "Placement": { "AvailabilityZone": "us-west-2b" } }, { "ImageId": "ami-1a2b3c4d", "InstanceType": "r3.2xlarge", "Placement": { "AvailabilityZone": "us-west-2b" } } ] }

Subred

{ "SpotPrice": "0.70", "TargetCapacity": 30, "AllocationStrategy": "diversified", "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role", "LaunchSpecifications": [ { "ImageId": "ami-1a2b3c4d", "InstanceType": "c4.2xlarge", "SubnetId": "subnet-1a2b3c4d" }, { "ImageId": "ami-1a2b3c4d", "InstanceType": "m3.2xlarge", "SubnetId": "subnet-1a2b3c4d" }, { "ImageId": "ami-1a2b3c4d", "InstanceType": "r3.2xlarge", "SubnetId": "subnet-1a2b3c4d" } ] }

Una práctica recomendada para aumentar la posibilidad de que una solicitud de spot se pueda satisfacer por la capacidad EC2 en caso de interrupción en una de las zonas de disponibilidad consiste en diversificar a través de zonas de disponibilidad. Para esta situación, incluya en la especificación de inicialización todas las zonas de disponibilidad que tenga a su disposición. Y, en lugar de utilizar la misma subred cada vez, utilice tres subredes únicas (cada una con mapeo a una zona de disponibilidad distinta).

Zona de disponibilidad

{ "SpotPrice": "0.70", "TargetCapacity": 30, "AllocationStrategy": "diversified", "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role", "LaunchSpecifications": [ { "ImageId": "ami-1a2b3c4d", "InstanceType": "c4.2xlarge", "Placement": { "AvailabilityZone": "us-west-2a" } }, { "ImageId": "ami-1a2b3c4d", "InstanceType": "m3.2xlarge", "Placement": { "AvailabilityZone": "us-west-2b" } }, { "ImageId": "ami-1a2b3c4d", "InstanceType": "r3.2xlarge", "Placement": { "AvailabilityZone": "us-west-2c" } } ] }

Subred

{ "SpotPrice": "0.70", "TargetCapacity": 30, "AllocationStrategy": "diversified", "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role", "LaunchSpecifications": [ { "ImageId": "ami-1a2b3c4d", "InstanceType": "c4.2xlarge", "SubnetId": "subnet-1a2b3c4d" }, { "ImageId": "ami-1a2b3c4d", "InstanceType": "m3.2xlarge", "SubnetId": "subnet-2a2b3c4d" }, { "ImageId": "ami-1a2b3c4d", "InstanceType": "r3.2xlarge", "SubnetId": "subnet-3a2b3c4d" } ] }

Ejemplo 6: inicialización de una flota de spot con ponderación de instancias

En los siguientes ejemplos se usa ponderación de instancias, que significa que el precio se determina por hora de unidad en lugar de por hora de instancia. Cada configuración de inicialización enumera un tipo de instancia y una ponderación diferentes. La flota de spot selecciona el tipo de instancia con el menor precio por hora de unidad. La flota de spot calcula el número de instancias de spot que debe iniciar mediante la división de la capacidad de destino por la ponderación de instancias. Si el resultado no es un entero, la flota de spot lo redondea al siguiente entero, de manera que el tamaño de la flota no esté por debajo de su capacidad de destino.

Si la solicitud de r3.2xlarge se realiza con éxito, la spot aprovisiona 4 de estas instancias. Se divide 20 por 6 que da un total de 3,33 instancias, que se redondean a 4 instancias.

Si la solicitud de c3.xlarge se realiza con éxito, la spot aprovisiona 7 de estas instancias. Se divide 20 por 3 que da un total de 6,66 instancias, que se redondean a 7 instancias.

Para obtener más información, consulte Ponderación de instancias de flota de spot.

Zona de disponibilidad

{ "SpotPrice": "0.70", "TargetCapacity": 20, "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role", "LaunchSpecifications": [ { "ImageId": "ami-1a2b3c4d", "InstanceType": "r3.2xlarge", "Placement": { "AvailabilityZone": "us-west-2b" }, "WeightedCapacity": 6 }, { "ImageId": "ami-1a2b3c4d", "InstanceType": "c3.xlarge", "Placement": { "AvailabilityZone": "us-west-2b" }, "WeightedCapacity": 3 } ] }

Subred

{ "SpotPrice": "0.70", "TargetCapacity": 20, "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role", "LaunchSpecifications": [ { "ImageId": "ami-1a2b3c4d", "InstanceType": "r3.2xlarge", "SubnetId": "subnet-1a2b3c4d", "WeightedCapacity": 6 }, { "ImageId": "ami-1a2b3c4d", "InstanceType": "c3.xlarge", "SubnetId": "subnet-1a2b3c4d", "WeightedCapacity": 3 } ] }

Ejemplo 7: inicialización de una flota de spot con capacidad bajo demanda

Para asegurarse de que dispone siempre de capacidad de instancias, puede incluir una solicitud de capacidad bajo demanda en la solicitud de flota de spot. Si hay capacidad, siempre se cumple la solicitud bajo demanda. El saldo de la capacidad de destino se cumple como spot si hay capacidad y disponibilidad.

En el siguiente ejemplo se especifica una capacidad de destino deseada de 10, de las que 5 unidades deben ser de capacidad bajo demanda. La capacidad de spot no se especifica; sino que está implícita en el saldo de la capacidad de destino menos la capacidad bajo demanda. Amazon EC2 inicia 5 unidades de capacidad como unidades bajo demanda y 5 unidades de capacidad (10 - 5 = 5) como unidades de spot si hay disponibilidad y capacidad de Amazon EC2 disponible.

Para obtener más información, consulte Capacidad bajo demanda en la flota de spot.

{ "IamFleetRole": "arn:aws:iam::781603563322:role/aws-ec2-spot-fleet-tagging-role", "AllocationStrategy": "lowestPrice", "TargetCapacity": 10, "SpotPrice": null, "ValidFrom": "2018-04-04T15:58:13Z", "ValidUntil": "2019-04-04T15:58:13Z", "TerminateInstancesWithExpiration": true, "LaunchSpecifications": [], "Type": "maintain", "OnDemandTargetCapacity": 5, "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-0dbb04d4a6cca5ad1", "Version": "2" }, "Overrides": [ { "InstanceType": "t2.medium", "WeightedCapacity": 1, "SubnetId": "subnet-d0dc51fb" } ] } ] }

Ejemplo 8: configurar el reequilibrio de capacidad para iniciar instancias de spot de reemplazo

En el siguiente ejemplo, se configura una flota de spot para iniciar una instancia de spot de reemplazo cuando Amazon EC2 emita una recomendación de reequilibrio para una instancia de spot en su flota. Para configurar el reemplazo automático de instancias de spot para ReplacementStrategy, especifique launch-before-terminate. Para configurar el retraso de tiempo desde la inicialización de las nuevas instancias de spot de reemplazo hasta la eliminación automática de las instancias de spot anteriores, especifique en termination-delay un valor en segundos. Para obtener más información, consulte Opciones de configuración.

nota

Recomendamos utilizar launch-before-terminate solo si puede predecir cuánto tiempo tardarán en completarse los procedimientos de cierre de instancias. Esto garantiza que las instancias anteriores terminen solo después de que se hayan completado los procedimientos de cierre. Se cobrará por todas las instancias mientras se ejecutan.

La efectividad de la estrategia de reequilibrio de capacidad depende del número de grupos de capacidades de spot especificados en la solicitud flota de spot. Se recomienda configurar la flota con un conjunto diversificado de tipos de instancia y zonas de disponibilidad y para AllocationStrategyespecificar capacityOptimized. Para obtener más información sobre lo que debe tener en cuenta al momento de configurar una flota de spot para el reequilibrio de la capacidad, consulte Reequilibrio de la capacidad.

{ "SpotFleetRequestConfig": { "AllocationStrategy": "capacityOptimized", "IamFleetRole": "arn:aws:iam::000000000000:role/aws-ec2-spot-fleet-tagging-role", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "LaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceType": "c3.large", "WeightedCapacity": 1, "Placement": { "AvailabilityZone": "us-east-1a" } }, { "InstanceType": "c4.large", "WeightedCapacity": 1, "Placement": { "AvailabilityZone": "us-east-1a" } }, { "InstanceType": "c5.large", "WeightedCapacity": 1, "Placement": { "AvailabilityZone": "us-east-1a" } } ] } ], "TargetCapacity": 5, "SpotMaintenanceStrategies": { "CapacityRebalance": { "ReplacementStrategy": "launch-before-terminate", "TerminationDelay": "720" } } } }

Ejemplo 9: inicialización de instancias de spot en una flota de capacidad optimizada

En el siguiente ejemplo se demuestra cómo configurar una flota de spot con una estrategia de asignación de spot que optimiza la capacidad. Para optimizar la capacidad, debe establecer AllocationStrategy en capacityOptimized.

En el siguiente ejemplo, las tres especificaciones de inicialización determinan tres grupos de capacidad de spot. La capacidad de destino es de 50 instancias de spot. La flota de spot intenta iniciar 50 instancias de spot en el grupo de capacidad de spot con capacidad óptima para el número de instancias que va a iniciar.

{ "TargetCapacity": "50", "SpotFleetRequestConfig": { "AllocationStrategy": "capacityOptimized", }, "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "1" }, "Overrides": [ { "InstanceType": "r4.2xlarge", "AvailabilityZone": "us-west-2a" }, { "InstanceType": "m4.2xlarge", "AvailabilityZone": "us-west-2b" }, { "InstanceType": "c5.2xlarge", "AvailabilityZone": "us-west-2b" } ] } ] }

Ejemplo 10: inicialización de instancias de spot en una flota de capacidad optimizada con prioridades

En el siguiente ejemplo se demuestra cómo configurar una flota de spot con una estrategia de asignación de spot que optimiza la capacidad mientras se utiliza la prioridad sobre la base del mejor esfuerzo.

Cuando se utiliza la estrategia de asignación capacityOptimizedPrioritized, puede utilizar el parámetro Priority para especificar las prioridades de los grupos de capacidad de spot, donde cuanto menor es el número, mayor es la prioridad. También puede establecer la misma prioridad para varios grupos de capacidad de spot si los prefiere por igual. Si no establece una prioridad para un grupo, este se considerará último en términos de prioridad.

Para priorizar los grupos de capacidad de spot, debe establecer AllocationStrategy en capacityOptimizedPrioritized. La flota de spot optimizará primero la capacidad, pero respetará las prioridades sobre la base del mejor esfuerzo (por ejemplo, si el respeto de las prioridades no afecta significativamente la capacidad de la flota de spot para aprovisionar capacidad óptima). Esta es una buena opción para cargas de trabajo en las que se debe minimizar la posibilidad de interrupción y también importa la preferencia por ciertos tipos de instancias.

En el siguiente ejemplo, las tres especificaciones de inicialización determinan tres grupos de capacidad de spot. Cada grupo se prioriza, de manera que cuanto menor sea el número, mayor es la prioridad. La capacidad de destino es de 50 instancias de spot. La flota de spot intenta iniciar 50 instancias de spot en el grupo de capacidad de spot con la máxima prioridad sobre la base del mejor esfuerzo, pero optimiza primero la capacidad.

{ "TargetCapacity": "50", "SpotFleetRequestConfig": { "AllocationStrategy": "capacityOptimizedPrioritized" }, "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "1" }, "Overrides": [ { "InstanceType": "r4.2xlarge", "Priority": 1, "AvailabilityZone": "us-west-2a" }, { "InstanceType": "m4.2xlarge", "Priority": 2, "AvailabilityZone": "us-west-2b" }, { "InstanceType": "c5.2xlarge", "Priority": 3, "AvailabilityZone": "us-west-2b" } ] } ] }

Ejemplo 11: inicialización de instancias de spot en una flota priceCapacityOptimized

En el siguiente ejemplo, se muestra cómo configurar una flota de spot con una estrategia de asignación de spot que optimiza tanto para la capacidad como para el precio más bajo. Para optimizar la capacidad, además de tener en cuenta el precio, debe establecer el elemento AllocationStrategy de spot en priceCapacityOptimized.

En el siguiente ejemplo, las tres especificaciones de inicialización determinan tres grupos de capacidad de spot. La capacidad de destino es de 50 instancias de spot. La flota de spot intenta iniciar 50 instancias de spot en el grupo de capacidad de spot con capacidad óptima para la cantidad de instancias que se van a iniciar y, al mismo tiempo, elegir el grupo que tenga el precio más bajo.

{ "SpotFleetRequestConfig": { "AllocationStrategy": "priceCapacityOptimized", "OnDemandAllocationStrategy": "lowestPrice", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::111111111111:role/aws-ec2-spot-fleet-tagging-role", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-0123456789example", "Version": "1" }, "Overrides": [ { "InstanceType": "r4.2xlarge", "AvailabilityZone": "us-west-2a" }, { "InstanceType": "m4.2xlarge", "AvailabilityZone": "us-west-2b" }, { "InstanceType": "c5.2xlarge", "AvailabilityZone": "us-west-2b" } ] } ], "TargetCapacity": 50, "Type": "request" } }

Ejemplo 12: configuración de la selección de tipos de instancia basada en atributos

En el siguiente ejemplo, se muestra cómo configurar una flota de spot para utilizar la selección de tipos de instancia basada en atributos para identificar los tipos de instancia. Para especificar los atributos de instancia necesarios, especifique los atributos en la estructura de InstanceRequirements.

En el siguiente ejemplo, se especifican dos atributos de instancia:

  • VCpuCount: se especifica un mínimo de 2 vCPU. Como no se especifica ningún máximo, no hay ningún límite máximo.

  • MemoryMiB: se especifica un mínimo de 4 MiB de memoria. Como no se especifica ningún máximo, no hay ningún límite máximo.

Se identificarán los tipos de instancia que tengan 2 o más vCPU y 4 MiB o más de memoria. Sin embargo, la protección de precios y la estrategia de asignación pueden excluir algunos tipos de instancias cuando la flota de spot aprovisiona la flota.

Para obtener una lista y descripciones de todos los atributos posibles que se pueden especificar, consulte InstanceRequirements en la Referencia de la API de Amazon EC2.

{ "AllocationStrategy": "priceCapacityOptimized", "TargetCapacity": 20, "Type": "request", "LaunchTemplateConfigs": [{ "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "1" }, "Overrides": [{ "InstanceRequirements": { "VCpuCount": { "Min": 2 }, "MemoryMiB": { "Min": 4 } } }] }] }