この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
AWSチームのすずきです。
2018年11月に紹介させて頂いたEC2オートスケーリングのインスタンスタイプの組み合わせ設定、 CloudFormationを利用して行う機会がありましたので、紹介させて頂きます。
設定
LaunchTemplate
- MixedInstancesPolicy で利用する起動テンプレート、バージョンは1〜20に限られる制限が存在します。その回避のため、起動テンプレート名(LaunchTemplateName)の変更によるリソースの置換により、バージョンを1に戻せる設定としました。
Type: AWS::EC2::LaunchTemplate
Properties:
LaunchTemplateName: !Ref 'Ec2LaunchtemplateName'
LaunchTemplateData:
KeyName: !Ref 'Ec2InstanceKeyName'
ImageId: !Ref 'Ec2ImageId'
InstanceType: t2.micro
AutoScalingGroup
- MixedInstancesPolicy で インスタンスの組み合わせ条件を指定します。
- Overrides で利用するインスタンスタイプを指定します。オンデマンドインスタンスはインスタンスタイプ指定の記述順序が早いもの、スポットインスタンスはスポット価格が廉価なものが優先して利用されます。
Type: AWS::AutoScaling::AutoScalingGroup
Properties:
MixedInstancesPolicy:
InstancesDistribution:
OnDemandBaseCapacity: 1
OnDemandPercentageAboveBaseCapacity: 10
SpotInstancePools: 2
LaunchTemplate:
LaunchTemplateSpecification:
LaunchTemplateId: !Ref 'Ec2InstanceLaunchTemplate'
Version: !GetAtt 'Ec2InstanceLaunchTemplate.LatestVersionNumber'
Overrides:
- InstanceType: t3.micro
- InstanceType: t2.micro
実行結果
- テンプレートを利用して10台のEC2インスタンスの起動を試みました。
CloudFormationパラメータ指定
オートスケーリンググループ設定
スポットインスタンス起動状況
- 8台がスポットインスタンスとして起動しました、
- ap-northeast-1d (apne1-az2)は4台全てが「t3」
- ap-northeast-1a (apne1-az4)は、2台が「t2」、2台が「t3」で起動しました。
まとめ
CloudFormationで作成したEC2のオートスケール環境、「MixedInstancesPolicy」の指定によりインスタンスタイプの混在が簡単に設定可能になりました。
スポットインスタンスの活用によるEC2費用の抑制や、AWSの在庫が不足気味なインスタンスを利用する際、InsufficientInstanceCapacityエラーが問題になる場合の回避策として活用ください。