Spot Instance Recommendations

In version 3.58, Turbot  introduced the ability to specify AWS Spot Instances for Turbot Workers in the Turbot-Console CloudFormation Template.  Spot Instances provide customers a method to reduce their operating costs while maintaining the same level of throughput. This article describes the new parameters in the Turbot-Console template as well as common deployment practices.

Background Information on AWS Spot Instances

A Spot Instance is an unused EC2 instance that is available for less than the On-Demand price. Spot Instances enable you to request unused capacity at steep discounts.

Amazon maintains a set of best practices for EC2 Spot Instances.  Turbot recommends following these best practices to the greatest possible extent.

Spot Max Price

By default, the SpotMaxPrice value is not set in the Turbot Console template.  This signals AWS to keep the spot instance running should spot prices rise as high as the OnDemand price.  For spot instances of comparable size to the On-Demand instances, such as an On-Demand m5.XLarge and a Spot M5a.2XLarge, this isn't a problem.  For spot instances substantially larger than the On-Demand size, say an m5.8XLarge, the full On-Demand price may be higher than a customer wants to pay.  Customers must take care to ensure that their selections of instances sizes and SpotMaxPrice align to prevent unexpected spot instance costs.

Common Deployment Practices

Turbot was designed to be resilient to Turbot Worker failures. Should an instance fail for any reason, the Autoscaling Group will spin up a new Worker.  With this in mind, a reclaimed Spot Instance is no different than any other kind of mundane failure.  Should Spot Instances be reclaimed in quick succession, the Events-Q depth will increase until new Workers can be spun up to replace the lost capacity.  Each customer will need to decide their risk tolerance for the small possibility that spot instances will be reclaimed in rapid succession.

Max Spot Instances: A common usage scenario is to set OnDemandBaseCapacity to 1 and OnDemandPercentageAboveBaseCapacity to 99.  This creates a single OnDemand Worker with the remainder as Spot Instances

Balanced Spot Instances: Set OnDemandBaseCapacity to 50% of current Worker count and set OnDemandPercentageAboveBaseCapacity to 70%.

Capacity-Optimized Spot Pool Strategy

The capacity-optimized strategy automatically launches Spot Instances into the most available pools by looking at real-time capacity data and predicting which are the most available. This works well for workloads such as big data and analytics, image and media rendering, machine learning, and high performance computing that may have a higher cost of interruption. By offering the possibility of fewer interruptions, the capacity-optimized strategy can lower the overall cost of your workload.

New Parameters in the Turbot-Console Template

The new parameters are listed below along with the description text.

WorkersInstanceMode

Specifies the mix of Instance types to be used by the Auto Scaling group. Values can be ON_DEMAND | MIXED_INSTANCE. Selecting ON_DEMAND will set the Autoscaling Group to use 100% On-Demand Instances. For MIXED_INSTANCE, the Autoscaling Group will use a percentage of On-Demand instances as specified below. Use the parameters in this section to set the MIXED_INSTANCE Worker configuration.

OnDemandBaseCapacity

The minimum amount of the Auto Scaling group's capacity that must be fulfilled by On-Demand Instances. The default value is 0. If you leave this property set to 0, On-Demand Instances are launched as a percentage of the Auto Scaling group's desired capacity, per the OnDemandPercentageAboveBaseCapacity setting.

OnDemandPercentageAboveBaseCapacity

Controls the percentages of On-Demand Instances and Spot Instances for your additional capacity beyond OnDemandBaseCapacity. The range is 0 to 100. The default value is 100. When set to 100, all instances will be On-Demand Instances and no Spot Instances.

SpotAllocationStrategy

Indicates how to allocate Spot capacity across Spot pools. If the allocation strategy is lowest-price, the Auto Scaling group launches instances using the Spot pools with the lowest price, and evenly allocates your instances across the number of Spot pools that you specify. The capacity-optimized strategy allocates instances from the Spot Instance pools that are least likely to be interrupted.

SpotMaxPrice

The maximum price per unit hour that you are willing to pay for a Spot Instance. If you leave the value of this property blank (which is the default), the maximum Spot price is set at the On-Demand price.The range is 0 to 255.

OnDemandAllocationStrategy

Indicates how to allocate instance types to fulfill On-Demand capacity. Top prioritization is given to the instance type specified in WorkerSpotInstanceType1 then to the type described in WorkerSpotInstanceType2.

SpotInstancePools

The number of Spot pools to use to allocate your Spot capacity. The Spot pools are determined from the different instance types in the Overrides array of LaunchTemplate. Valid only when the Spot allocation strategy is lowest-price. The range is 2 to 20 with a default of 2. For values greater than 2, this template will need to be edited to specify the additional pools.

WorkerSpotInstanceType1

Turbot Worker EC2 instance type. Only used if TurbotServerRolesEnabled is true. This is the top preferred instance type.

WorkerSpotInstanceType2

Turbot Worker EC2 instance type. Only used if TurbotServerRolesEnabled is true. This is the second most preferred instance type.

For additional information or clarification, please contact Turbot Support at help@turbot.com.

 

Was this article helpful?
0 out of 0 found this helpful