本文档简要介绍了客机代理架构。客机代理是客机环境的关键组件。客机环境包含实例在 Compute Engine 上运行所需的脚本、守护程序和二进制文件。如需了解详情,请参阅客机环境。
客机代理会设置服务并定义功能(例如快照脚本执行、Windows 故障切换、OS Login 和基于元数据的 SSH 身份验证)的最低配置。如需详细了解客机代理的核心功能,请参阅客机代理功能。
客机代理架构
从版本 20250901.00 开始,客机代理架构从单体式设计更新为基于插件的现代系统。这种演变可提高灵活性、可靠性和可扩展性。
单体式架构:低于
20250901.00的客机代理采用围绕元数据服务器的实例说明的单一统一进程。元数据服务器是与每个 Compute Engine 实例一起运行的每个实例 HTTP 服务器。如需详细了解元数据服务器,请参阅虚拟机元数据。客机代理会长时间轮询元数据服务器,并根据状态变化执行操作。在此架构中,代理的状态在所有任务(例如 SSH 和网络设置)之间共享。这种单体式方法缺少接口和组件隔离。智能体某个方面的更改或功能引入会同时影响整个系统。这种模式使得添加功能和测试覆盖率变得非常困难。
基于插件的架构:从版本
20250901.00开始,客机代理分为由中央管理器管理的不同独立插件。每个插件都可以与元数据服务器进行交互,并根据中央管理器的指示按需进行更改。这种模块化方法可确保一个插件中的崩溃不会影响核心代理或其他插件。
基于插件的架构
此架构是围绕中央管理器构建的,该管理器可控制各种插件,从而将核心功能与可选的服务特有插件(称为扩展程序)分离。
关键组件
下图展示了客机代理的关键组件及其交互。
核心插件:此插件用于封装原始客机代理的功能。它会执行实例在 Google Cloud上运行所需的基本任务。这些任务包括以下各项:
- 网络配置:设置主网络接口以实现通信。
- SSH 访问:管理用户 SSH 密钥,以允许安全连接到您的实例。
- 元数据访问:为实例提供访问实例和项目元数据的路径。
您无法停用核心插件。
如需详细了解客机代理的核心功能,请参阅客机代理功能。
扩展程序(可选插件):您可以预配这些扩展程序,以便与其他Google Cloud 服务集成,从而执行以下任务:
- 监控和日志记录:启用 Ops Agent 以收集 Cloud Monitoring 的指标和日志。如需了解详情,请参阅使用虚拟机扩展程序管理器政策安装和管理 Ops Agent。
- 工作负载管理:启用 Agent for Compute Workloads,以从工作负载收集配置和运行时信息以供分析。如需了解详情,请参阅 Agent for Compute Workloads 概览。
- 工作负载优化:启用 Agent for SAP 以支持在 Google Cloud上运行的 SAP 工作负载。如需了解详情,请参阅在一组虚拟机上安装和管理 Agent for SAP。
如需详细了解如何安装和管理这些扩展程序,请参阅虚拟机扩展程序管理器。
虚拟机扩展程序管理器:此托管式 Google Cloud 服务在 Google 的后端基础设施上运行。虚拟机扩展程序管理器通过与实例上的客机代理管理器通信,管理扩展程序的生命周期,包括其安装、更新和配置。
客机代理管理器:此中央进程可启动、停止和监控所有插件的状态。客机代理管理器有助于核心插件与虚拟机扩展程序管理器之间的通信。扩展程序的生命周期管理包括以下方面:
- 安装和更新:客机代理管理器会根据虚拟机扩展程序管理器的指令安装、启动、停止和配置扩展程序。
- 健康状况监控:客机代理管理器会监控扩展程序的健康状况和状态(包括其 CPU 和内存用量),并将此信息报告回虚拟机扩展程序管理器。
- 政策管理:使用 Compute Engine API 创建用于控制扩展程序安装和版本控制的政策。
优势
基于插件的架构相较于单体式设计具有多项优势。这些优势如下所示:
- 插件隔离:每个插件都在单独的进程中运行,因此一个插件中的崩溃不会影响核心代理或其他插件。
- 资源保护:客机代理使用操作系统级功能对插件强制执行资源限制,以防止任何单个插件消耗过多的 CPU 或内存。
- 自动崩溃恢复:系统通过停止并重新启动插件,自动从插件崩溃中恢复。
- 选择性启用:您可以停用不需要的扩展程序,以便保护或优化实例。
- 降低了扩展程序的开销:客机代理管理器会自动处理扩展程序的安装和更新,从而减少了使这些扩展程序保持最新所需的手动工作量。
API 端点
访客代理会与多个 Google API 和端点通信,以实现相应功能。如果您有特定的防火墙规则,或者使用 VPC Service Controls 并依赖于使用它的代理功能,请确保您的实例可以访问相应的端点:
- 元数据服务器 (
metadata.google.internal):Guest 代理依赖元数据服务器来检索实例和项目元数据(例如 SSH 密钥和网络配置),以设置实例。如需了解详情,请参阅核心功能和元数据服务器端点。 - Cloud Storage (
storage.googleapis.com):如果实例元数据提供指向 Cloud Storage 存储桶的网址,则 Guest 代理可能会从 Cloud Storage 下载元数据脚本。如需了解详情,请参阅 Cloud Storage 文档中的元数据脚本执行和请求端点。 - 虚拟机扩展程序管理器 (
*.agentcommunication.googleapis.com):客户代理管理器与代理通信服务 (ACS) 通信,以管理扩展程序的生命周期并报告指标。如需了解详情,请参阅虚拟机扩展程序管理器。 - Cloud Logging (
logging.googleapis.com):默认情况下,guest 代理已为日志启用 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 |
后续步骤
- 如需详细了解核心插件功能,请参阅客机代理功能