概要
- GCEのプリエンプティブVMを延べ60日モニタリングしてみた
- 24時間以内に落とされることは1回しかなかった
プリエンプティブVMとは?
Google Cloud Platform(以下GCP)で提供されているプリエンプティブVMは通常の約7割引の価格で利用できるお得なVMです。以下は公式の料金表記で、通常の3分の1以下の料金であることが確認できると思います。
詳細な仕様に関しては、以下のリンクが詳しいです。
プリエンプティブVMの制限
プリエンプティブルは格安で利用できる代わりに、以下のような制限があります。
- GCP側の都合で、いつでもVMが強制終了される可能性がある
- プリエンプティブVMは最大でも24時間で強制終了される
24時間以内に強制終了させられることはどのくらいあるのか?
プリエンプティブVMは、GCP側の都合でいつでも強制終了させられる可能性があります。では、実際にどのくらいの頻度で強制終了させられてしまうのでしょうか?
実際にプリエンプティブVMを複数立ち上げて、モニタリングしてみました。
計測方法
GKEのノードとしてプリエンプティブVMを5台配置
まず、GKE(Google Kubernetes Engine)でクラスタをプリエンプティブVMの5台構成で立ち上げました。通常のGCE(Google Compute Engine)でプリエンプティブVMを立ち上げた場合は、強制終了させられた場合に、再起動がかかりません。しかし、GKEのノードとして立ち上げた場合は、これらのVMが一つのインスタンスグループとして設定されます。インスタンスグループを設定すると、グループ内のインスタンスが予め設定されたインスタンス数よりも少なくなると、自動で新しいインスタンを立ち上げます。つまりこの構成なら、プリエンプティブVMが強制終了させられた直後に、新しいプリエンプティブVMが自動で立ち上がります。
Stackdriver Monitoringでインスタンスをモニタリング
プリエンプティブVMの起動状況は、Stackdriver Monitoringでモニタリングします。デフォルトだとGKE立ち上げ時にStackdriver Monitaringでの集計が有効になるので、特に追加で設定の必要はありません。
計測結果
上記で設定したように、5台のプリエンプティブVMを12日間動かして状況をモニタリングしてみました。
結果、12日の間で起動から24時間以内にVMが強制終了したのは、1度だけでした。今回は5台×12日観察したので、1/60という事です。それ以外は、ちょうど起動から24時間で終了していました。
まとめ: プリエンプティブVMは滅多に落とされない!
プリエンプティブVMは、従来的なVMの使い方だと検証・開発環境としてしか使えそうにありません。しかし、GCPのkubernetes Engineやインスタンスグループなどで大規模クラスタを組むことを前提として構成すれば、高性能なクラスタを格安で本番運用できるかもしれません。
特にGKEの場合は、もともとkubernetes自体がVMに状態を持たせない前提で設計することがほとんどだと思うので相性が良さそうです。機会があればプリエンプティブVMで中規模のシステムを本番運用してみたいですね・・・。