このドキュメントでは、ゲスト エージェントのアーキテクチャの概要について説明します。ゲスト エージェントは、ゲスト環境の重要なコンポーネントです。ゲスト環境には、Compute Engine でインスタンスを実行するために必要なスクリプト、デーモン、バイナリが含まれています。詳細については、ゲスト環境をご覧ください。
ゲスト エージェントは、サービスを設定し、スナップショット スクリプトの実行、Windows フェイルオーバー、OS Login、メタデータ ベースの SSH 認証などの機能の最小構成を定義します。ゲスト エージェントのコア機能の詳細については、ゲスト エージェントの機能をご覧ください。
ゲスト エージェントのアーキテクチャ
バージョン 20250901.00 以降、ゲスト エージェントのアーキテクチャは、モノリシック設計から最新のプラグインベースのシステムに更新されます。この進化により、柔軟性、信頼性、拡張性が向上します。
モノリシック アーキテクチャ:
20250901.00より前のゲスト エージェントは、メタデータ サーバーのインスタンスの説明を中心とした単一の統合プロセスを備えています。メタデータ サーバーは、すべての Compute Engine インスタンスとともに実行されるインスタンスごとの HTTP サーバーです。メタデータ サーバーの詳細については、VM メタデータをご覧ください。ゲスト エージェントはメタデータ サーバーをロング ポーリングし、状態の変化に基づいてアクションを実行します。このアーキテクチャでは、エージェントの状態は SSH やネットワーク設定などのすべてのタスクで共有されます。このモノリシックなアプローチでは、インターフェースとコンポーネントの分離が欠けていました。エージェントの 1 つの領域での変更や機能の導入は、システム全体に同時に影響します。このパターンでは、機能の追加とテスト カバレッジが難しくなります。
プラグイン ベースのアーキテクチャ: バージョン
20250901.00以降では、ゲスト エージェントは中央マネージャーによって管理される個別の独立したプラグインに分割されます。各プラグインはメタデータ サーバーとやり取りし、中央マネージャーの指示に沿って必要に応じて変更を行います。このモジュール式のアプローチにより、1 つのプラグインのクラッシュがコア エージェントや他のプラグインに影響しないようになっています。
プラグイン ベースのアーキテクチャ
このアーキテクチャは、さまざまなプラグインを制御する中央マネージャーを中心に構築されており、コア機能とオプションのサービス固有のプラグイン(拡張機能)が分離されています。
主要コンポーネント
次の図は、ゲスト エージェントの主要コンポーネントとそのインタラクションを示しています。
コアプラグイン: このプラグインは、元のゲスト エージェントの機能をカプセル化します。インスタンスが Google Cloudで実行するために必要なタスクを実行します。たとえば、次のようなタスクがあります。
- ネットワーク構成: 通信を有効にするようにプライマリ ネットワーク インターフェースを設定します。
- SSH アクセス: ユーザーの SSH 認証鍵を管理して、インスタンスへの安全な接続を許可します。
- メタデータ アクセス: インスタンスがインスタンスとプロジェクトのメタデータにアクセスするための pathway を提供します。
コアプラグインは無効にできません。
ゲスト エージェントのコア機能の詳細については、ゲスト エージェントの機能をご覧ください。
拡張機能(オプションのプラグイン): これらの拡張機能をプロビジョニングして、他のGoogle Cloud サービスと統合し、次のようなタスクを実行できます。
- モニタリングとロギング: Ops エージェントを有効にして、Cloud Monitoring の指標とログを収集します。詳細については、VM Extension Manager のポリシーを使用して Ops エージェントをインストールして管理するをご覧ください。
- ワークロード管理: コンピューティング ワークロード用エージェントを有効にして、ワークロードから構成情報とランタイム情報を収集し、分析します。詳細については、コンピューティング ワークロード用エージェントの概要をご覧ください。
- ワークロードの最適化: SAP 用エージェントを有効にして、 Google Cloudで実行される SAP ワークロードをサポートします。詳細については、VM フリートに SAP 用エージェントをインストールして管理するをご覧ください。
これらの拡張機能のインストールと管理の詳細については、VM Extension Manager をご覧ください。
VM Extension Manager: このマネージド Google Cloud サービスは、Google のバックエンド インフラストラクチャで実行されます。VM Extension Manager は、インスタンス上のゲスト エージェント マネージャーと通信して、拡張機能のライフサイクル(インストール、更新、構成など)を管理します。
ゲスト エージェント マネージャー: この中央プロセスは、すべてのプラグインのステータスを開始、停止、モニタリングします。ゲスト エージェント マネージャーは、コアプラグインと VM Extension Manager 間の通信を容易にします。拡張機能のライフサイクル管理には、次のものが含まれます。
- インストールと更新: ゲスト エージェント マネージャーは、VM Extension Manager からの指示に基づいて、拡張機能をインストール、起動、停止、構成します。
- ヘルス モニタリング: ゲスト エージェント マネージャーは、CPU やメモリ使用量など、拡張機能の健全性とステータスをモニタリングし、この情報を VM Extension Manager に報告します。
- ポリシー管理: Compute Engine API を使用して、拡張機能のインストールとバージョニングを制御するポリシーを作成します。
利点
プラグイン ベースのアーキテクチャには、モノリシック設計よりもいくつかの利点があります。これには、次のような利点があります。
- プラグインの分離: 各プラグインは個別のプロセスで実行されるため、1 つのプラグインでクラッシュが発生しても、コア エージェントや他のプラグインに影響しません。
- リソース保護: ゲスト エージェントは OS レベルの機能を使用してプラグインにリソース上限を適用し、単一のプラグインが過剰な CPU やメモリを消費するのを防ぎます。
- クラッシュからの自動復元: プラグインのクラッシュから自動的に復元します。プラグインを停止して再起動します。
- 選択的な有効化: 不要な拡張機能を無効にすることで、インスタンスを保護または最適化できます。
- 拡張機能のオーバーヘッドの削減: ゲスト エージェント マネージャーが拡張機能のインストールと更新を自動的に処理するため、最新の状態に保つために必要な手動作業が軽減されます。
API エンドポイント
ゲスト エージェントは、機能するために複数の Google API とエンドポイントと通信します。特定のファイアウォール ルールがある場合、または VPC Service Controls を使用して、それを使用するエージェント機能に依存している場合は、インスタンスが対応するエンドポイントにアクセスできることを確認してください。
- メタデータ サーバー(
metadata.google.internal): ゲスト エージェントは、メタデータ サーバーを使用して、インスタンスとプロジェクトのメタデータ(SSH 認証鍵やネットワーク構成など)を取得し、インスタンスを設定します。詳細については、コア機能とメタデータ サーバー エンドポイントをご覧ください。 - Cloud Storage(
storage.googleapis.com): インスタンス メタデータに Cloud Storage バケットを指す URL が指定されている場合、ゲスト エージェントは Cloud Storage からメタデータ スクリプトをダウンロードする可能性があります。詳細については、Cloud Storage ドキュメントのメタデータ スクリプトの実行とリクエスト エンドポイントをご覧ください。 - VM Extension Manager(
*.agentcommunication.googleapis.com): ゲスト エージェント マネージャーは、エージェント通信サービス(ACS)と通信して、拡張機能のライフサイクルを管理し、指標をレポートします。詳細については、VM Extension Manager をご覧ください。 - Cloud Logging(
logging.googleapis.com): デフォルトでは、ゲスト エージェントでログの Cloud Logging が有効になっています。詳細については、Cloud Logging API の概要をご覧ください。
リージョン エンドポイントの一覧については、リージョン サービス エンドポイントをご覧ください。
ゲスト エージェント バイナリの場所
次の表に、アーキテクチャに応じて、Linux インスタンスと Windows インスタンスのさまざまなゲスト エージェント バイナリのファイルパスを示します。
プラグイン ベースのエージェント バイナリ
次の表に、Linux インスタンスと Windows インスタンスのプラグイン ベースのゲスト エージェント バイナリのファイルパスを示します。
| コンポーネント | Linux のパス | Windows のパス |
|---|---|---|
| ゲスト エージェント マネージャー | /usr/bin/google_guest_agent_manager |
C:\ProgramData\Google\Compute Engine\agent\GCEWindowsAgentManager.exe |
| コアプラグイン バイナリ | /usr/lib/google/guest_agent/core_plugin |
C:\Program Files\Google\Compute Engine\agent\CorePlugin.exe |
| メタデータ スクリプト ランナー | /usr/bin/gce_metadata_script_runner |
C:\Program Files\Google\Compute Engine\agent\GCEMetadataScriptRunner.exe |
モノリシック エージェント バイナリ
次の表に、Linux インスタンスと Windows インスタンスのモノリシック ゲスト エージェント バイナリのファイルパスを示します。
| コンポーネント | Linux のパス | Windows のパス |
|---|---|---|
| ゲスト エージェント | /usr/bin/google_guest_agent |
C:\Program Files\Google\Compute Engine\agent\GCEWindowsAgent.exe |
| メタデータ スクリプト ランナー | /usr/bin/google_metadata_script_runner |
C:\Program Files\Google\Compute Engine\metadata_scripts\GCEMetadataScripts.exe |
| 承認された鍵 | 該当なし | C:\Program Files\Google\Compute Engine\agent\GCEAuthorizedKeys.exe |
ゲスト エージェント デーモン サービス
次の表に、Linux インスタンスと Windows インスタンスにインストールされているゲスト エージェント デーモン サービスを示します。これらのサービスは、Linux では systemd ユニットとして、Windows では Windows サービスとして実行されます。
| コンポーネント | Linux でのサービス名 | Windows のサービス名 | ステータス |
|---|---|---|---|
| ゲスト エージェント マネージャー | google-guest-agent-manager.service |
GCEAgentManager |
下位互換性を含むすべてのモードで有効。 |
| ゲスト エージェント | google-guest-agent.service |
GCEAgent |
デフォルトでは無効になっています。 下位互換モードでのみ有効になります。 |
| ゲスト エージェント互換性マネージャー | google-guest-compat-manager.service |
GCEWindowsCompatManager |
下位互換性を含むすべてのモードで有効。 |
| ワークロード証明書のリフレッシャー | gce-workload-cert-refresh.timer |
N/A |
デフォルトでは無効になっています。 下位互換モードでのみ有効になります。 |
| 起動スクリプト | google-startup-scripts.service |
GCEStartup |
|
| シャットダウン スクリプト | google-shutdown-scripts.service |
Shutdown |
|
下位互換性
以前のモノリシック ゲスト エージェントからプラグイン ベースのシステムへのスムーズな移行を確保するため、ゲスト エージェント パッケージには下位互換性を確保するために設計された複数のコンポーネントが含まれています。これらのコンポーネントはプラグイン ベースのアーキテクチャの一部ではなく、メタデータ属性 enable-guest-agent-core-plugin を false に設定してモノリシック エージェントに戻すことを手動で選択した場合にのみ有効になります。
この互換性をサポートするコンポーネントは次のとおりです。
- ゲスト エージェント互換性マネージャー: このパッケージは、プラグイン ベースのエージェントとモノリシック エージェント間の切り替えを管理します。
- メタデータ スクリプト ランナー互換性マネージャー: このパッケージは、モノリシック エージェントとプラグイン ベースのエージェントのどちらがアクティブかによって、正しいスクリプト ランナーが使用されるようにします。
- 承認済み鍵互換性マネージャー(Windows のみ): このパッケージは SSH 鍵を処理し、古いエージェントと新しいエージェントのどちらでも正しい鍵が使用されるようにします。
| コンポーネント | Linux のパス | Windows のパス |
|---|---|---|
| ゲスト エージェント互換性マネージャー | /usr/bin/google_guest_compat_manager |
C:\Program Files\Google\Compute Engine\agent\GCEWindowsCompatManager.exe |
| メタデータ スクリプト ランナーの互換性マネージャー | /usr/bin/metadata_script_runner_compat |
C:\Program Files\Google\Compute Engine\metadata_scripts\GCECompatMetadataScripts.exe |
| 承認済みキーの互換性マネージャー | 該当なし | C:\Program Files\Google\Compute Engine\agent\GCEWindowsAuthorizedKeysCompat.exe |
次のステップ
- コアプラグイン関数の詳細については、ゲスト エージェントの機能をご覧ください。