MobingiALM で
スポットインスタンスを
いい感じに手なづけている裏側の話
Masafumi Noguchi
2017.8.10 MasterCloud #4
自己紹介
・野口雅史(Masafumi Noguchi)
・Mobingi, Inc.
・github.com/ngratin
・Mobingi blog - https://labs.mobingi.com
・Slack group - https://slack.mobingi.com
Mobingi ALM (Saasサービス)
・アプリケーションをクラウドで動かすことを簡単に。
・インフラ/アプリケーション実行環境の構築、継続的
 なデプロイの自動化。
・アプリケーション実行環境はDocker を利用。
・お客様はアプリケーションの開発に集中出来る。
についてのお話
(スポットブロック、スポットフリートではなく通常の
 スポットインスタンスのお話です)
とは?
Amazon EC2 の購入オプション
オンデマンド 通常の従量課金(長期契約、前払いなし)
リザーブド
1~3年間の利用予約
オンデマンドの最大75%割引 
スポット
未使用のインスタンスに入札し利用
オンデマンドの最大90%割引
Dedicated
Host
専用物理サーバ
Amazon EC2 の購入オプション
オンデマンド 通常の従量課金(長期契約、前払いなし)
リザーブド
1~3年間の利用予約
オンデマンドの最大75%割引 
スポット
未使用のインスタンスに入札し利用
オンデマンドの最大90%割引
Dedicated
Host
専用物理サーバ
料金例 (2017.8.9 10:30時点, 東京リージョン, Linux, 1時間当たりの単価)
オンデマンド スポット 割引率
m4.large $0.129 $0.0286 78%
m3.medium $0.096 $0.0124 87%
r4.large $0.16 $0.0253 84%
c4.large $0.126 $0.029 77%
料金例 (2017.8.9 10:30時点, 東京リージョン, Linux, 1時間当たりの単価)
オンデマンド スポット 割引率
m4.large $0.129 $0.0286 78%
m3.medium $0.096 $0.0124 87%
r4.large $0.16 $0.0253 84%
c4.large $0.126 $0.029 77%
なぜ安いのか
・未使用のインスタンスを安くてもいいから使っても
 らいたい。(AWS)
・入札形式。入札価格がスポット価格を上回り、空き
 があれば利用可能。(需要と共有)
・スポット価格が変動し、入札価格を上回ると強制
 ターミネートされる。
スポットインスタンスの仕組み
スポット価格
オンデマンド価格
スポットインスタンスの仕組み
スポット価格
入札価格
オンデマンド価格
スポットインスタンスの仕組み
スポット価格
入札価格
オンデマンド価格
起動可能 起動可能削除 削除
スポットインスタンス価格履歴
スポットインスタンス価格履歴
スポットインスタンスの仕組み
スポット価格
入札価格
オンデマンド価格
課金されるのはスポット価格
(入札価格ではない)
スポットインスタンス活用のポイント
・コストを下げつつ継続的にサービスを提供したい
- オンデマンドとの併用
- 入札価格
・強制ターミネート前の処理
- 新規のリクエストは停止しておきたい
スポットインスタンス活用のポイント
・コストを下げつつ継続的にサービスを提供したい
- オンデマンドとの併用
- 入札価格
・強制ターミネート前の処理
- 新規のリクエストは停止しておきたい
スポットインスタンス活用
スタックの重要度や目的に合わせて、お客様自身で
スポットインスタンスの割合を設定可能
たとえば、
・テスト環境であればサービス停止を許容しスポット100%
・QA 環境であればスポット50%
 (オンデマンドの数を担保しておく)
構成
On-Demand
Spot
構成
・Auto Scaling Group, Launch Configuration の組を
 オンデマンドインスタンス用、スポットインスタ
 ンス用とで分ける。
・同じロードバランサの配下に設定する。
・一般的な組み合わせですが、
 AWSでこの構成は自動で設定してくれない。
スポットインスタンス活用のポイント
・コストを下げつつ継続的にサービスを提供したい
- オンデマンドとの併用
- 入札価格
・強制ターミネート前の処理
- 新規のリクエストは停止しておきたい
Cost vs. Availability
スポット価格
オンデマンド価格
Cost vs. Availability
スポット価格
入札価格
オンデマンド価格
Cost vs. Availability
スポット価格
入札価格
オンデマンド価格
Cost vs. Availability
スポット価格
入札価格
オンデマンド価格
削除削除 起動可能
Cost vs. Availability
スポット価格
入札価格
オンデマンド価格
Cost vs. Availability
スポット価格
入札価格
オンデマンド価格
起動可能
スポットインスタンス活用のポイント
・コストを下げつつ継続的にサービスを提供したい
- オンデマンドとの併用
- 入札価格
・強制ターミネート前の処理
- 新規のリクエストは停止しておきたい
構成
On-Demand
Spot
構成
On-Demand
Spot
構成
On-Demand
Spot
リクエストは受け付けない
ようにしたい
強制ターミネートの通知を受取る方法
・インスタンスメタデータで取得
・強制ターミネートの 2 分前から警告が提供される
- 通常は 404
- 強制ターミネート対象の場合、ターミネート時刻が返る
http://169.254.169.254/latest/meta-data/spot/termination-time
強制ターミネートの通知を受取る方法
強制ターミネートの通知を受取る方法
強制ターミネートの通知を受取る方法
・インスタンスメタデータで取得
・強制ターミネートの 2 分前から警告が提供される
- 通常は 404
- 強制ターミネート対象の場合、ターミネート時刻が返る
http://169.254.169.254/latest/meta-data/spot/termination-time
modaemon (MobingiALM)
・コンテナ管理デーモン
・docker run/stop, git clone
・NAT (Host - Container)
Container
Ubuntu
Apache
PHP
modaemon
Host OS
Docker
・コンテナ管理デーモン
・docker run/stop, git clone
・NAT (Host - Container)
・メタデータチェック(ELB からデタッチ)
Container
Ubuntu
Apache
PHP
modaemon
Host OS
Docker
Check metadata
modaemon (MobingiALM)
まとめ
・スポットインスタンスを活用してコスト削減
・オートスケーリンググループを分けることで、
 オンデマンドインスタンスの数を担保。
・MobingiALM では modaemon でインスタンス側で
 必要な対応をしている。
さいごに
Alibaba Cloud にもスポットインスタンス欲しいですね♥
MobingiALM でスポットインスタンスをいい感じに手なづけている裏側の話 / How to manage EC2 Spot Instances

MobingiALM でスポットインスタンスをいい感じに手なづけている裏側の話 / How to manage EC2 Spot Instances