
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Create a GCS bucket
/ 25
Create an instance template
/ 25
Create an instance group
/ 25
Configure autoscaling for the instance group
/ 25
このラボでは、Cloud Monitoring のカスタム指標の値に基づいて自動スケーリングする、Compute Engine マネージド インスタンス グループを作成します。
自動スケーリング アプリケーションでは、Compute Engine インスタンスにインストールされた Node.js スクリプトが使用されます。このスクリプトを実行すると、Cloud Monitoring 指標に数値を報告できます。このラボでは、Node.js や JavaScript に関する知識は必要ありません。アプリケーションでは、指標の値に基づき必要に応じて、Compute Engine インスタンス グループの自動スケールアップや自動スケールダウンが行われます。
Node.js スクリプトを使用してカスタム指標に値が提供され、その値に応じてインスタンス グループが動作します。本番環境では、実際のユースケースに関連する指標に基づいて自動スケーリングを行うことになります。
このアプリケーションは、次のコンポーネントで構成されています。
このラボでは、次のタスクを行う方法を学びます。
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 左側の [ラボの詳細] ペインには、以下が表示されます。
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
[ラボの詳細] ペインでもユーザー名を確認できます。
[次へ] をクリックします。
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
[ラボの詳細] ペインでもパスワードを確認できます。
[次へ] をクリックします。
その後次のように進みます。
その後、このタブで Google Cloud コンソールが開きます。
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン をクリックします。
ウィンドウで次の操作を行います。
接続した時点で認証が完了しており、プロジェクトに各自の Project_ID、
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
出力:
出力:
gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
自動スケーリング アプリケーションを作成するには、必要なコード コンポーネントをダウンロードし、マネージド インスタンス グループを作成して、マネージド インスタンス グループの自動スケーリングを設定する必要があります。
自動スケーリング(スケールアップ)時、インスタンス グループでは、新しい Compute Engine インスタンスを作成する必要があります。その際、インスタンスはインスタンス テンプレートに基づいて作成されます。各インスタンスには起動スクリプトが必要です。そのため、テンプレートには起動スクリプトを参照する方法が必要です。Compute Engine では、起動スクリプトのソースとして Cloud Storage バケットを使用できます。このセクションでは、このラボで使用するサンプル アプリケーションの起動スクリプトとアプリケーション ファイルのコピーを作成します。サンプル アプリケーションは、自動スケーリング グループの自動スケーリング動作を制御する指標として設定するために使用できる Cloud Logging のカスタム指標に一定パターンのデータをプッシュします。
Cloud コンソールで、ナビゲーション メニューの [Cloud Storage] > [バケット] を選択し、[作成] をクリックします。
一意の名前をバケットに指定します。別のプロジェクトで使用する可能性がある名前は指定しないでください。バケットの命名方法の詳細については、バケットとオブジェクトの命名ガイドラインをご覧ください。バケットにはプロジェクト ID を使用できます。このバケットは、ラボ全体で YOUR_BUCKET
と表記されます。
デフォルト値をそのまま使用して、[作成] をクリックします。
プロンプトが表示されたら、Public access will be prevented
と表示されるポップアップで [確認] をクリックします。
バケットが作成されると、[バケットの詳細] ページが開きます。
完了したタスクをテストする
[進行状況を確認] をクリックして、実行したタスクを確認します。Cloud Storage バケットが正常に作成されている場合は、評価スコアが表示されます。
<YOUR BUCKET>
は、先ほど作成したバケットの名前に置き換えます。Startup.sh
- Compute Engine インスタンスをマネージド インスタンス グループに追加する際に、必要なコンポーネントを各インスタンスにインストールするシェル スクリプト。writeToCustomMetric.js
- スケーリングのトリガーとなる値を持つカスタム モニタリング指標を生成する Node.js スニペット。現実の指標値をエミュレートするために、このスクリプトは時間とともに変化する値を生成します。本番環境にデプロイするときは、このスクリプトをカスタムコードに置き換えて、必要なモニタリング指標(処理キューの値など)が報告されるようにします。Config.json
- カスタム モニタリング指標の値を指定する Node.js 構成ファイル。writeToCustomMetric.js
で使用されます。Package.json
- writeToCustomMetric.js
の標準インストールや依存関係を指定する Node.js パッケージ ファイル。writeToCustomMetric.sh
- writeToCustomMetric.js
プログラムを各 Compute Engine インスタンス上で継続的に実行するシェル スクリプト。次に、自動スケーリングを使用するインスタンス グループで作成されるインスタンスのテンプレートを作成します。テンプレートの一部として、インスタンスの起動時に実行する起動スクリプトの場所(Cloud Storage 内)を指定します。
Cloud コンソールで、ナビゲーション メニュー > [Compute Engine] > [インスタンス テンプレート] をクリックします。
ページの上部にある [インスタンス テンプレートを作成] をクリックします。
インスタンス テンプレートに autoscaling-instance01
という名前を付けます。
下にスクロールし、[詳細オプション] をクリックします。
[管理] タブの [メタデータ] セクションで、メタデータのキーと値を入力し、[+ 項目を追加] ボタンをクリックして各項目を追加します。必ず、[YOUR_BUCKET_NAME]
プレースホルダを目的のバケット名に置き換えてください。
キー | 値 |
---|---|
startup-script-url | gs://[YOUR_BUCKET_NAME]/startup.sh |
gcs-bucket | gs://[YOUR_BUCKET_NAME] |
完了したタスクをテストする
[進行状況を確認] をクリックして、実行したタスクを確認します。インスタンス テンプレートが正常に作成された場合は、評価スコアが表示されます。
左側のペインで [インスタンス グループ] をクリックします。
ページ上部にある [インスタンス グループの作成] をクリックします。
名前は autoscaling-instance-group-1
にします。
[インスタンス テンプレート] には、作成したインスタンス テンプレートを選択します。
[ロケーション] には [シングルゾーン] を選択し、リージョンとゾーンにはそれぞれ
[自動スケーリング モード] を [オフ: 自動スケーリングを行いません] に設定します。
自動スケーリングの設定は、インスタンス グループが作成された後に編集します。他の設定はデフォルト値のままにします。
自動スケーリングはオフになっています。グループ内のインスタンスの数は自動的に変更されません。自動スケーリングの構成が維持されます。
」という警告は無視してかまいません。完了したタスクをテストする
[進行状況を確認] をクリックして、実行したタスクを確認します。インスタンス グループが正常に作成された場合は、評価スコアが表示されます。
作成した新しいインスタンス グループの横に緑色のチェックマークが表示されるまで待ちます。起動スクリプトのインストールが完了して値の報告が開始されるまで、数分かかる場合があります。時間がかかりすぎていると思われる場合は、[更新] をクリックしてください。
グループ内の最初のインスタンスが作成され、そのインスタンスがカスタム指標値の報告を開始するまで、カスタム指標 custom.googleapis.com/appdemo_queue_depth_01
は作成されません。
インスタンス グループの最初のインスタンスで writeToCustomMetric.js
スクリプトが実行されていることを確認するには、そのインスタンスがカスタム指標値を記録しているかどうかをチェックします。
引き続き Compute Engine の [インスタンス グループ] ウィンドウで、autoscaling-instance-group-1
の名前をクリックして、グループで実行されているインスタンスを表示します。
下にスクロールし、インスタンス名をクリックします。自動スケーリングによるインスタンスの追加は開始されていないため、実行されているインスタンスは 1 つだけです。
[詳細] タブの [ログ] セクションで、[ロギング] のリンクをクリックして、VM インスタンスのログを表示します。
一定のデータが収集されるまで数分待ちます。[クエリを表示] を有効に切り替えると、[クエリ] プレビュー ボックスに resource.type
と resource.labels.instance_id
が表示されます。
"nodeapp"
を追加します。次のようなコードになります。Node.js
スクリプトが Compute Engine インスタンスで実行されている場合は、API にリクエストが送信され、nodeapp: available
というログエントリが表示されます。
カスタム指標が最初のインスタンスからデータを正常に報告していることを確認した後、カスタム指標の値に基づいて自動スケーリングを行うようにインスタンス グループを構成できます。
Cloud コンソールで、[Compute Engine] > [インスタンス グループ] に移動します。
autoscaling-instance-group-1
グループをクリックします。
[編集] をクリックします。
[自動スケーリング] の [自動スケーリング モード] を、[オン: グループに対してインスタンスを追加および削除します] に設定します。
[インスタンスの最小数] を 1
に、[インスタンスの最大数] を 3
に設定します。
[自動スケーリング シグナル] で [シグナルを追加] をクリックし、指標を編集します。以下のフィールドを設定します。その他のフィールドはデフォルト値のままにします。
Cloud Monitoring metric new
にします。[構成] をクリックします。150
にします。カスタム モニタリング指標値が [ターゲット] の値と異なる場合は、オートスケーラーによってマネージド インスタンス グループがスケーリングされ、インスタンス数が増減されます。ターゲット値には任意の double 値を指定できますが、このラボでは、カスタム モニタリング指標によって報告される値と一致する値である 150 を使用しています。
ゲージ
にします。[選択] をクリックします。[ゲージ] を設定することで、過去数分間に収集されたデータの平均値を計算してターゲット値と比較することを指定します(これに対し、[ターゲット モード] を [DELTA_PER_MINUTE] または [DELTA_PER_SECOND] に設定すると、平均値ではなく、観測された変化率に基づいて自動スケーリングが行われます)。
[保存] をクリックします。
完了したタスクをテストする
[進行状況を確認] をクリックして、実行したタスクを確認します。インスタンス グループの自動スケーリングが正常に設定された場合は、評価スコアが表示されます。
Node.js スクリプトは、各インスタンスから報告するカスタム指標値を時間の経過とともに変更します。指標の値が上がると、インスタンス グループは Compute Engine インスタンスを追加することによってスケールアップします。値が下がると、インスタンス グループはこれを検出し、インスタンスを削除してスケールダウンします(前述のように、スクリプトは値が同様に上下に変動する実際の指標をエミュレートします)。
次に、[モニタリング] タブをクリックして [自動スケーリングされたサイズ] グラフを表示して、指標に応じてどのようにインスタンス グループがスケーリングしているかを確認します。
builtin-igm
インスタンス グループをクリックします。このグループは先行して開始されているため、自動スケーリング グラフでインスタンス グループに関する自動スケーリングの詳細を確認できます。オートスケーラーがカスタム指標を正しく認識するまで約 5 分かかり、自動スケーリングの動作をトリガーするのに十分なデータをスクリプトが生成するまで最大 10~15 分かかることがあります。
グラフにカーソルを合わせると、詳細が表示されます。
作成したインスタンス グループに戻ると、その動作を確認できます(インスタンス グループの自動スケーリングを確認するには、ラボの時間が十分に残っていない場合があります)。
ラボの時間が残っていれば、インスタンスの追加および削除に合わせて自動スケーリングのグラフが上下していることを確認してください。
この自動スケーリングの例を読み、自動スケーリングされたインスタンスの容量と数が大規模な環境ではどのように動作するかを確認します。
上のグラフに示されるインスタンス数は、下のグラフに報告されるカスタム指標プロパティ値の集計レベルの変動に応じて変化します。各インスタンスが起動してからそのカスタム指標値の報告を開始するまで、最大 5 分という若干の遅れがあります。作成したインスタンス グループで自動スケーリングが開始されるまでの間、このグラフで、何が起こるのかを確認しておきましょう。
このスクリプトは、スケールアップ動作をトリガーするために、最初は約 15 分間高い値を生成します。
これで完了です。このラボでは、Cloud Monitoring のカスタム指標の値に基づいて自動スケーリングする、Compute Engine マネージド インスタンス グループを作成しました。また、Cloud コンソールを使用してカスタム指標とインスタンス グループのサイズを可視化する方法も学びました。
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2024 年 2 月 7 日
ラボの最終テスト日: 2024 年 2 月 7 日
Copyright 2025 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
One lab at a time
Confirm to end all existing labs and start this one