MIG インスタンスの推奨サイズ提案の適用

Compute Engine は、マネージド インスタンス グループ(MIG)のリソースをより効率的に使用できるように、おすすめのマシンタイプを提案します。この推奨事項に従って、インスタンスのマシンタイプのサイズを変更して、vCPU やメモリリソースを追加または削除するかどうかを決めることができます。

VM インスタンスで使用可能なサイズ オプションの詳細については、マシンタイプのドキュメントをご覧ください。

推奨サイズの提案は、サイズの適正化とも呼ばれます。

始める前に

制限事項

推奨は、単一のゾーンにある、自動スケーリングや負荷分散がされていないマネージド インスタンス グループに対して適用できます。

料金

推奨サイズ提案機能は無料でご利用いただけます。

ユースケース

次のワークロード条件が合致する場合は、推奨サイズを利用できます。

  • 季節要因によるトラフィックの影響を受けやすいワークロードなど、トラフィックが周期的に増減するワークロード。
  • 読み取り / 書き込みのスループットなどの他の制限があるために、CPU と RAM が十分に活用されていないワークロード。
  • 個々のソフトウェア ライセンスを必要とし、さらにインスタンスを追加する余裕のないソフトウェアを実行するワークロード。この場合、VM インスタンスの台数を一定に保ちながら、推奨サイズに基づいてマシンタイプを拡張することは可能です。
  • 自動スケーリングに適していないワークロードなど、変化するインスタンス数に動的に適応できないワークロード。

次のいずれかの理由で、推奨サイズを適用できない場合があります。

  • ワークロードに非常に短い CPU スパイクが含まれている。推奨サイズは平均 CPU 使用率に基づいて 60 秒間隔で算出されるため、推奨サイズが算出が間に合わず、短いスパイクを捕捉できません。CPU 使用量が一時的にスパイクするアプリの場合、推奨するマシンタイプよりも大きなマシンタイプで実行するか、自動スケーリングを有効にすることにより、このようなスパイクに対応する必要があります。
  • 負荷のスパイクが、8 日に 1 回よりも少ない頻度で発生する(たとえば、月に 1 回)。スパイクの頻度が低い場合、過去 8 日間の履歴しか確認しない適正化アルゴリズムでは見落とされてしまいます。
  • MIG の各インスタンスが、大きく異なるワークロードを処理している。このような状況では、負荷が最も高い VM インスタンスをもとに推奨サイズが最適化され、グループ内のほとんどの VM インスタンスがオーバーサイズになってしまいます。
  • ライブロードを提供せず、すぐに使用できるフェイルオーバー容量の提供を目的としているため、MIG が VM を十分に利用していない。
  • 次のいずれかの理由により、VM のサイズが過大になっている。
    • ソフトウェアのライセンスで、最小マシンサイズが指定されている。
    • 最小マシンタイプでのみ使用可能という、ストレージまたはネットワーキング IOPS の要件を満たす必要がある。

推奨サイズ提案の仕組み

Compute Engine は、稼働中の仮想マシンの CPU とメモリ使用量をモニタし、最近 8 日間のデータを使用して推奨を提供します。Compute Engine はマネージド インスタンス グループ内のすべてのインスタンスに最適な単一マシンタイプを推奨するために、個々のインスタンスに対して標準サイズの推奨を生成し、異常値を調整した後、単一 VM インスタンスのサイズを下回らないマシンタイプを選択します。停止された VM インスタンスや再起動中の VM インスタンスなど、実行されていないインスタンスは計算に含まれません。

Compute Engine は、次のような推奨を提示する場合があります。

  • ほとんどの時間でインスタンス グループの CPU 使用率が低かった場合、Compute Engine は仮想 CPU の少ないマシンタイプを推奨します。
  • ほとんどの時間でインスタンス グループの CPU 使用率が高かった場合、Compute Engine は仮想 CPU の多いマシンタイプを推奨します。
  • インスタンス グループがメモリの大部分を使用していない場合、Compute Engine はメモリの少ないマシンタイプを推奨します。
  • インスタンス グループがメモリの大部分を頻繁に使用している場合、Compute Engine は、より多くのメモリを搭載したマシンタイプを推奨します。

Compute Engine は、標準マシンタイプとカスタム マシンタイプのいずれかをおすすめします。マシンで使用できるメモリと vCPU の量には制限があることにご注意ください。特に、1 つのリソースを増加させると同時に、有効なマシンタイプの仕様に適合するよう、他のリソースも増加させる必要が生じる場合があります。また、Compute Engine は、インスタンスが実行されているゾーンで使用可能なマシンタイプのみを推奨します。

詳細については、カスタム マシンタイプの仕様をご覧ください。

マネージド インスタンス グループのワークロードが個々のインスタンス間で大きく異なる場合、フルに使用されているインスタンスが推奨に従って十分なリソースを確保できるようにするため、一部のインスタンスのサイズが大きくなりすぎることがあります。たとえば、Compute Engine はインスタンス 4 のワークロードをサポートするため、インスタンス 1、2、3、5 のサイズが大きすぎて十分に活用されない状況が生じる可能性があるとしても、以下のような推奨を生成することがあります。

マネージド インスタンス グループに対して算出された推奨
マネージド インスタンス間の異なるワークロードが原因で生じるオーバーサイズの例

このため、マネージド インスタンス グループの推奨は、インスタンス間でワークロードの分散が妥当な場合に最も効果的に機能します。

見積もり費用を算出する場合、インスタンス グループのコストは前週の使用量(継続利用割引を含まない)を基準として、30 日分まで推定されます。この数字は、推奨マシンタイプの 1 か月の費用(継続利用割引を含まない)と比較されます。正確な料金と詳細については、料金についてのドキュメントをご覧ください。

推奨サイズ提案の表示

Compute Engine から提案される推奨は、Google Cloud Console で見ることができます。推奨は、gcloudツールや API を備えたベータ版の Recommender からも入手できます。

Console

  1. Google Cloud Console で、[インスタンス グループ] ページに移動します。

    [インスタンス グループ] ページに移動

  2. プロジェクトを選択し、[続行] をクリックします。
  3. [推奨] の列で個々のマネージド インスタンス グループに対する推奨を確認します。推定節減額で列を並べ替えることもできます。インスタンス グループの横に推奨が表示されない場合は、Compute Engine は推奨を作成していません。

    [推奨] 列

  4. インスタンス グループに 2 つのインスタンス テンプレートがある場合、Compute Engine はそれぞれのインスタンス テンプレートに対して推奨を提示します。推奨をクリックすると、各インスタンス テンプレートの推奨が表示されます。

    複数のテンプレートに関する推奨

gcloud

gcloud beta recommender recommendations list コマンドを使用して、VM マネージド インスタンス グループの適正サイズのリコメンダを指定します。

gcloud beta recommender recommendations list \
      --recommender=google.compute.instanceGroupManager.MachineTypeRecommender \
      --project [PROJECT_ID] \
      --location [ZONE] \
      --format=yaml

例:

gcloud beta recommender recommendations list \
    --recommender=google.compute.instanceGroupManager.MachineTypeRecommender \
    --project my-project \
    --location us-central1-a \
    --format=yaml

レスポンスには、推奨ごとに次のフィールドが含まれます。


---
content:
  ...
  operationGroups:
  - operations:
    - action: test
      path: /properties/machineType
      resource: //compute.googleapis.com/projects/my-project/global/instanceTemplates/my-old-template
      resourceType: compute.googleapis.com/InstanceTemplate
      value: n1-standard-4
    - action: copy
      path: /
      resource: //compute.googleapis.com/projects/my-project/global/instanceTemplates/$new-it-name
      resourceType: compute.googleapis.com/InstanceTemplate
      sourcePath: /
      sourceResource: //compute.googleapis.com/projects/my-project/global/instanceTemplates/my-old-template
    - action: replace
      path: /name
      resource: //compute.googleapis.com/projects/my-project/global/instanceTemplates/$new-it-name
      resourceType: compute.googleapis.com/InstanceTemplate
      value: $new-it-name
    - action: replace
      path: /properties/machineType
      resource: //compute.googleapis.com/projects/my-project/global/instanceTemplates/$new-it-name
      resourceType: compute.googleapis.com/InstanceTemplate
      value: custom-2-5632
  - operations:
    - action: replace
      path: /versions/*/name
      pathValueMatchers:
        versions/*/instanceTemplate:
          matchesPattern: .*global/instanceTemplates/my-old-template
      resource: //compute.googleapis.com/projects/my-project/zones/us-central1-a/instanceGroupManagers/example-group
      resourceType: compute.googleapis.com/InstanceGroupManager
      value: global/instanceTemplates/$new-it-name
...
description: Save cost by changing machine type from n1-standard-4 to custom-2-5120.
...
name: projects/823742397239/locations/us-central1-a/recommenders/google.compute.instanceGroupManager.MachineTypeRecommender/recommendations/c50a1c41-7e65-417d-a32e-45248a2cb318
...

詳細については、Recommender についてのドキュメントをご覧ください。

API

ベータ版の Recommender API を、マネージド インスタンス グループのマシンタイプ レコメンダの推奨インスタンス ID と組み合わせて使用します。

Google Cloud API を呼び出す際の認証の前提条件については、認証の概要をご覧ください。

次の bash スクリプトの例では、エンドユーザー認証フローで OAuth クライアント認証情報を使用しています。このスクリプトでは、Google oauth2lコマンドライン ツールを使用して、OAuth 2.0 アクセス トークンを取得し、そのトークンを使用する curl リクエストを作成します。

PROJECT_ID=my-project
LOCATION=us-central1-c
RECOMMENDER_ID=google.compute.instanceGroupManager.MachineTypeRecommender
OAUTH_JSON=~/client_secrets.json  # credentials for service account
OAUTH_HEADER="$(oauth2l header --json $OAUTH_JSON cloud-platform)"

curl -H "$OAUTH_HEADER" https://recommender.googleapis.com/beta/projects/$PROJECT_ID/locations/$LOCATION/recommenders/$RECOMMENDER_ID/recommendations

レスポンスには、推奨ごとに次のフィールドが含まれます。

  • name 推奨の名前
  • description 人が読める形式の推奨の説明。
  • operationGroups 推奨を適用するときに順番に実行できるオペレーションのグループ。

詳細については、Recommender についてのドキュメントをご覧ください。

新しい管理対象インスタンス グループを作成すると、グループを作成してから 24 時間後に新しいグループに対する推奨が表示されます。

その後、推奨は 1 日にわたって定期的に更新されます。

インスタンス グループへの推奨の適用

Compute Engine から提案された推奨を適用するには、コンソールからマネージド インスタンスのサイズを直接変更するか、サイズ変更のオペレーションを手動で行うこともできます。Recommender API は一連のサイズ変更のオペレーションを返します。オペレーション グループをご覧ください。

マネージド インスタンス グループに推奨を適用する場合は、次のオペレーションを行います。

  1. マネージド インスタンス グループによって使用されるインスタンス テンプレートのクローンを作成します。
  2. 推奨と変更内容に基づいて、クローンされたインスタンス テンプレートを変更します。
  3. Managed Instance Group Updater を使用して新しいテンプレートを適用します。インスタンス グループに 2 つのインスタンス テンプレートがある場合は、次の操作をします。

    1. 一度に 1 つのインスタンス テンプレートに対して推奨を適用できます。
    2. マネージド インスタンス グループは、一度に最大 2 つのインスタンス テンプレートしか保持できないため、その他の 2 つのインスタンス テンプレートを維持しながら推奨は実行できません。インスタンス グループにインスタンス テンプレートが 1 つしかない場合は、推奨を実行できます。

コンソールから直接マネージド インスタンスのサイズを変更するには、次の手順を行います。

  1. Google Cloud Console で、[インスタンス グループ] ページに移動します。

    [インスタンス グループ] ページに移動

    更新するインスタンス グループの推奨テキストをクリックします。

    推奨列の選択

  2. 詳細な説明が示され、[キャンセル]、[推奨を閉じる]、[続行] のいずれかを選択できるポップアップが表示されます。推奨を確認して適用するには、[続行] をクリックします。

  3. 次の画面で、推奨の詳しい説明が示されます。推奨を選択すると、Compute Engine はインスタンス テンプレートを作成し、インスタンス グループ内のすべてのインスタンスを更新して新しいテンプレートを使用します。

  4. (詳細設定)新しいテンプレートをインスタンスに展開する方法をカスタマイズする場合は、[デプロイをカスタマイズする] をクリックします。画面が表示されます。

    1. [テンプレート] で、新しいテンプレートをインスタンス グループ内のすべてのインスタンスに適用するか、一部のインスタンスのみに適用するかを選択できます。
    2. [更新モード] で、Compute Engine が新しいインスタンス テンプレートを使用してインスタンスをアクティブに削除、作成するか([プロアクティブ])、またはサイズ変更などの別の手段でインスタンスが作成された場合や、新しいインスタンスがグループに追加された場合のみに更新を適用する([日和見])かを選択できます。
    3. [最大サージ] で、マネージド インスタンス グループのターゲット サイズを超えて作成できる、一時的な追加のインスタンスの数を選択します。許可するインスタンスが増えるほど、更新が迅速に行われます(追加のインスタンスには費用がかかります)。デフォルトでは、追加のインスタンス数は 1 です。
    4. [オフライン上限] で、この更新中に一度にオフラインにできるインスタンスの数を選択できます。この数値には、他の理由でオフラインになっているインスタンスも含まれます。たとえば、インスタンス グループがサイズ増加の処理中である場合、作成中のインスタンスはオフラインになる場合があります。これらのインスタンスはこの数に加算されます。オフラインにできるインスタンスは、デフォルトで一度に 1 つだけです。
    5. [最小待機時間] で、新しいインスタンスが更新済みとしてマークされるまで待機する秒数を選択できます。この時間はヘルスチェックが成功した後に開始されます。この機能を使用して、インスタンス テンプレートが適用されるレートを制御します。
  5. [保存] ボタンをクリックして変更を適用します。

  6. 変更をデプロイする準備ができたら、[デプロイ] をクリックします。

推奨を閉じる

推奨に関する操作が終了したら、コンソールから推奨を閉じることができます。推奨を閉じると、合計の推定節減額からその推奨が除外され、推奨を示すテキストがグレーに変わって推奨の表示が最小化されます。

コンソールの推奨を閉じても、Recommender API が返す推奨のリストや状態には影響しません。Recommender API が返す推奨の状態の管理については、API の使用をご覧ください。

コンソールから単一の推奨を閉じるには、次を行います。

  1. Google Cloud Console で、[インスタンス グループ] ページに移動します。

    [インスタンス グループ] ページに移動

    閉じる推奨のテキストをクリックします。詳細な説明を示すポップアップが表示されます。この画面に [推奨を閉じる] ボタンがあります。
  2. [推奨を閉じる] をクリックします。

すべての推奨を閉じるには、[インスタンス グループ] ページの [すべて閉じる] ボタンをクリックします。

推奨を閉じる

コンソールで推奨を復元するには、次の手順を行います。

  1. [インスタンス グループ] ページで、グレー表示されている復元する推奨テキストをクリックします。

    閉じた推奨

  2. 詳細な説明を示すポップアップが表示されます。この画面に [推奨を再表示] ボタンがあります。

  3. [推奨を再表示] をクリックします。

Monitoring エージェントを使用した、より正確な推奨の提示

Stackdriver Monitoring には、追加ディスク、CPU、ネットワーク、VM インスタンスからのプロセス指標を収集するモニタリング エージェントが用意されています。VM インスタンスに Monitoring エージェントをインストールして、システム リソースやアプリケーション サービスにアクセスし、このデータを収集できます。

Monitoring エージェントが VM インスタンスにインストールされ、実行されている場合、エージェントによって収集された CPU とメモリ指標が自動的に使用され、サイズ調整に関する推奨値が計算されます。Monitoring エージェントによって提供されるエージェント指標を使用すれば、デフォルトの Compute Engine 指標を使用した場合よりもインスタンスのリソース使用率をより詳細に把握できます。これにより、レコメンデーション エンジンはより適切にリソース要件を見積もり、より正確な推奨を提供できるようになります。

エージェントをインストールするには、Stackdriver Monitoring エージェントのインストールをご覧ください。

次のステップ