GoogleがGoogle Compute Engine ’プリエンプティブル(preemptible)’仮想マシン(VM)のベータ版をリリースした。実行時間が最大24時間に制限されていること,随時シャットダウンされること以外は通常のインスタンスと同等だが,通常のインスタンスよりも最大で70%割引された固定価格で提供される。
プリエンプティブルVMは,随時シャットダウンされるという例外を除けば,通常のGoogle Computer Engine(GCE) VMインスタンスと同じである。VMの稼働時間を保証しないことで,プリエンプティブルなインスタンスは,大幅な割引価格で提供することが可能になっている。この動作は,Amazon Web Service(AWS)のスポットインスタンスVMが提供するサービスと同等だが,価格の’入札’が必要なAWSスポットインスタンスとは違って,固定料金で提供される。
Google Cloud Platformブログには,プリエンプティブルVMがGoogleデータセンタの空き領域内で実行されること,回収(あるいは‘無効化/preempt’)可能であることによってデータセンタの使用率を最適化できること,などの説明がある。プリエンプティブルVMの実行時間は24時間以内に制限されている。インスタンスは無効化される場合,シャットダウン30秒前の警告通知を受信する。最初GCEは,ACPI G2 Soft Offシグナルの形式で,インスタンスにプリエンプション通知を送信する。30秒後にインスタンスが停止していなければ,ACPS G3 Mechaninal Off信号をインスタンスのオペレーティングシステムに送信した上で,インスタンスを‘TERMINATED’状態に移行する。
プリエンプティブルVMはGCE開発者コンソール,gcloud CLIツール,GCE APIを通じて生成できる。GCE開発者コンソールでは‘availability policies’ でプリエンプトの可否を指定できる。また,gcloud CLIツールでは ‘--preemptible’オプションで,GCE APIではトップレベルの‘scheduling’キー下にあるブール値‘preemptible’キーを使って,同じ指定が可能だ。プリエンプトを有効にすると,自動再起動の無効化やライブマイグレーションの防止,ホストのメンテナンスアクションを‘Terminate’に設定,といった操作が自動的に行われる。これらの設定がユーザのワークロード要件を満足するかどうかは,VMユーザが責任を持たなくてはならない。
GCE上でHadoopを運用するユーザは,Hadoopクラスタを生成するオープンソースのbdutilツールを使って,プリエンプティブルVMと通常のVMを混在させることが可能だ。bdutil CLIで‘--preemptible .25’オプションを指定すれば,生成されるクラスタの25%(あるいは指定した任意の割合)がプリエンプティブルVMとして実行される。
Google Compute Platformブログでは,プリエンプティブルVMについて,単一インスタンスの継続的実行を必要としない分散型のフォールトトレラントなワークロードに適した選択肢であるとしている。このタイプのワークロードとしては,ビデオエンコーディングや視覚効果のレンダリング,データ分析,シミュレーション,ゲノミクスといったものが挙げられる。これらのように,非常に大きなコンピュータリソースを必要とするが,通常は1回のみ,定期的に実行されるようなユースケースは,クラウドコンピューティングに向いている。
InfoQでは,Google Cloud PlatformのシニアプロダクトマネージャであるPaul Nash氏に,プリエンプティブルVMのリリースについていくつか質問をした。
InfoQ: プリエンプティブルのインスタンスに固定価格を設定したことは興味深い選択ですが, この価格モデルを選択した理由について,詳しく説明して頂けますか?
Nash: この領域では,もっとシンプルな価格設定の方が理に適っていると思ったからです。その点に付いては,十分に調査して確証を得ています。多くのユーザとの対話を通じて,彼らがオークションベースの価格モデルを望まないのには,2つの明確な理由のあることが明らかになりました。ひとつはマーケットが不透明であることです。誰が入札しているのか,いくら払うつもりなのか,まったく分かりません。オークションマーケットがこのように不透明であれば,その時点で最高額を獲得できるセラーにはメリットがありますが,バイヤーが常に公正な取引をしているかどうかは判然としません。私たちが耳にしたふたつめの理由は,ユーザが予測不可能性を好まないということです。ある日には安価でも,別の日には,必要なインスタンスタイプや好ましいロケーションが高くて手が出なかったりするのです。ユーザからの要望で,それを管理するためのソフトウェア開発に何年も費やしている(そして,そのために資金を減らしている)サードパーティ企業をいくつか知っています。私たちの価格モデルはWin-Winだと思っています。設備の稼働率を向上すると同時に,ユーザには安価で,しかも予測可能な価格を提示できているからです。
InfoQ: 今回のプリエンプティブルVMには,設計上の興味深い選択がいくつか含まれています。例えば24時間という稼働時間制限などですが,このような選択肢について,もう少し詳しく説明して頂けますか? 特定のユースケースを勧めることが目的なのでしょうか,あるいは,Google Cloud Platform内でのリソース管理方法に関わる制限なのですか?
Nash: 24時間という制限は,主に“プリエンプションの対象”であることを意識してもらうためのものです。プリエンプティブルVMを使って動作するアプリケーションは,24時間以内に余裕を持って,無効化される準備をしておかなくてはなりません。制限を固定したことは,これを強く印象付けるためです。ある日目を覚ますと,その日が大晦日で,通常のVMへの要求数がオーバーしていたという理由から,それまで5日間連続動作していたVMが突然,12時間単位で停止させられるようになった,というような体験をさせたくはないのです。初期ユーザの大部分は,24時間という制限に納得しているか,あるいはユーザにはもっと長い期間(1週間といったように)が必要であっても,VMはそれ程長い期間連続動作する必要はないことに気付いたか,のいずれかでした。
InfoQ: ACPI G2 Soft Offシグナル警告の30秒というのは,(その他のベンダのシャットダウン警告に比べて)比較的短いのですが,30秒という時間を選択した理由は何でしょう?
Nash: クリーンシャットダウンに時間的猶予が必要なのは間違いありませんが,初期導入ユーザの多くのシナリオで,30秒は十分以上な時間だということが分かったからです。通常のVMがプリエンプティブルVMの占有するスペースを必要とする時,プリエンプティブルVMがシャットダウンするまで,通常のVMが待機しなくてはならない場合があります。VMの生成時間にはアグレッシブな目標を持っています(ユーザがGoogle Compute Engineを好む理由のひとつでもあります)し,終了時のレイテンシも極端に大きくしたくはありません。
InfoQ: プリエンプティブルVMには現在,ライブマイグレーションができないという注意もありますが,将来的には追加されるのでしょうか? 必要に応じた追加費用を厭わない人たちのために,プリエンプティブルVMを標準VMに‘アップグレード’することは可能ですか?
Nash: 私たちの目標は,通常のVMに影響することなく,プリエンプティブルVMで有用な処理を可能にすることです。その上で,一部のクラスの廃止を防ぐためのライブマイグレーションサポートが必要になったのであれば,それを検討したいと思っています。
プリエンプティブルVMを標準的なVMに“アップグレード”したいユーザは,一般的には動作保証のレベルを向上したいか,あるいはプリエンプティブルVMには合わないような長時間動作するタスクを実行したいと考えていると思います。多くの場合は,標準的なインスタンスのプールを用意しておいて,プリエンプティブルVMを補足的に使用する方が理に適っているでしょう。VMがプリエンプトあるいは停止する場合,容量に余裕ができた時点で,その処理を取り戻すことができます。重要なのは,永続ディスク(PD/Persistent Disl)が削除されていないことです。新たな(おそらくは通常の)VMで処理を続けたいと思った時でも,データが失われていることはありません。
InfoQ: 不定な負荷と柔軟性を要件として持っている人々の多くが,Kubernetesのようなコンテナクラスタリングやオーケストレーション技術に強い興味を持ち始めています。プリエンプティブルVMのモデルをGoogle Container Engine(GKE)のようなサービスにロールアウトすることはできないのでしょうか?
Nash: KubernetesやGoogle Container Engineはこれまで,主にWebアプリケーションの提供(ステートレスなフロントエンドと,‘クラウドフレンドリ’な,ステートフルなワークロード)を中心としてきました。開発チームは現在,これらのアプリケーションの開発と運用を行う開発者のために,実運用対応バージョンのKubernetesの提供に注力しています。このバージョンは,今後数ヶ月のうちにリリースされる予定です。次の重点項目は,バッチを中心とした計算集約的なワークロードのオーケストレーションです。これらのワークロードを実行する上で,ホスティング費用と運用上の複雑さの両方を削減するための,優れた方法だと思っています。
プリエンプティブルVMはベータ版として,Google Computer Platform内でリリースされている。すべてのリージョンの,すべてのユーザが利用可能だ。プリエンプティブルVMに関する追加情報がGCE資料の中にある。また,価格に関する情報はGCE価格情報のページに掲載されている。