Create a GCS bucket

進行状況を確認

/ 25

Create an instance template

進行状況を確認

/ 25

Create an instance group

進行状況を確認

/ 25

Configure autoscaling for the instance group

進行状況を確認

/ 25

このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。

GSP087

Google Cloud セルフペース ラボ

概要

Compute Engine マネージド インスタンス グループ(MIG)で自動スケーリングを使用すると、容量がユーザーの需要に自動的に一致するため、アプリケーションの信頼性と費用対効果が向上します。

ラボのアーキテクチャの図

  • VM インスタンスで障害が発生した場合や、VM インスタンスが異常な状態になった場合、MIG は自動的に VM インスタンスを置き換えます。
  • 需要のピーク時には、グループがスケールアウトして負荷を処理し、需要が少ないときには、グループがスケールインして、不要なコンピューティング リソースの費用を削減します。
  • カスタム指標を使用すると、基本的な CPU 使用率だけでなく、アプリケーションの内部状態に固有の要因に基づいてスケールできます。

このラボでは、指標ベースの自動スケーリング マネージド インスタンス グループを実装し、Monitoring を使用してアプリケーションが容量を自己管理していることを確認します。

目標

このラボでは、次のタスクの実行方法について学びます。

  • 自動スケーリング用の Compute Engine マネージド インスタンス グループをデプロイする。
  • インスタンス グループのスケーリングに使用するカスタム指標を作成する。
  • Monitoring でシステムをモニタリングする

設定と要件

[ラボを開始] ボタンをクリックする前に

こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。

このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モード(推奨)またはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生しないようにすることができます。
  • ラボを完了するための時間(開始後は一時停止できません)
注: このラボでは、受講者アカウントのみを使用してください。別の Google Cloud アカウントを使用すると、そのアカウントに料金が発生する可能性があります。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 右側の [ラボの設定とアクセス] パネルには、以下が表示されます。

    • [Google Cloud コンソールを開く] ボタン
    • このラボで使用する一時的な認証情報(ユーザー名とパスワード)
    • このラボを行うために必要なその他の情報(ある場合)

    ラボのタイマーはページの上部に表示され、残り時間が示されます。

  2. [Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。

    ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示された場合は、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。

    {{{user_0.username | "Username"}}}

    [ラボの設定とアクセス] パネルでもユーザー名を確認できます。

  4. [次へ] をクリックします。

  5. 以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。

    {{{user_0.password | "Password"}}}

    [ラボの設定とアクセス] パネルでもパスワードを確認できます。

  6. [次へ] をクリックします。

    重要: ラボで指定された認証情報を使用する必要があります。ご自身の Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  7. その後のページはクリックして先に進みます。

    • 利用規約に同意します。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

しばらくすると、このタブで Google Cloud コンソールが開きます。

注: Google Cloud のプロダクトやサービスにアクセスするには、ナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。 ナビゲーション メニューのアイコンと検索フィールド

Cloud Shell をアクティブにする

Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。

  1. Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン 「Cloud Shell をアクティブにする」アイコン をクリックします。

  2. ウィンドウで次の操作を行います。

    • Cloud Shell 情報ウィンドウで操作を進めます。
    • Cloud Shell が認証情報を使用して Google Cloud API を呼び出すことを承認します。

接続した時点で認証が完了しており、プロジェクトに各自の Project_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。

  1. (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
  1. [承認] をクリックします。

出力:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project

出力:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。

アプリケーションを作成する

インスタンス テンプレートには、作成する新しい VM ごとに必要なアプリケーションとスクリプトをインストールする方法が必要です。Cloud Storage は、新しいインスタンスの起動時に実行される起動スクリプト(startup.sh)のアクセス可能な安定したソースとして機能します。

このラボで使用するサンプル アプリケーションの起動スクリプトとアプリケーション ファイルのコピーを作成します。サンプル アプリケーションは、カスタム指標に一定パターンのデータを push します。カスタム指標は、自動スケーリング動作を制御する指標として構成できます。

注: ラボには、既存のインスタンス テンプレートと、自動的に作成されて実行されているグループがあります。自動スケーリングのスケールアップとスケールダウンの両方の動作を確認するには、少なくとも 30 分の時間が必要です。後でこのグループを利用して、カスタム指標スクリプトによって生成されたカスタム指標値の変化に応じてどのようにスケーリングが制御されるかを確認します。

タスク 1. バケットを作成する

  1. Cloud コンソールで、ナビゲーション メニューの [Cloud Storage] > [バケット] を選択し、[作成] をクリックします。

  2. 一意の名前をバケットに指定します。別のプロジェクトで使用する可能性がある名前は指定しないでください。バケットの命名方法の詳細については、バケットの命名ガイドラインをご覧ください。バケット名には、プロジェクト ID と「bucket」を組み合わせたものを使用できます。このバケットは、ラボ全体で YOUR_BUCKET と表記されます。

  3. デフォルト値をそのまま使用して、[作成] をクリックします。

  4. プロンプトが表示されたら、[公開アクセスの防止] と表示されるポップアップで [確認] をクリックします。

バケットが作成されると、[バケットの詳細] ページが開きます。

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。Cloud Storage バケットが正常に作成されている場合は、評価スコアが表示されます。

Cloud Storage バケットを作成する
  1. 次に、Cloud Shell で以下のコマンドを実行して、ラボのデフォルトの Cloud Storage バケットから自分の Cloud Storage バケットに起動スクリプト ファイルをコピーします。<YOUR BUCKET> は、先ほど作成したバケットの名前に置き換えます。
gcloud storage cp -r gs://spls/gsp087/* gs://<YOUR BUCKET>
  1. スクリプトをアップロードしたら、[バケットの詳細] ページで [更新] をクリックします。追加したファイルがバケットに表示されます。

コード コンポーネントについて

  • Startup.sh - Compute Engine インスタンスをマネージド インスタンス グループに追加する際に、必要なコンポーネントを各インスタンスにインストールするシェル スクリプト。
  • writeToCustomMetric.js - スケーリングのトリガーとなる値を持つカスタム モニタリング指標を生成する Node.js スニペット。本番環境では、これは実際のアプリケーション コードになります。報告される値(appdemo_queue_depth_01)は、キュー内の保留中のメッセージの数、開いているデータベース接続の数、バッチ処理のバックログの長さなどの重要なビジネス指標になります。
  • Config.json - カスタム モニタリング指標の値を指定する Node.js 構成ファイル。writeToCustomMetric.js で使用されます。
  • Package.json - writeToCustomMetric.js の標準インストールや依存関係を指定する Node.js パッケージ ファイル。
  • writeToCustomMetric.sh - writeToCustomMetric.js プログラムを各 Compute Engine インスタンス上で継続的に実行するシェル スクリプト。

タスク 2. インスタンス テンプレートを作成する

これは、グループ内のすべての VM のブループリントです。自動スケーリングは、インスタンスを破棄して作成することで機能するため、インスタンスの再構築方法を正確に把握する必要があります。テンプレートでは、マシンタイプ、OS イメージ、Cloud Storage バケット内の startup.sh スクリプトを指すメタデータ(最も重要)が定義されます。

  1. Cloud コンソールで、ナビゲーション メニュー > [Compute Engine] > [インスタンス テンプレート] をクリックします。

  2. ページの上部にある [インスタンス テンプレートを作成] をクリックします。

  3. インスタンス テンプレートに autoscaling-instance01 という名前を付けます。

  4. [ロケーション] を [グローバル] に設定します。

  5. [マシン構成] セクションで、マシン ファミリーに [E2] を、マシンタイプに [e2-medium] を選択します。

  6. 下にスクロールし、[詳細オプション] をクリックします。

  7. [管理] タブの [メタデータ] セクションで、メタデータのキーと値を入力し、[+ 項目を追加] ボタンをクリックして各項目を追加します。必ず、[YOUR_BUCKET_NAME] プレースホルダを目的のバケット名に置き換えてください。

キー
startup-script-url gs://[YOUR_BUCKET_NAME]/startup.sh
gcs-bucket gs://[YOUR_BUCKET_NAME]

メタデータのページ

  1. [作成] をクリックします。

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。インスタンス テンプレートが正常に作成された場合は、評価スコアが表示されます。

インスタンス テンプレートを作成する

タスク 3. インスタンス グループを作成する

インスタンス グループは、VM のフリートのコンテナとコントローラとして機能します。自動スケーリング モードは、環境を制御し、自動スケーリングを有効にする前に最初のインスタンスがカスタム指標スクリプトを正常に実行していることを確認するために、最初は [オフ] に設定されています。

  1. 左側のペインで [インスタンス グループ] をクリックします。

  2. ページ上部にある [インスタンス グループの作成] をクリックします。

  3. 名前autoscaling-instance-group-1 にします。

  4. [インスタンス テンプレート] には、作成したインスタンス テンプレートを選択します。

  5. [ロケーション] には [シングルゾーン] を選択し、リージョンとゾーンにはそれぞれ を使用します。

  6. [自動スケーリング モード] を [オフ: 自動スケーリングを行いません] に設定します。

自動スケーリングの設定は、インスタンス グループが作成された後に編集します。他の設定はデフォルト値のままにします。

  1. [作成] をクリックします。
注: インスタンス グループの横に表示される「自動スケーリングはオフになっています。グループ内のインスタンスの数は自動的に変更されません。自動スケーリングの構成が維持されます。」という警告は無視してかまいません。

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。インスタンス グループが正常に作成された場合は、評価スコアが表示されます。

インスタンス グループを作成する

タスク 4. インスタンス グループが作成されたことを確認する

作成した新しいインスタンス グループの横に緑色のチェックマークが表示されるまで待ちます。起動スクリプトのインストールが完了して値の送信が開始されるまで、数分かかる場合があります。

単一のテスト インスタンスが writeToCustomMetric.js スクリプトを正常に実行し、データが Cloud Monitoring に流れていることを確認する必要があります。指標データが報告されない場合、オートスケーラーは反応できません。VM ログで nodeapp: available を確認すると、このデータ パイプラインが動作していることがわかります。

時間がかかりすぎていると思われる場合は、[更新] をクリックしてください。

注: ラボで事前に作成された他のインスタンス グループの横に赤色のアイコンが表示される場合がありますが、この警告は無視してください。インスタンス グループは初期化中に最大 10~15 分間警告を生成するため、これは想定された挙動です。
  1. 引き続き [インスタンス グループ] ウィンドウで、autoscaling-instance-group-1 の名前をクリックして、グループで実行されているインスタンスを表示します。

  2. 下にスクロールし、インスタンス名をクリックします。自動スケーリングによるインスタンスの追加は開始されていないため、実行されているインスタンスは 1 つだけです。

  3. [詳細] タブの [ログ] セクションで、[ロギング] のリンクをクリックして、VM インスタンスのログを表示します。

  4. 一定のデータが収集されるまで数分待ちます。[クエリを表示] を有効に切り替えると、[クエリ] プレビュー ボックスに resource.typeresource.labels.instance_id が表示されます。

 [クエリ] プレビュー ボックス

  1. 3 行目に "nodeapp" を追加します。次のようなコードになります。

Line 1: resource.type=&quot;gce.instance&quot;. Line 2: resource.labels.instance_id=&quot;4519089149916136834&quot;. Line 3: &quot;nodeapp&quot;

  1. [クエリを実行] をクリックします。

Node.js スクリプトが Compute Engine インスタンスで実行されている場合は、API にリクエストが送信され、nodeapp: available というログエントリが表示されます。

注: このログエントリが表示されない場合、Node.js スクリプトはカスタム指標値を送信していません。メタデータが正しく入力されていることを確認してください。メタデータが正しくない場合は、ラボを再起動した方が簡単なことがあります。アプリが起動するまでに 10 分ほどかかることがあります。

タスク 6. インスタンス グループの自動スケーリングを構成する

カスタム指標が最初のインスタンスからデータを正常に送信していることを確認した後、カスタム指標の値に基づいて自動スケーリングを行うようにインスタンス グループを構成できます。

  1. Cloud コンソールで、[Compute Engine] > [インスタンス グループ] に移動します。

  2. autoscaling-instance-group-1 グループをクリックします。

  3. [編集] をクリックします。

  4. [自動スケーリング] の [自動スケーリング モード] を [オン: グループに対してインスタンスを追加および削除します] に設定します。

  5. [インスタンスの最小数] を 1 に、[インスタンスの最大数] を 3 に設定します。こうすることで、費用とパフォーマンスの保証の下限と上限が定義されます。少なくとも 1 つのインスタンスの料金を支払う必要があります。また、3 つを超えるインスタンスにスケールアップすることはないため、費用の発生を抑制できます。

  6. [自動スケーリング シグナル] で [シグナルを追加] をクリックし、指標を編集します。以下のフィールドを設定します。その他のフィールドはデフォルト値のままにします。

    • [シグナルタイプ] は Cloud Monitoring metric new にします。[構成] をクリックします。
    • [リソースと指標] で [指標を選択] をクリックし、[VM インスタンス] > [カスタム指標] > [Custom/appdemo_queue_depth_01] に移動します。
    • [適用] をクリックします。
    • [使用率のターゲット] は 150 にします。

    カスタム モニタリング指標値が [ターゲット] の値と異なる場合は、オートスケーラーによってマネージド インスタンス グループがスケーリングされ、インスタンス数が増減されます。ターゲット値には任意の double 値を指定できますが、このラボでは、カスタム モニタリング指標によって送信される値と一致する値である 150 を使用しています。

    • [使用率のターゲットのタイプ] はゲージにします。[選択] をクリックします。

    ゲージ: すべてのインスタンスにおける指標の現在の平均値に基づいてスケールします(「キューの深さの平均は 200 で、目標の 150 を超えているため、別のマシンが必要です」)。これは、キューの深さや CPU 使用率などの指標に適しています(これに対し、[ターゲット モード] を [DELTA_PER_MINUTE] または [DELTA_PER_SECOND] に設定すると、平均値ではなく、観測された変化率に基づいて自動スケーリングが行われます)。

  7. [保存] をクリックします。

注: [ゲージ] を選択した後、プルダウンをもう一度クリックして [ゲージ] を選択し直します。こうすると、UI によって値が正しく登録されることがあります。

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。インスタンス グループの自動スケーリングが正常に設定された場合は、評価スコアが表示されます。

インスタンス グループの自動スケーリングを構成する

タスク 7. インスタンス グループが自動スケーリングを行っていることを監視する

Node.js スクリプトは、各インスタンスから送信するカスタム指標値を時間の経過とともに変更します。指標の値が上がると、インスタンス グループは VM を追加することによってスケールアップします。値が下がると、インスタンス グループはこれを検出し、VM を削除してスケールダウンします。スクリプトは値が同様に上下に変動する実際の指標をエミュレートします。

次に、[モニタリング] タブをクリックして [自動スケーリングされたサイズ] グラフを表示して、指標に応じてどのようにインスタンス グループがスケールしているかを確認します。

  1. 左側のペインで [インスタンス グループ] をクリックします。
  2. リストで builtin-igm インスタンス グループをクリックします。
  3. [モニタリング] タブをクリックします。
  4. [自動更新] を有効にします。

このグループは先行して開始されているため、自動スケーリング グラフでインスタンス グループに関する自動スケーリングの詳細を確認できます。オートスケーラーがカスタム指標を正しく認識するまで約 5 分かかり、自動スケーリングの動作をトリガーするのに十分なデータをスクリプトが生成するまで最大 10~15 分かかることがあります。

2 つのモニタリング グラフを表示している [モニタリング] タブのページ

グラフにカーソルを合わせると、詳細が表示されます。

作成したインスタンス グループに戻ると、その動作を確認できます(インスタンス グループの自動スケーリングを確認するには、ラボの時間が十分に残っていない場合があります)。

ラボの時間が残っていれば、インスタンスの追加および削除に合わせて自動スケーリングのグラフが上下していることを確認してください。

タスク 8. 自動スケーリングの例

この自動スケーリングの例を読み、自動スケーリングされたインスタンスの容量と数が大規模な環境ではどのように動作するかを確認します。

上のグラフに示されるインスタンス数は、下のグラフに示されるカスタム指標プロパティの値の総合的な変動に応じて変化します。各インスタンスが起動してからカスタム指標値の送信が始まるまで、最大 5 分のわずかな遅れがあります。作成したインスタンス グループで自動スケーリングが開始されるまでの間、このグラフで、何が起こるのかを確認しておきましょう。

複数のデータポイントがあるグラフを表示している [メンバー] タブのページ

このスクリプトは、スケールアップ動作をトリガーするために、最初は約 15 分間高い値を生成します。

  • 11:27 自動スケーリング グループが 1 つのインスタンスで始まります。カスタム指標の集計ターゲットは 150 です。
  • 11:31 最初の指標データが取得されます。指標がターゲットの 150 よりも大きいため、自動スケーリング グループは 2 番目のインスタンスを起動します。
  • 11:33 2 番目のインスタンスからのカスタム指標データの取得が開始されます。現在の集計ターゲットは 300 です。指標値は 300 を上回っているため、自動スケーリング グループは 3 番目のインスタンスを起動します。
  • 11:37 3 番目のインスタンスからのカスタム指標データの取得が開始されます。現在の集計ターゲットは 450 です。累積の指標値は 450 を上回っているため、自動スケーリング グループは 4 番目のインスタンスを起動します。
  • 11:42 4 番目のインスタンスからのカスタム指標データの取得が開始されます。現在の集計ターゲットは 600 です。現在、累積の指標値は新しいターゲット レベルの 600 を超えていますが、自動スケーリング グループのサイズ制限に達しているため、スケールアップ操作はこれ以上行われません。
  • 11:44 アプリケーション スクリプトは低い指標値の生成期間(15 分間)に移ります。累積の指標値がターゲットの 600 を下回っていても、組み込みのスケールダウン遅延(10 分間)が経過するまで、スケールダウンによる変更は行われません。
  • 11:54 この時点で、カスタム指標データは、4 ノードクラスタの集計ターゲット レベルである 600 を 10 分以上下回っています。スケールダウンにより、2 つのインスタンスがすぐに削除されます。
  • 11:56 削除されたノードのカスタム指標データが自動スケーリングの計算から除外され、集計ターゲットが 300 に低下します。
  • 12:00 アプリケーション スクリプトは高い指標値の生成期間(15 分)に戻ります。累積のカスタム指標値は集計ターゲット レベルの 300 を再び超えているため、自動スケーリング グループは 3 番目のインスタンスを起動します。
  • 12:03 新しいインスタンスからカスタム指標データが取得されます。ただし、その累積値はターゲットの 450 を下回っているため、自動スケーリングによる変更は行われません。
  • 12:04 累積のカスタム指標値がターゲットの 450 を超えているため、自動スケーリングによって 4 番目のインスタンスが起動します。

お疲れさまでした

これで完了です。このラボでは、Cloud Monitoring のカスタム指標の値に基づいて自動スケーリングする、Compute Engine マネージド インスタンス グループを作成しました。また、Cloud コンソールを使用してカスタム指標とインスタンス グループのサイズを可視化する方法も学びました。

次のステップと詳細情報

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2025 年 10 月 23 日

ラボの最終テスト日: 2024 年 7 月 25 日

Copyright 2026 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

シークレット ブラウジングを使用する

  1. ラボで使用するユーザー名パスワードをコピーします
  2. プライベート モードで [コンソールを開く] をクリックします

コンソールにログインする

    ラボの認証情報を使用して
  1. ログインします。他の認証情報を使用すると、エラーが発生したり、料金が発生したりする可能性があります。
  2. 利用規約に同意し、再設定用のリソースページをスキップします
  3. ラボを終了する場合や最初からやり直す場合を除き、[ラボを終了] はクリックしないでください。クリックすると、作業内容がクリアされ、プロジェクトが削除されます

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

このラボを実行するには、シークレット モードまたはシークレット ブラウジング ウィンドウを使用することをおすすめします。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。