Cloud OnAir 第18回 〜「Google Compute Engine に Deep Dive!基本から運用時のベストプラクティスまで」〜 まとめ

2017年10月5日より、【隔週木曜 18:00~18:45】に、Google 社のエンジニアが、Google Cloud Platform の製品、サービスや導入事例等について解説する番組が始まっています。
ユーザー参加型の生放送番組となっており、視聴者からのリアルタイム Q&A も受け付けています!

この記事では、動画を見逃した方や、見る時間が無い方向けに、要点をかい摘まんで、クイックに紹介したいと思います。

第18回目の Cloud OnAir は、Google Compute Engine の基本から、実践に向けた仮想マシンのバージョンアップ・負荷分散のベストプラクティスについての解説です。

講師は、Google Cloud カスタマーエンジニアの 岩成 祐樹 さんです。
岩成さんは、開発の最適化 に続き、2回目の出演です。

今回のテーマ:Google Compute Engine に Deep Dive!基本から運用時のベストプラクティスまで

今回は Google Compute Engine、いわゆる仮想マシンについて掘り下げてのご紹介します。

仮想マシンは様々な種類があります。仮想マシンはラップトップやオンプレミス、そのほかのクラウドサービスでも展開されております。
この中で GCP のサービスの特徴は、

「コスト・パフォーマンス・運用のしやすさでクラウドの柔軟性を実感できる仮想マシン」

と言えます。仮想マシンは管理するレイヤーの多さから運用負荷が高いと思っている人は多いと思います。実際に GCP を利用した場合の運用負荷などについてのご紹介します。

Google Compute Engine 概要

GCP 上でアプリケーションを動かす選択肢

Google Compute Engine を紹介するにあたって、GCP ではどのような立ち位置であるかを復習したいと思います。
GCP には様々なサービスがあり、IaaS からマネージドサービスまで幅広いサービスを取り揃えております。上の図では左に行くほど管理型インフラストラクチャとなりユーザの管理・設定する項目が増え、右に行くほど Google 側が管理するレイヤーが増えます。
今回紹介する Compute Engine はもっともユーザが管理するレイヤーの大きなサービスになります。

Google Compute Engine とは?

Compute Engine はユーザが作成した仮想マシンに SSH で接続して管理する非常にシンプルなサービスです。OS より上は全てユーザが管理するため、ユーザが細やかなコントロールができる半面、管理する項目が多いという特徴があります。

上の図は IaaS (Compute Engine)、PaaS、SaaS それぞれがどこまでが Google 側で管理するのか、どこまでがユーザ側で管理するのかを表しています。

Google Compute Engine の得意領域・注意点

Compute Engine は仮想マシンである為、下記のような「得意領域」と「注意点」を持っています。

得意領域

  • 既存のオンプレミス/仮想サーバーの OS より上の部分をそのまま載せ換える案件などに向いている。
  • GPU が使用できる。
  • HTTP/S 以外のプロトコルが使用できる。

注意点

  • スケールの速度がコンテナと対比では遅く、立ち上がりは仮想マシンとしての速度でしかサーバが立ちあがらない。
  • OS 以上のレイヤーを全てユーザが管理しなくてはならないため、運用面のコストがマネージドサービスに比べると高い。

Google Compute Engine に Deep Dive!

コスト

継続利用割引


同一スペックのインスタンスの月間使用量が50%を超えた場合に自動的に割引が適用されます。
サービスを実際に開始するまでどれくらいのワークロードかを見積もるのは難しいため、最初は多めにインスタンスを確保し、リリース後にインスタンスを減らすなど柔軟に対応可能です。計画から外れた場合にフレキシブルに調整可能です。

確約利用割引

使用総コア数と総メモリ数をコミットすると確約することによって割引が発生します。
あくまでも、コア数とメモリ数をコミットすることになっているため、小さいインスタンスを大量に建てたり大きいインスタンスを少ない数で建てるなど、割り振りを自由にすることができます。
(確約利用割引を超えた分に関しては、継続利用割引が適応されます。)

カスタムマシンタイプ


ワークロードに合わせて CPU・メモリ量をカスタムしたサーバーが利用可能。スペックを調整することでコストダウン

サイジング レコメンデーション


日々のサーバー使用量から無駄なリソースを削減するよう通知してくれます。

プリエンプティブル VM、GPU

  • 24時間以内に削除される可能性のあるサーバー
  • スペックは通常マシンタイプと同じ
  • バッチやフォールトトレラントなワークロードに最適
  • プリエンプティブル VM : Max 80% OFF
  • プリエンプティブル GPU : Max 50% OFF

パフォーマンス

高速な起動

  • 高速起動
  • VM あたり 20~40 sec で起動
  • クラスタサイズを増やしても起動時間が変わらない
  • 1000 VMs in 1min で起動可能

永続ディスク

  • 永続ディスクは 1GB~64TB まで
  • 2ゾーン間でレプリケーションされているので、別ゾーンの待機系に即フェイルオーバー可能
  • ブロックレベルでレプリケーション

ローカル SSD

  • ~3TB まで
  • IOPS が永続ディスクより大きいので IO が欲しい時用

運用のしやすさ

仮想マシンの運用では上記のような可用性やメンテナンスに気を配る必要があります。
GCP ではそれらに対応した仕組みがあるので以下にご紹介いたします。

インフラ都合の計画停止への対応:ライブマイグレーション ~ インフラ都合の計画停止無し ~

  • インスタンスを動かしたまま別物理ホストに引っ越し
  • Google 側のメンテナンス時に事前に自動実行 = 基本的に計画停止無し
  • 物理ホストの障害などの突然の障害時にインスタンスを自動再起動 = 非計画停止時に自動復旧

仮想マシンのログイン管理 ~ 困り事あるある?

  • 各インスタンスごとに管理する必要があり、管理が煩雑&作業漏れが発生
  • SSH 鍵を適切に管理すつた目の管理簿運用が、稼働面&精神面での負担が大きい
  • ログインユーザ、SSH 鍵を使い回していて、誰がログインしたかわからない

仮想マシンのログイン管理 ~ IAM によるアクセス制御 ~

  • IAM の役割を使用してインスタンスへの SSH アクセスを管理可能
  • ユーザーではなくグループに対して権限を付与するのがオススメ
  • 使い方
    アカウントに権限を付与し、インスタンスにカスタムメタデータを付与

オートスケール ~ 概要 ~

  • 自動的にスケールアウト・スケールインする:
    インスタンスに対してアクセスが増えた時に自動的にインスタンスを増やし、アクセスが減った時に自動的にインスタンスを減らしてくれる。
  • Autoscaler はマネージドインスタンスグループに対して、あらかじめ指定したポリシーに従って、必要に応じてインスタンスを増減させる。

オートスケール ~ インスタンスグループ ~

インスタンスグループに関しては以下のように紹介されていました。

オートスケーリング、ローリングアップデート 、セルフヒーリング、ロードバランシング、インスタンステンプレートを使うためにはマネージドインスタンスグループを選択することが必要です。

仮想マシンのバージョンアップ ~ デプロイメント戦略 ~


上記のデプロイメント戦略を実行するための仕組みが ローリングアップデート / ローリング再起動。

仮想マシンのバージョンアップ ~ ローリングアップデート / ローリング再起動 (1) ~

Compute Engine では以下の赤い矢印で指されたボタンをクリックすることにより、ローリングアップデートが可能です。

仮想マシンのバージョンアップ ~ ローリングアップデート / ローリング再起動 (2) ~

カスタムイメージを作成して、インスタンステンプレート作成した後に、先程の「ローリング更新」ボタンを押すだけで簡単にアップデートを実行できます。

仮想マシンのバージョンアップ ~ ローリングアップデート / ローリング再起動 (3) ~

最大サージとオフライン上限を調整することで、ブルーグリーンデプロイメント / カナリアリリース / AB テストが簡単に実現可能です。
これらの数値を調整しながら10台程度の Compute Engine のインスタンスを使って デモ を実演してもらいました。

Container on Compute Engine (GCE)

Compute Engine ではコンテナを指定して起動する事もできます。

Container on Compute Engine は仮想マシンに近い感覚でコンテナを利用することができます。Kubernetes を使うための学習コストが掛けられない、その複雑な制御が必要ではない、といった場合のユースケースが考えられます。

起動 / シャットダウンスクリプトの活用 ~ 概要 ~


インスタンスが起動する時、シャットダウンする時にスクリプトを実行することができます。こちらについては以下のように紹介されました。

起動 / シャットダウンスクリプトの活用 ~ 使い方 ~

以下のように簡単に 起動 / シャットダウンスクリプト を設定することができます。

起動 / シャットダウンスクリプトの活用 ~ バッチ処理に活用しよう ~

以下のように、インスタンス数0にして作成したマネージドインスタンスグループがオートスケールすることによって、インスタンスが起動したタイミングでスクリプトを実行するという便利な使い方ができるようになっています。

メタデータサーバの活用 ~ メタデータサーバとは? ~

全てのインスタンスはメタデータをメタデータサーバに格納されていて、サーバに対して HTTP リクエストを送ることによって、インスタンスに関する情報が取得することができます。

例えば、IP アドレスのメタデータを定期的に監視し、変化があったら何か処理を実行する、などが可能になります。

メタデータサーバの活用 ~ 更新の待機 ~

メタデータの変更をトリガーにして処理を実行することができます。

例えば、?wait_for_change=true というクエリパラメータを付与することにより、バージョンのメタデータを監視し、バージョンに変化があったら最新のファイルを取得する、といった仕組みを実現することが可能です。

まとめ

今回のまとめです。

冒頭でも述べたように、Google Compute Engine は、
「コスト・パフォーマンス・運用のしやすさでクラウドの柔軟性を実感できる仮想マシン」
と言えます。

Compute Engine はユーザーのコントロールする範囲が広い仮想マシンとなっています。
今回ご紹介した様々な機能、使い方を活用することで、クラウド のメリットを生かしたサービス運用を実現しましょう!

最後にひとこと

いかがでしたでしょうか。
以上が「Google Compute Engine に Deep Dive!基本から運用時のベストプラクティスまで」のまとめでした。

Google Cloud Platform はアカウントを作成してすぐに使い始めることができますので、まずは今回の内容を実際に手を動かして試してみて、Compute Engine の良さを身をもって体験することを是非おすすめしたいです。

次回の放送は「Google Cloud Next ’18 最新情報」です!
7月24日から 26日にサンフランシスコで開催される、Google Cloud 最大のイベントである Google Cloud Next ‘18 で紹介される新しい製品のアップデートや情報などをどこよりも早く紹介する内容になっています。

それでは、次回も 7/26(木)18:00にお会いしましょう!

参考リンク

Youtube 視聴

Cloud OnAir の放送は、今回分含め、バックナンバーも全て Youtube で視聴できます。
スライドと合わせて進行する解説を、是非ご覧ください!
Youtube URL:https://youtu.be/gFKzPcuCBdg?t=1h1m12s

SlideShare

今回の動画で説明に使用されたスライドについても、SlideShare でいつでも閲覧可能です。
登場した用語について振り返りたい、用語同士の関係性を確認したい等、大変参考になります!
スライド URL:https://www.slideshare.net/GoogleCloudPlatformJP/cloud-onair-google-compute-engine-deep-dive-2018719

Cloud OnAir のまとめ記事のバックナンバー

過去回は Cloud OnAir カテゴリ にまとめてありますので、ぜひこちらもチェックしてください!

次の記事を読み込んでいます
次の記事を読み込んでいます
次の記事を読み込んでいます
次の記事を読み込んでいます
次の記事を読み込んでいます