Open12
Auto Scalingでスポットインスタンスを動かす
autoscaling
- 起動テンプレート作成
- https://docs.aws.amazon.com/ja_jp/autoscaling/ec2/userguide/create-launch-template.html
- VPC・サブネットはASG側で設定するため、テンプレート側では設定せず
- 使用するインスタンスタイプをフィルタしておく
- 起動テンプレートからASG作成
- オンデマンド0%,スポット100%とする
- 希望1台、最小1台、最大1台。0になったら絶対1に復帰するだけマン
- 1台スポットインスタンスが起動することを確認
試しにFISでスポットインスタンスを止めてみる
EC2 Spot Instance interruption notice
から10秒で新しいインスタンスが立ち上がる。
便利すね
通知もできる
インスタンスの起動・停止の際に通知を送ってくれる
コンソールからはSNSしか使えないみたい
スポット購入のオプションを設定しない
スポット購入オプションを設定すると、この様にテンプレートから起動できなくなりました
なので停止動作とかは指定できなさそうです
起動停止
インスタンスの停止は不可であるため、使いたいときはdesiredを1にし、使い終わったら0にするというやりかたになりそう
うーん少し手間かな
awscliでキャパシティを変更する
起動(キャパシティ1)
aws autoscaling update-auto-scaling-group \
--auto-scaling-group-name test-ubuntu-autoscaling \
--max-size 1 \
--min-size 1 \
--desired-capacity 1
停止(キャパシティ0)
aws autoscaling update-auto-scaling-group \
--auto-scaling-group-name test-ubuntu-autoscaling \
--max-size 0 \
--min-size 0 \
--desired-capacity 0
EBSも消え去るから停止するより安上がり?
インスタンスのstopではなく、インスタンスのterminateであるため、EBSのコストを抑えられるのはよいと思った
ちりつも
データの永続化
EBSだとマルチAZに対応しにくいため、EFSを使おうと思います。
流れはこんな感じか
- 新AMI作成
- EFS自動マウントを行う設定を入れる
- 新AMIからスポットインスタンス起動
- EFS自動マウント確認、ファイル格納
- キャパシティ0→1で新規スポットインスタンス起動
- EFSに格納されたファイルを閲覧・書き込み出来ることを確認
参考
過去にやった手順をなぞる
動作確認
スポットインスタンス(停止前)
特に理由は無いですが、インスタンスIDをのこしておくことにします。
新規作成されたインスタンスがこいつに書き込みできれば成功
ubuntu@ip-10-0-14-148:~$ echo $(curl http://169.254.169.254/latest/meta-data/instance-id) >> efs-mount-point/before.txt
スポットインスタンス停止・新規起動
aws autoscaling update-auto-scaling-group \
--auto-scaling-group-name test-ubuntu-autoscaling \
--max-size 0 \
--min-size 0 \
--desired-capacity 0
実行した10秒後くらいにセッションマネージャでの接続が切断されました
復活させます
aws autoscaling update-auto-scaling-group \
--auto-scaling-group-name test-ubuntu-autoscaling \
--max-size 1 \
--min-size 1 \
--desired-capacity 1
スポットインスタンス(新規起動後)
ubuntu@ip-10-0-5-30:~$ echo $(curl http://169.254.169.254/latest/meta-data/instance-id) >> efs-mount-point/before.txt
ubuntu@ip-10-0-5-30:~$ cat efs-mount-point/before.txt
i-05b45b5596999eb90
i-0e87e6f54d38e83c0
復活後のインスタンスでもEFSのデータに書き込み・参照が出来ました。
メリット
- 適当なインスタンスタイプから立ち上げてくれる
- これが大きい。persistentなスポットインスタンスは停止出来るが、容易にインスタンスタイプの変更ができなかった
- 自動起動してくれる