Compute Engineを徹底解説!(基本編)

記事タイトルとURLをコピーする

こんにちは、G-gen の武井です。当記事では Google Cloud (旧称 GCP) の仮想マシンサービスである Compute Engine を徹底解説します。

当記事は Compute Engine の基本事項に絞った 基本編 です。この記事を呼んだ後は 応用編 もご参照ください。

Compute Engine

Compute Engine の概要

Compute Engine とは

Google Compute Engine (以下 GCE) とは、 Google Cloud が提供する仮想サーバーのサービスです。 Amazon Web Services (AWS) でいう Amazon EC2、 Microsoft Azure でいうVirtual Machines にあたります。

オンプレミスのようにハードウェアの調達や設置場所の確保等の準備は必要ありません。仮想サーバーを 必要なときに、必要な分だけ 用意することができます。もちろん、必要がなくなればマシンを削除したり、システムの規模に応じてあとから拡張したりすることも簡単です。

GCE で作成した仮想マシンは VM あるいは インスタンス と呼ばれます。

Compute Engine とネットワーク

VM は仮想ネットワークである Virtual Private Cloud (VPC) の中に構築できるので、パブリックインターネットに公開する VM だけでなく、プライベートな VM も構築できます。

専用線や VPN と組み合わせて、社内利用のみの業務システムをホストさせることも可能です。

操作

Compute Engine は Web API 経由で操作 (構築、起動、停止等) します。

API を呼び出すインターフェイスとしては、 Google Cloud コンソールGoogle Cloud CLI があります。これらのインターフェイスから操作することで、 VM を起動したり、停止したり、あるいは削除したり、設定変更することができます。

マシン ファミリー・マシンシリーズ・マシンタイプ

概要

マシン ファミリー・マシンシリーズ・マシンタイプ とは、 VM の CPU やメモリなどのリソースに関連する概念です。

2022 年 6 月時点では、以下のようなマシンファミリー・マシンシリーズが存在しています。

マシンファミリー マシンシリーズ 用途
汎用 E2 最も安価で汎用的に利用可能
N2 Web アプリ、中規模データベース、メディアなど
N2D N2 と同様。 AMD の CPU
Tau T2D スケールアウトするワークロード
コンピューティング最適化マシンファミリー C2 CPU 重視のワークロード。ゲーム、広告、 HPC 、 メディアトランスコード、 AI/ML 等
C2D C2 と同様。 AMD の CPU
メモリ最適化 M2 メモリ重視のワークロード。大規模データベース、インメモリデータベース、 SAP HANA 等
アクセラレータ最適化 A2 GPU 搭載可能。 ML のトレーニング・推論、 HPC 、 超並列コンピューティング等

マシン ファミリー

マシン ファミリー は複数のマシンシリーズをグルーピングした概念です。「汎用マシンファミリー」「コンピューティング最適化マシンファミリー」「メモリ最適化マシンファミリー」などがあり、それぞれの得意分野を表しています。

マシンシリーズ

マシンシリーズ は、 VM が載る物理マシンの特性を示しています。

例えば汎用マシンファミリーの一つである E2 マシンシリーズ は、 Intel もしくは AMD (Intel 互換) の CPU を搭載した、汎用的な用途に対応したマシンです。

「メモリ最適化マシンファミリー」に分類される M2 マシンシリーズ は Intel Skylake CPU を搭載しており、他のシリーズより vCPU あたりに割り当てることができるメモリの量が多くなっているため、高稼働なデータベースを搭載する VM に適しています。

マシンシリーズ名の最初のアルファベットはシリーズの種類を示しており、それに続く数字は世代を表しています。例えば N2 シリーズには、より古いバージョンの N1 シリーズが存在します。通常は、より新しいバージョンを利用することが推奨されます。

マシンタイプ

マシンタイプ は Google Cloud によって事前定義された VM のリソース割り当てのプリセットです。例えば e2-standard-2 マシンタイプは E2 シリーズの物理マシンを利用し、 2 コアの vCPU と 8 GiB の RAM を搭載した VM です。

VM の構築時にマシンタイプを指定しますが、あとから変更することが可能です (ただし VM の停止が必要です) 。

ここまでの内容を総合すると、マシンタイプ名である e2-standard-2 の表記の意味を分解できます。

先頭の e2 はマシンシリーズを指しています。中央の standard はマシンタイプの特徴を表しており、他に highmemhighcpu が存在します。最後の 2 は vCPU コア数を示しています。

なお、ユーザー独自の カスタムマシンタイプ を設定することも可能です。 e2-standard-2 は 2 vCPU / 8 GiB RAM ですが、メモリがそこまで必要ないため「2 vCPU / 6 GiB RAM に落としたカスタムマシンタイプで VM を起動する」ということも可能です。ただし、マシンシリーズごとにvCPU あたりで最低限割り当てなければいけないメモリ量・上限のメモリ量が決まっており、その範囲内での調整が可能です。

リージョンとゾーン

概要

Google Cloud には リージョンとゾーン の概念があります。

Google Cloud は 200 以上の国と地域に専用のインフラ設備を展開しており、 2022年6月時点で 33 のリージョンと 100 のゾーンで構成されています。

リージョン

リージョン は地域ごとに設立された Google Cloud のデータセンターの集合体です。「東京 (asia-northeast1)」「大阪 (asia-northeast2)」「ロサンゼルス (us-west2)」「ロンドン (europe-west2)」などのリージョンが存在します。リージョンは、複数のゾーンで構成されます。

ゾーン

ゾーン は、一つまたは複数のデータセンターで構成されており、電源・空調・物理機器といった設備をある程度共有する「単一障害ドメイン」です。例として東京 (asia-northeast1) リージョンの中には asia-northeast1a , asia-northeast1b , asia-northeast1c の3つのゾーンが存在します。

リージョンとゾーンの設計

VM を構築する際、どのリージョンのどのゾーンに設置するかを指定します。

例えば、世界中のユーザにサービスを提供するアプリケーションをホストする VM マシンを設計する場合、複数のリージョンに VM を配置するマルチリージョン構成とすることでレイテンシ (通信遅延) を押さえることができます。

また障害発生時の可用性を担保するために、同一リージョン内の複数ゾーンに VM を配置して冗長性を確保するといったマルチゾーン構成は、ごく一般的です。

なお VM マシンの利用料金や利用可能なマシンタイプはリージョンによって異なります。2022 年 6 月時点での 東京リージョン / 大阪リージョン の仕様は以下の通りです。コストやワークロードの性質を勘案した上で最適なリージョンを選択することが重要となります。

リージョン ゾーン マシンタイプ CPU GPU
東京 (asia-northeast1) northeast1-a E2、N2、N2D、N1、M1、M2、C2、A2 Ivy Bridge、Sandy Bridge、Haswell、Broadwell、Skylake、Cascade Lake、AMD EPYC Rome 利用可
northeast1-b E2、N2、N2D、N1、M1、M2、C2 Ivy Bridge、Sandy Bridge、Haswell、Broadwell、Skylake、Cascade Lake、AMD EPYC Rome 利用不可
northeast1-c E2、N2、N2D、N1、M1、C2、A2 Ivy Bridge、Sandy Bridge、Haswell、Broadwell、Skylake、Cascade Lake、AMD EPYC Rome 利用可
大阪 (asia-northeast2) northeast2-a E2、N1、N2、N2D、M1、C2 Ivy Bridge、Sandy Bridge、Broadwell、Skylake、Cascade Lake、AMD EPYC Rome 利用不可
northeast2-b E2、N1、N2、N2D、M1、M2 Ivy Bridge、Sandy Bridge、Broadwell、Skylake、Cascade Lake、AMD EPYC Rome 利用不可
northeast2-c E2、N2、N2D、N1、M1、M2 Ivy Bridge、Sandy Bridge、Broadwell、Skylake、Cascade Lake、AMD EPYC Rome 利用不可

ストレージ

VM の 2 つのストレージ

VM で利用可能な ストレージ (ディスク) は大きく分けて 2 種類あります。

  • 永続ディスク
  • ローカル SSD

永続ディスク

永続ディスク は不揮発性のディスクです。

「不揮発性」とは「VM を停止しても保存されたデータが削除されない性質」を意味します。

また、永続ディスクはVM からデタッチ (取り外し) が可能であり、別の VM にアタッチ (取り付け) することも可能です。

2022年6月時点では永続ディスクにも4つのタイプがあり、ディスクサイズや設定にもよりますが、原則的に表の下に行く ほど高性能でかつ費用も高価となります。

No タイプ名 性質
1 標準 (Standard) HDD ベースのネットワークストレージデバイス。コストは最も低い。シーケンシャルアクセスではスループットが出るが、ランダムアクセスには適していない。
2 バランス (Balanced) SSD タイプのネットワークストレージデバイス。標準永続ディスクと SSD 永続ディスクの中間にあたる。コストとパフォーマンスのバランスに優れており SSD 永続ディスクの代わりに利用するケースが多い。
3 SSD SSD タイプのネットワークストレージデバイス。高速なランダムアクセスを実現する。
4 エクストリーム (Extreme) よりパフォーマンスが求められるワークロード向けの SSD タイプのネットワークストレージデバイス。 IOPS のカスタマイズが可能。デイスクサイズに加え IOPS に対しても課金される。

リージョン永続ディスク

リージョン永続ディスク は、リージョン内の 2 つのゾーン間でデータの同期を行うストレージです。

前述の 4 種の永続ディスクのうち、エクストリーム永続ディスクはリージョン永続ディスクにできませんが、それ以外の標準 / バランス / SSD 永続ディスクはゾーン永続ディスクとリージョン永続ディスクから選ぶことができます。

リージョン永続ディスクを使えば、単一ゾーン障害で VM が利用不可になっても、 別のゾーンの VM にディスクをアタッチしなおす ことでデータを利用できます。リージョン永続ディスクは 強制接続 が実行でき、ゾーン障害で稼働しなくなった VM から別ゾーンのインスタンスへ直ちにアタッチしなおすことで、アプリケーションを継続できます。

ローカル SSD

永続ディスクとは別に、 ローカル SSD と呼ばれる揮発性のディスクを利用することが可能です。

ローカル SSD は エフェメラルディスク とも呼ばれます。永続ディスクがネットワークストレージであることとは対象的に、ローカル SSD は VM をホストする基盤に物理的に接続されたストレージデバイスです。そのため永続ディスクよりも 高速な IO ・小さいレイテンシ で利用できます。

ただし、揮発性のディスクであるためVM を停止すると ディスクに保存された内容は失われ ます。それゆえ ブートディスクとしては利用できません 。また、 E2 シリーズと Tau T2D シリーズの VM にも利用することはできません。

これらの性質から、 ローカル SSD はデータの保存用途ではなく キャッシュ用途や一時ファイルの保存用途 で利用するものです。

ローカル SSD の制限事項

ローカル SSD をアタッチした VM は 停止ができない という点に留意が必要です。

ローカル SSD をアタッチした VM はコンソールや API で停止しようとするとエラーになります。しかし、 OS 内部からのシャットダウンを防ぐことはできません

この VM インスタンスはローカル SSD を使用しているため停止できません。

OS 内部からの停止は可能

このような VM を もし OS 内部から停止してしまうと、 VM コンソールや API で起動させること自体は可能ですが、以下のようなエラーが発生し VM へのログインは一切できなくなってしまいます。

  • 接続できませんでした 予期しないエラーにより、 VM インスタンスに接続できません。数分待ってからもう一度お試しください。

ローカル SSD を持つ VM を停止するとアクセスできなくなる

このような状態になってしまった VM は、残念ながら二度と起動することはできません。永続ディスクをデタッチし、別の VM にアタッチしなおす等して中身をサルベージするなどの対応が必要です。

これらのことから、ローカル SSD をアタッチした VM は 常時稼働 あるいは 後述のプリエンプティブル VM / スポット VM での ステートレスな利用 が前提です。

接続 (VM へのログイン)

Linux VM の場合

Linux VM には SSH を使って接続します。

事前にファイアウォールで接続元 IP からの SSH ポートを許可したうえで、以下のいずれかの方法で SSH ログインできます。

  1. Google Cloud コンソールからブラウザのターミナルで SSH
  2. ローカル PC の SSH ターミナル
  3. gcloud コマンドライン

以下のスクリーンショットは、 1. のブラウザのターミナルを利用した例です。外部 IP アドレスの有無に関わらず接続可能なため踏み台サーバも不要で、ファイルのアップロードやダウンロードも可能です。

SSH ボタンをクリックするだけ

ファイルのアップロード / ダウンロードも可能

Windows VM の場合

Windows VM は RDP (リモートデスクトップ) を使って接続します。

Windows VM では、まず認証情報の生成 (OS アカウントの作成とパスワード取得) をしてから VM へ RDP をすることになります。

この認証情報を用いて RDP クライアントツールから Windows VM の外部 IP に対して接続することでログインできます。

外部IPがアタッチされていないマシンに対しては、踏み台サーバを利用したり、後述の IAP を利用します。

Cloud IAP を利用した接続

Google Cloud には Cloud Identity-Aware Proxy (以下、IAP) とよばれるフルマネージドのリバースプロキシサービスがあります。

こちらのサービスを利用することで、踏み台サーバを用意することなく、外部 IP がアタッチされていないマシンに対してもセキュアな接続を実現できます。

接続イメージは以下の図の通りで、利用者はまずインターネット経由 (HTTPS) で IAP へアクセスしてトンネルを接続します。このとき、利用者は Google アカウントで認証します。また IAP を利用できるのは、 Cloud IAM で適切なロールを付与された人だけです。

f:id:ggen-sugimura:20211005162652p:plain

詳細については当社ブログにて詳しく解説していますのでそちらもあわせてご参照ください。

blog.g-gen.co.jp

blog.g-gen.co.jp

メンテナンスと障害対応

概要

Compute Engine の実行基盤におけるメンテナンスや障害は ホストイベント と呼ばれます。

これらが発生した際は、事前に設定した ホストメンテナンスポリシー に応じて VM のライブマイグレーションや再起動などが行われます。

ホストイベント 説明
メンテナンスイベント ハードウェアまたはソフトウェアの更新を行うイベント
ホストエラー VM をホストしている物理基盤上で稼働中の VM がクラッシュするようなハードウェアまたはソフトウェアの問題

ライブマイグレーション

ホストシステム (Compute Engine の実行基盤) でメンテナンスイベントが発生しても ライブマイグレーション機能 によって VM の稼働が継続されます。

ライブマイグレーションに伴う中断時間は 1 秒を大幅に下回る時間 とうたわれており、VM を稼働させたままの状態で同じゾーンの別の基盤に自動的に移行できます。

この際、ユーザーが VM を 再起動 (もしくは停止→起動) する必要はありません。

他のクラウドにおける VM のメンテナンスでは、メンテナンススケジュールを調整したりすることでサービス影響を低減するよう工夫はできますが、マシンの再起動自体は必要なことが多いです。それと比べ、このライブマイグレーション機能は Google Cloud に特有 な特徴であると言えます。

ホストエラー

ホストエラー は Compute Engine のサービス基盤における障害です。ホストエラーが発生すると、ライブマイグレーションが失敗することがあります。

その場合は、デフォルトでは最大 330 秒待機してから VM が自動的に再起動されます (後述のホストメンテナンスポリシーに従う) 。

ホストエラーが発生する可能性は低いですが、そのような現象に備え、マネージドインスタンスグループなどを利用して可用性の高い設計にすることが重要です。

ホストメンテナンスポリシー

ホストメンテナンスポリシー は、メンテナンスイベントやホストエラーが発生した際に VM にどのような動きをさせるか、というポリシーです。以下の設定値を持ちます。

No 項目名 意味
1 メンテナンスの動作 メンテナンスイベント発生時に VM をライブマイグレーションするか停止するか
2 再起動の動作 VM がクラッシュした場合やホストエラーが発生した場合、 VM を再起動するか停止するか
3 ホストエラーの検出時間 VM が応答していないことを検出してから VM の再起動または終了を行うまで待機する最大時間

ホストメンテナンスポリシーは VM を作成する際に設定するほか、作成後に変更することもできます。

ホストイベント以外の障害

ここまでに示したように物理基盤におけるメンテナンスや障害には、 Compute Engine によって柔軟で自動的な対応がなされます。

しかしながらこれらの機能では、ソフトウェア起因の例外や障害、 OS レイヤ以上の障害、 CPU やメモリリソースの逼迫によるパフォーマンス劣化などは検知・対応することができません。

Cloud Monitoring によるリソース監視やサービス URL の外形監視などは 他のクラウドやオンプレミスと同様に重要である ことに留意しましょう。

バックアップとリストア

2 つのバックアップ方法

VM のバックアップには、2つの方法があります。

  • 永続ディスクの スナップショット
  • VM の マシンイメージ

どちらもデータの保存先のリージョン (asia-northeast1 、 us-west1 など) を指定できるほか、マルチリージョン (asia 、 us など) を指定することができ、可用性を向上させることができます。

前者はディスクごとのスナップショットを取り、ディスクごとのバックアップ・リストアを実現します。

後者は後発の仕組みであり、 2022 年 1 月に GA しました。マシンをまるごとバックアップする感覚の機能です。

スナップショット

バックアップ

スナップショット は、永続ディスクに格納されているデータをバックアップする仕組みです。

前回取得からの増加分データのみをバックアップ ( 増分バックアップ ) し、さらに自動的に圧縮されるため、ディスクの完全なコピーをバックアップとして作成するよりも高速、かつ低コストでバックアップを実現できます。

スナップショットはVMが起動している状態でも取得することができます。

また スナップショットスケジュール 機能を使用することで、定期的に自動取得することができます。

リストア

スナップショットからのリストアは 別ディスクとしての復元 となります。元のディスクの中身だけを巻き戻す、といったことはできません。

データのみを取り出したい場合は、そのディスクを VM にアタッチして取り出すことができます。

あるいは元の VM を停止し、既存ディスクを復元したディスクに置き換えてから起動することで、マシンのリストアを行うこともできます。もしくは、復元されたディスクから新規に VM を作成することも可能です。

マシンイメージ

バックアップ

マシンイメージ は、VMのプロパティ、メタデータ、権限、接続されている全てのディスクのデータを持つバックアップ手法です。

スナップショットが個々のディスクのバックアップであるのに対し、マシンイメージは VM をまるごとバックアップ するような仕組みと理解すればよいでしょう。

なお、マシンイメージもスナップショット同様、増分バックアップです。

またスナップショット同様、 VM が起動している状態で取得することができます。

2022 年 6 月現在では、スナップショットスケジュールのような備え付けの自動化の仕組みは存在していません。

以下の記事で、 API を用いた自動化の一例を紹介しています。

blog.g-gen.co.jp

リストア

マシンイメージからのリストアを行う場合は、マシンイメージから VM を新たに作成 することになります。スナップショットと同様、ある VM の中身だけをある時点に巻き戻す、といったことはできません。

外部IPアドレスを維持したい場合、リストア元の VM で固定 IP アドレスを使い、新規 VM に付け替えるといった対応が必要です。

内部 IP アドレスの場合は、アドレスを解放するためにリストア元の VM を先に削除する必要があります。

Compute Engine の料金

料金の基本

GCE の料金 は以下の要素に対する 従量課金 です。

  • vCPU
  • メモリ (RAM)
  • ストレージ
  • GPU
  • 有償の OS ライセンス (プレミアムイメージ)
  • スナップショット (バックアップ)
  • ネットワーク (データ通信量)

vCPU・メモリ料金

vCPU は コア数あたり 、メモリは GB あたり の単価があり、単価 × 稼働時間で利用料が請求されます。

稼働時間とは VM インスタンスの稼働時間 のことです。また VM を短時間起動すると最低でも 1 分分の課金が発生し、その後は 1秒単位 での課金となります。

参考: 課金モデル

有償の OS ライセンス料金

GCE では、Windows Server や RHEL など、有償のソフトウェアを含んだマシンイメージから VM を構築することができます。

このような有償イメージは プレミアムイメージ と呼ばれており、その他にも、Windows SQL Server と SLES (SUSE) のあわせて4種類のイメージが用意されています。

これらを選択して VM を構築した場合、マシンの稼働時間に応じたライセンス料が課金されます。

ディスク料金

前述の通り、 VM にアタッチ可能なストレージは、ネットワークストレージタイプの 永続ディスク と VM をホストする物理基盤に直接接続された ローカル SSD の2種類があり、いずれも ディスクに割り当てたサイズ (GB) に対して月額費用が発生します。

一部例外として、永続ディスクの中で最も高性能な "エクストリーム永続ディスク" のみ ディスク I/O に対する月額費用が発生しますが、vCPU や メモリなどとは異なり、"時間あたり"ではないところがポイントです。

性能とコストは トレードオフの関係 ですので、コスト重視の場合は低性能なディスクを選択することで月額費用は抑えられますが、ディスクパフォーマンスは他のディスクよりも劣ります。

スナップショット・イメージ料金

ディスクのバックアップ機能を利用してスナップショットやマシンイメージを取得した場合もサイズ (GB) に応じた課金が発生します。

ネットワーク料金

課金対象

ネットワーク料金については、原則的に VM から出ていく通信 (下り通信) のデータ量に対して課金されます。

例として VM で Web アプリケーションがホストされているケースを考えます。

ユーザーから Web アプリへの HTTP リクエストは、 VM の「外から中へ入ってくる通信 (上り通信)」であるため、課金されません。その反対に、 Web アプリからユーザーへ返すレスポンスは VM の「中から外へ出ていく通信 (下り通信)」であるため課金対象となります。同様に、ユーザーからサーバーへのデータのアップロードは課金対象ではありませんが、 逆にサーバーからユーザーがデータをダウンロードする場合は、課金対象となります。

プレミアムティアとスタンダードティア

VM を構築する際、使用するネットワークを プレミアムティアスタンダードティア から選択することができます。

これらは VM が Google Cloud の外と通信する際に使用するネットワークの品質を示しています。前者のプレミアムティアがデフォルトです。後者より若干料金が高くなりますが、 Google のバックボーンネットワークを利用するため高品質・安定した通信が可能となります。

また VM とインターネットの間だけでなく、 VM 間 の通信にも課金が発生する場合があります。それは相互に通信する VM が それぞれ異なるゾーンに存在している場合 です。
同一ゾーン内の VM 間の通信は上りだけでなく下り通信に関しても無料ですが、異なるリージョン / 異なるゾーンに存在する VM 間の通信は課金が発生します。

割引制度

スポット VM

VM には スポット VM と呼ばれる利用形態があります。

Google Cloud の「売れ残っているコンピュートリソース」を格安で利用できる利用形態です。割引額はマシンタイプに応じ 60 ~ 91% です。

安い代わりに、 Google Cloud 側の都合で処理がインタラプトされ VM が「 プリエンプト」すなわち停止されてしまう可能性があります。プリエンプト発生時は、 VM は停止または削除 (どちらかは事前に指定) されます。

そのためスポット VM は永続的に稼働する VM ではなく、一時的に起動して並列処理を行うワーカーとしての利用や、オンデマンドに VM を起動するバッチ処理に適しています。

利用料金は 価格ページ の各タイプごとの表に、通常の利用料金と併記されています。

なお、スポット VM の前身機能として「プリエンプティブル VM」が存在していましたが、現在では利用は推奨されていません。スポット VM がこれに代わります。

継続利用割引 (SUD)

VM の一ヶ月あたりの稼働時間が条件を満たした場合に適用される 継続利用割引 が存在します。

ユーザーが何もしなくても、 VM の月の稼働時間が一定時間を超えると、自動で割引が発生します。

詳細は、以下の記事をご参照ください。

blog.g-gen.co.jp

確約利用割引 (CUD)

一年間または三年間継続して利用することを確約することで割引が受けられる、 確約利用割引 の仕組みがあります。

前払いの仕組みはありませんが、継続的な利用をコミットすることで、安価に VM を利用できます。

詳細は、以下の記事をご参照ください。

blog.g-gen.co.jp

応用編の記事

応用編の記事では、以下のトピックを扱っています。 Compute Engine の全てを知るためには、応用編もご参照ください。

  • Compute Engine へのサーバー移行
  • ロードバランシングと SSL/TLS
  • インスタンスグループ
  • オートスケーリング (Autoscaling)
  • メタデータ
  • スタートアップスクリプト / シャットダウンスクリプト
  • 永続ディスクのパフォーマンス (IOPS とスループット)
  • ログ管理
  • ライセンス
  • 単一テナントノード
  • GPU
  • 高度なセキュリティ (Shielded VM / Confidential VM)

blog.g-gen.co.jp

武井 祐介 (記事一覧)

クラウドソリューション部

2022年4月より G-gen にジョイン。前職では AWS を中心にインフラ環境の設計構築、運用保守業務に従事。先日 Professional Data Engineer に合格し、Google Cloud 認定 はこれで 4つ目。

暑くなり、週末は子供とプールがお決まりになりつつあります。