客机代理简介


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

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

客机代理架构

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

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

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

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

基于插件的架构

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

关键组件

下图展示了客机代理的关键组件及其交互。

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

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

    您无法停用核心插件。

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

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

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

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

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

  • 客机代理管理器:此中央进程可启动、停止和监控所有插件的状态。客机代理管理器有助于核心插件与代理控制平面之间的通信。可选插件的生命周期管理包括:

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

优势

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

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

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

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

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

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

组件 Linux 上的路径 Windows 上的路径
客机代理管理器 /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

向后兼容性

为了确保从之前的单体式客机代理顺利过渡到基于插件的系统,客机代理软件包包含多个旨在实现向后兼容性的组件。这些组件不属于基于插件的架构,只有在您通过将元数据属性 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

后续步骤