客机代理简介


本文档简要介绍了 Guest 代理架构。客户机代理是客户机环境的关键组件。访客环境包含实例在 Compute Engine 上运行时所需的脚本、守护程序和二进制文件。如需了解详情,请参阅客机环境

Guest 代理会设置服务并定义功能(例如快照脚本执行、Windows 故障转移、OS Login 和基于元数据的 SSH 身份验证)的最低配置。如需详细了解客机代理的核心功能,请参阅客机代理功能

客户机代理架构

从版本 20250901.00 开始,访客代理架构从单体式设计更新为基于插件的现代系统。这种演变可提高灵活性、可靠性和可扩展性。

  • 单体式架构:低于 20250901.00 的客户机代理采用围绕元数据服务器的实例描述的单一统一进程。元数据服务器是一个按实例运行的 HTTP 服务器,与每个 Compute Engine 实例一起运行。如需详细了解元数据服务器,请参阅虚拟机元数据

    客机代理会长时间轮询元数据服务器,并根据状态变化采取行动。在此架构中,代理的状态在所有任务(例如 SSH 和网络设置)之间共享。这种单体方法缺乏接口和组件隔离。代理某个方面的变更或功能引入会同时影响整个系统。这种模式使得添加功能和测试覆盖率变得非常困难。

  • 基于插件的架构:从版本 20250901.00 开始,guest 代理分为由中央管理器管理的独立插件。每个插件都可以与元数据服务器互动,并根据中央管理器的指示进行必要的更改。这种模块化方法可确保一个插件中的崩溃不会影响核心代理或其他插件。

基于插件的架构

此架构围绕一个中央管理器构建,该管理器可控制各种插件,从而将核心功能与可选的特定于服务的插件分离开来。

关键组件

下图显示了 Guest 代理的关键组件及其互动。

中央访客代理管理器控制着一个核心插件和可选插件。
    客户代理管理器与 Google 后端的代理控制平面通信,以管理可选插件。
图 1:客户机代理架构
  • 核心插件:此插件封装了原始 guest 代理的功能。它可执行实例在 Google Cloud上运行所需的基本任务。这些任务包括以下内容:

    • 网络配置:设置主网络接口以启用通信。
    • SSH 访问权限:管理用户 SSH 密钥,以允许安全连接到您的实例。
    • 元数据访问:为实例提供访问实例和项目元数据的途径。

    您无法停用核心插件。

    如需详细了解客机代理的核心功能,请参阅客机代理功能

  • 可选插件:您可以预配这些插件,以便与其他Google Cloud 服务集成,从而执行以下任务:

    • 监控和日志记录:启用 Ops Agent 插件以收集 Cloud Monitoring 的指标和日志。
    • 工作负载管理:启用 Workload Manager 插件,以从工作负载中收集配置和运行时信息以供分析。
    • 工作负载优化:启用 SAP Agent 插件,以支持在 Google Cloud上运行的 SAP 工作负载。

    您可以根据需要启用或停用可选插件。

  • 代理控制平面:此托管式 Google Cloud 服务在 Google 的后端基础架构上运行。控制平面通过与实例上的 Guest 代理管理器通信,管理可选插件的生命周期,包括其安装、更新和配置。

  • Guest agent manager:此中央进程可启动、停止和监控所有插件的状态。Guest Agent Manager 可促进核心插件与代理控制层面之间的通信。可选插件的生命周期管理包括:

    • 安装和更新:客机代理管理器根据代理控制平面的指令安装、启动、停止和配置可选插件。
    • 健康状况监控:Guest Agent Manager 会监控可选插件的健康状况和状态,包括其 CPU 和内存使用情况,并将此信息报告给代理控制平面。
    • 政策管理:使用 Compute Engine API 创建用于控制可选插件的安装和版本控制的政策。

优势

基于插件的架构相较于单体设计具有多项优势。这些优势如下所示:

  • 插件隔离:每个插件都在单独的进程中运行,因此一个插件中的崩溃不会影响核心代理或其他插件。
  • 资源保护:Guest 代理使用操作系统级功能来强制执行插件的资源限制,防止任何单个插件消耗过多的 CPU 或内存。
  • 自动崩溃恢复:系统通过停止并重新启动插件来自动从插件崩溃中恢复。
  • 选择性启用:您可以停用不需要的可选插件,从而保护或优化实例。
  • 降低了可选插件的开销:Guest Agent Manager 会自动处理可选插件的安装和更新,从而减少了手动更新这些插件所需的工作量。

客机代理二进制文件的位置

下表列出了 Linux 和 Windows 实例上不同客户机代理二进制文件的文件路径,具体取决于架构。

基于插件的代理二进制文件

下表列出了基于插件的客机代理二进制文件在 Linux 和 Windows 实例上的文件路径:

组件 Linux 上的路径 Windows 上的路径
Guest Agent Manager /usr/bin/google_guest_agent_manager C:\ProgramData\Google\Compute Engine\google-guest-agent
核心插件二进制文件 /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\google_guest_agent.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

向后兼容性

为了确保从之前的单体式 guest 代理顺利过渡到基于插件的系统,guest 代理软件包包含多个旨在实现向后兼容性的组件。这些组件不属于基于插件的架构,只有在您通过将元数据属性 enable-guest-agent-core-plugin 设置为 false 来手动选择恢复为单体代理时,才会激活。

支持此兼容性的组件包括:

  • Guest agent compatibility manager:此软件包用于管理基于插件的代理与单体代理之间的切换。
  • 元数据脚本运行程序兼容性管理器:此软件包可确保根据单体代理或基于插件的代理是否处于活动状态来使用正确的脚本运行程序。
  • 授权密钥兼容性管理器(仅限 Windows):此软件包用于处理 SSH 密钥,确保旧代理或新代理使用正确的密钥。
组件 Linux 上的路径 Windows 上的路径
Guest Agent 兼容性管理器 /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

后续步骤