MIG に対する推奨マシンタイプの適用


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

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

推奨マシンタイプ提案は、サイズの適正化ともいいます。

始める前に

  • Google Cloud コンソールについてのドキュメントをお読みください。
  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。

    gcloud

    1. Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init
    2. デフォルトのリージョンとゾーンを設定します

    REST

    このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

      Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init

制限事項

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

料金

推奨マシンタイプ提案は無料で利用できます。推奨を適用してインスタンスのマシンタイプをサイズ変更すると、選択したマシンタイプに対して課金されます。

ユースケース

次のワークロード条件が合致する場合は、推奨マシンタイプを利用できます。

  • 季節要因によるトラフィックの影響を受けやすいワークロードなど、トラフィックが周期的に増減するワークロード。
  • 読み取り / 書き込みのスループットなどの他の制限があるために、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 コンソールで確認できます。gcloud CLI または REST を使用して Recommender から推奨マシンタイプを表示できます。

コンソール

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

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

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

    [推奨] 列

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

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

gcloud

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

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

例:

gcloud 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 のドキュメントをご覧ください。

REST

Recommender API を MIG マシンタイプ Recommender ID とともに使用します。

PROJECT_ID=my-project
LOCATION=us-central1-c
RECOMMENDER_ID=google.compute.instanceGroupManager.MachineTypeRecommender

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  https://recommender.googleapis.com/v1/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 コンソールで、[インスタンス グループ] ページに移動します。

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

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

    推奨列の選択

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

  4. [推奨事項の確認] ページで、推奨事項について詳しく説明します。推奨を続行すると、Compute Engine は古いテンプレートを使用しているインスタンス グループ内のすべてのインスタンスを新しいテンプレートに更新します。

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

    1. 新しいインスタンス テンプレートを使用して積極的にインスタンスの削除や作成を行う場合は、[自動] を選択します。サイズ変更などの他の方法でインスタンスが作成された場合や、新しいインスタンスがグループに追加された場合にのみ更新を適用するには、[選択的] を選択します。
    2. 自動更新を選択した場合は、[インスタンスを置換するときにインスタンス名を保持する] を選択します。
      • インスタンス名を保持する場合は、[一時的な追加のインスタンス] で、マネージド インスタンス グループのターゲット サイズを超えて作成できる、一時的な追加のインスタンスの数を選択します。許可するインスタンスが増えるほど、更新が迅速に行われます(追加のインスタンスには費用がかかります)。デフォルトでは、追加のインスタンス数は 1 です。
    3. [オフライン上限インスタンス] で、この更新中に一度にオフラインにできるインスタンスの数を選択します。この数値には、他の理由でオフラインになっているインスタンスも含まれます。たとえば、インスタンス グループがサイズ増加の処理中である場合、作成中のインスタンスはオフラインになる場合があります。これらのインスタンスはこの数に加算されます。オフラインにできるインスタンスは、デフォルトで一度に 1 つだけです。
    4. 省略可: [詳細設定を表示] を開きます。[最小待機時間] で、新しいインスタンスが更新済みとしてマークされるまで待つ秒数を選択します。この時間はヘルスチェックが成功した後に開始されます。この機能を使用して、インスタンス テンプレートが適用されるレートを制御します。
  6. 変更を適用するには、[保存] をクリックします。

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

推奨を閉じる

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

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

コンソールから単一の推奨を閉じるには:

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

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

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

  3. [閉じる] をクリックします。

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

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

    閉じた推奨

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

  3. [復元] をクリックします。

モニタリング エージェントを使用した、より正確な推奨の提示

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

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

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

次のステップ