Open12

Auto Scalingでスポットインスタンスを動かす

not75743not75743

autoscaling

  • 起動テンプレート作成
  • 起動テンプレートからASG作成
    • オンデマンド0%,スポット100%とする
    • 希望1台、最小1台、最大1台。0になったら絶対1に復帰するだけマン
  • 1台スポットインスタンスが起動することを確認
not75743not75743

試しにFISでスポットインスタンスを止めてみる

EC2 Spot Instance interruption noticeから10秒で新しいインスタンスが立ち上がる。
便利すね

not75743not75743

起動停止

インスタンスの停止は不可であるため、使いたいときはdesiredを1にし、使い終わったら0にするというやりかたになりそう
うーん少し手間かな

not75743not75743

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

https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/update-auto-scaling-group.html
https://qiita.com/miyabiz/items/39ca50f1750018d9a59f

not75743not75743

EBSも消え去るから停止するより安上がり?

インスタンスのstopではなく、インスタンスのterminateであるため、EBSのコストを抑えられるのはよいと思った
ちりつも

not75743not75743

データの永続化

EBSだとマルチAZに対応しにくいため、EFSを使おうと思います。
流れはこんな感じか

  • 新AMI作成
    • EFS自動マウントを行う設定を入れる
  • 新AMIからスポットインスタンス起動
  • EFS自動マウント確認、ファイル格納
  • キャパシティ0→1で新規スポットインスタンス起動
  • EFSに格納されたファイルを閲覧・書き込み出来ることを確認
not75743not75743

動作確認

スポットインスタンス(停止前)

特に理由は無いですが、インスタンス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のデータに書き込み・参照が出来ました。

not75743not75743

メリット

  • 適当なインスタンスタイプから立ち上げてくれる
    • これが大きい。persistentなスポットインスタンスは停止出来るが、容易にインスタンスタイプの変更ができなかった
  • 自動起動してくれる