この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
AWSチームのすずきです。
2020/11/4 のアップデートで、Amazon EC2 Auto Scaling で キャパシティリバランシング機能が利用可能になりました。
当設定を有効にした環境で、停止リスクの高まったスポットインスタンスの交換を確認する機会がありましたので、 紹介させていただきます。
設定
EC2 オートスケーリングの設定より、「キャパシティーの再調整」を有効化しました。
CloudFormation を利用する場合、「CapacityRebalance: true」で設定可能です。
Ec2InstanceAutoScalingGroup:
Type: AWS::AutoScaling::AutoScalingGroup
CreationPolicy:
Properties:
CapacityRebalance: true
MixedInstancesPolicy:
InstancesDistribution:
OnDemandBaseCapacity: 0
OnDemandPercentageAboveBaseCapacity: 0
SpotAllocationStrategy: capacity-optimized
LaunchTemplate:
LaunchTemplateSpecification:
LaunchTemplateId: !Ref 'Ec2LaunchTemplate'
Version: !GetAtt 'Ec2LaunchTemplate.LatestVersionNumber'
Overrides:
- InstanceType: t3a.micro
- InstanceType: t3.micro
確認
「キャパシティーの再調整」を有効化後、11/12 23時台 に 発生していた リバランスの挙動を確認しました。
EC2 オートスケール (History)
ステータス | 説明 | 原因 |
---|---|---|
Successful | Launching a new EC2 instance: i-0a727c389660b6734 | At 2020-11-12T23:14:49Z an instance was launched in response to an EC2 Instance rebalance recommendation. |
Successful | Terminating EC2 instance: i-000a66fd275cd41bd | At 2020-11-12T23:42:43Z an instance was taken out of service in response to a EC2 Instance rebalance recommendation. |
EventBridge
EC2が起動した 13秒前に、リバランスの通知が記録されていました。
{
"version": "0",
"id": "00000000-0000-0000-0000-000000000000",
"detail-type": "EC2 Instance Rebalance Recommendation",
"source": "aws.ec2",
"account": "000000000000",
"time": "2020-11-12T23:14:36Z",
"region": "ap-northeast-1",
"resources": [
"arn:aws:ec2:ap-northeast-1:000000000000:instance/i-000a66fd275cd41bd"
],
"detail": {
"instance-id": "i-000a66fd275cd41bd"
}
}
EC2 交換詳細
起動インスタンス(i-0a727c389660b6734 )
項番 | 事象 | 説明 | 時刻 |
---|---|---|---|
1 | EC2起動開始 | RunInstances | 23:14:52 |
2 | ELB登録開始 | RegisterTargets | 23:15:23 |
3 | ヘルスチェック完了 | (5回x20秒) | 23:17:03 |
停止インスタンス(i-000a66fd275cd41bd)
項番 | 事象 | 説明 | 時刻 |
---|---|---|---|
1 | ELBから取り外し開始 | DeregisterTargets | 23:42:44 |
2 | 登録解除待機 (Deregistration delay) | 20秒 | 23:43:04 |
3 | EC2停止 | TerminateInstances | 23:43:13 |
ELBメトリック
有効な EC2 インスタンスの台数が維持されている事、EC2 交換中にエラーが発生していない事を確認できました。
まとめ
複数のインスタンスタイプ、AZを利用するEC2 オートスケール環境、 キャパシティのリバランシング機能を利用する事で、 強制停止のリスクが高まったスポットインスタンスを自動で予防交換可能になりました。
スポットインスタンスは、オンデマンド費用と比較して70%削減、3年契約のリザーブドインスタンスに匹敵する価格で利用可能です。
EC2オートスケールの複数インスタンスタイプの混在指定や、キャパシティーで最適化された新しい配分設定と合わせてご利用ください。
リバランシングを有効化した後、スポットインスタンスの強制終了は確認できていませんが、 スポット在庫が急激に逼迫した場合などには、リバランスが間に合わず強制終了が発動する事は起きうる模様です。
スポットインスタンスの強制終了による影響の極小化が望まれる場合、 強制終了2分前 (EC2 Spot Instance Interruption Warning) の通知を利用して、 EventBridge と Lambda 関数 などで 対象のインスタンスを 安全に除外する処理も併用してご利用ください。