Este documento oferece uma visão geral da arquitetura do agente convidado. O agente convidado é um componente essencial do ambiente de convidado. O ambiente de convidado contém scripts, daemons e binários que as instâncias precisam para serem executadas no Compute Engine. Para mais informações, consulte Ambiente de convidado.
O agente convidado configura serviços e define configurações mínimas para recursos como execução de script de snapshot, failover do Windows, login do SO e autenticação SSH baseada em metadados. Para mais informações sobre as funções principais do agente convidado, consulte Funcionalidade do agente convidado.
Arquitetura do agente convidado
A partir da versão 20250901.00, a arquitetura do agente convidado foi atualizada de um design monolítico para um sistema moderno baseado em plug-ins. Essa evolução melhora a flexibilidade, a confiabilidade e a capacidade de extensão.
Arquitetura monolítica: os agentes convidados anteriores à versão
20250901.00apresentam um processo único e unificado centrado na descrição das instâncias do servidor de metadados. O servidor de metadados é um servidor HTTP por instância que é executado ao lado de cada instância do Compute Engine. Para mais informações sobre o servidor de metadados, consulte Metadados da VM.O agente convidado faz uma pesquisa longa no servidor de metadados e age com base nas mudanças de estado. Com essa arquitetura, o estado do agente é compartilhado em todas as tarefas, como SSH e configuração de rede. Essa abordagem monolítica não tinha isolamento de interface e componentes. As mudanças ou introduções de recursos em uma área do agente afetam todo o sistema simultaneamente. Esse padrão dificulta a adição de recursos e a cobertura de testes.
Arquitetura baseada em plug-ins: a partir da versão
20250901.00, o agente convidado é dividido em plug-ins distintos e independentes gerenciados por um gerenciador central. Cada plug-in pode interagir com o servidor de metadados e, conforme orientado por um gerenciador central, faz mudanças conforme necessário. Essa abordagem modular garante que uma falha em um plug-in não afete o agente principal ou outros plug-ins.
A arquitetura baseada em plug-ins
Essa arquitetura é criada em torno de um gerenciador central que controla vários plug-ins, separando as funcionalidades principais dos plug-ins opcionais específicos do serviço, chamados de extensões.
Principais componentes
O diagrama a seguir mostra os principais componentes do agente convidado e as interações deles.
Plug-in principal: esse plug-in encapsula a funcionalidade do agente convidado original. Ele realiza as tarefas essenciais de que a instância precisa para ser executada em Google Cloud. Isso inclui tarefas como as seguintes:
- Configuração de rede: configura a interface de rede principal para ativar a comunicação.
- Acesso SSH: gerencia as chaves SSH do usuário para permitir conexões seguras à instância.
- Acesso a metadados: fornece um caminho para a instância acessar metadados de instância e de projeto.
Não é possível desativar o plug-in principal.
Para mais informações sobre as funções principais do agente convidado, consulte Funcionalidade do agente convidado.
Extensões (plug-ins opcionais): é possível provisionar essas extensões para integrar a outros Google Cloud serviços e realizar tarefas como:
- Monitoramento e registro: ative o Agente de operações para coletar métricas e registros do Cloud Monitoring. Para mais informações, consulte Instalar e gerenciar o Agente de operações usando políticas do Gerenciador de extensões de VM.
- Gerenciamento de cargas de trabalho: ative o Agente para cargas de trabalho computacionais para coletar informações de configuração e de execução das cargas de trabalho para análise. Para mais informações, consulte Visão geral do Agente para cargas de trabalho computacionais.
- Otimização de cargas de trabalho: ative o Agente para SAP para oferecer suporte às cargas de trabalho SAP em execução Google Cloud. Para mais informações, consulte Instalar e gerenciar o Agente para SAP em uma frota de VMs.
Para mais informações sobre como instalar e gerenciar essas extensões, consulte Gerenciador de extensões de VM.
Gerenciador de extensões de VM: esse serviço Google Cloud gerenciado é executado na infraestrutura de back-end do Google. O Gerenciador de extensões de VM gerencia o ciclo de vida das extensões, incluindo instalação, atualizações e configuração, comunicando-se com o gerenciador de agentes convidados na instância.
Gerenciador de agentes convidados: esse processo central inicia, interrompe e monitora o status de todos os plug-ins. O gerenciador de agentes convidados facilita a comunicação entre o plug-in principal e o Gerenciador de extensões de VM. O gerenciamento do ciclo de vida das extensões inclui o seguinte:
- Instalação e atualizações: o gerenciador de agentes convidados instala, inicia, interrompe e configura extensões com base nas instruções do Gerenciador de extensões de VM.
- Monitoramento de integridade: o gerenciador de agentes convidados monitora a integridade e o status das extensões, incluindo o uso de CPU e memória, e informa essas informações ao Gerenciador de extensões de VM.
- Gerenciamento de políticas: use as APIs do Compute Engine para criar políticas que controlam a instalação e o controle de versões de extensões.
Benefícios
A arquitetura baseada em plug-ins oferece várias vantagens em relação ao design monolítico. Esses benefícios incluem:
- Isolamento de plug-ins: cada plug-in é executado em um processo separado. Portanto, uma falha em um deles não afeta o agente principal ou outros plug-ins.
- Proteção de recursos: o agente convidado usa recursos no nível do SO para aplicar limites de recursos aos plug-ins, impedindo que um único plug-in consuma CPU ou memória excessivas.
- Recuperação automática de falhas: o sistema se recupera automaticamente de uma falha de plug-in interrompendo e reiniciando o plug-in.
- Ativação seletiva: é possível desativar extensões que não são necessárias, o que permite proteger ou otimizar a instância.
- Redução da sobrecarga de extensões: o gerenciador de agentes convidados processa automaticamente a instalação e as atualizações de extensões, reduzindo o esforço manual necessário para mantê-las atualizadas.
Endpoints de API
O agente convidado se comunica com várias APIs e endpoints do Google para funcionar. Se você tiver regras de firewall específicas ou usar o VPC Service Controls e depender da funcionalidade do agente que o usa, verifique se as instâncias podem acessar os endpoints correspondentes:
- Servidor de metadados (
metadata.google.internal): o agente convidado depende do servidor de metadados para recuperar metadados de instância e de projeto, como chaves SSH e configurações de rede, para configurar a instância. Para mais informações, consulte Funcionalidade principal e Endpoints do servidor de metadados. - Cloud Storage (
storage.googleapis.com): o agente convidado pode fazer o download de scripts de metadados do Cloud Storage se os metadados da instância fornecerem um URL que aponta para um bucket do Cloud Storage. Para mais informações, consulte Execução de script de metadados e Endpoints de solicitação na documentação do Cloud Storage. - Gerenciador de extensões de VM (
*.agentcommunication.googleapis.com): o gerenciador de agentes convidados se comunica com o Serviço de comunicação do agente (ACS, na sigla em inglês) para gerenciar o ciclo de vida das extensões e informar métricas. Para mais informações, consulte Gerenciador de extensões de VM. - Cloud Logging (
logging.googleapis.com): por padrão, o agente convidado tem o Cloud Logging ativado para registros. Para mais informações, consulte Visão geral da API Cloud Logging.
Para uma lista completa de endpoints regionais, consulte Endpoints de serviço regionais.
Local dos binários do agente convidado
As tabelas a seguir listam os caminhos de arquivo para os diferentes binários do agente convidado em instâncias do Linux e do Windows, dependendo da arquitetura.
Binários de agente baseados em plug-ins
Esta tabela lista os caminhos de arquivo para os binários do agente convidado baseados em plug-ins em instâncias do Linux e do Windows:
| Componente | Caminho no Linux | Caminho no Windows |
|---|---|---|
| Gerenciador de agentes convidados | /usr/bin/google_guest_agent_manager |
C:\ProgramData\Google\Compute Engine\agent\GCEWindowsAgentManager.exe |
| Binário do plug-in principal | /usr/lib/google/guest_agent/core_plugin |
C:\Program Files\Google\Compute Engine\agent\CorePlugin.exe |
| Executor do script de metadados | /usr/bin/gce_metadata_script_runner |
C:\Program Files\Google\Compute Engine\agent\GCEMetadataScriptRunner.exe |
Binários de agente monolíticos
A tabela a seguir lista os caminhos de arquivo para os binários do agente convidado monolíticos em instâncias do Linux e do Windows:
| Componente | Caminho no Linux | Caminho no Windows |
|---|---|---|
| Agente convidado | /usr/bin/google_guest_agent |
C:\Program Files\Google\Compute Engine\agent\GCEWindowsAgent.exe |
| Executor do script de metadados | /usr/bin/google_metadata_script_runner |
C:\Program Files\Google\Compute Engine\metadata_scripts\GCEMetadataScripts.exe |
| Chaves autorizadas | Não relevante | C:\Program Files\Google\Compute Engine\agent\GCEAuthorizedKeys.exe |
Serviços de daemon do agente convidado
As tabelas a seguir listam os serviços de daemon do agente convidado instalados em instâncias do Linux e do Windows. Esses serviços são executados como unidades systemd no Linux e como serviços do Windows no Windows.
| Componente | Nome do serviço no Linux | Nome do serviço no Windows | Status |
|---|---|---|---|
| Gerenciador de agentes convidados | google-guest-agent-manager.service |
GCEAgentManager |
Ativado em todos os modos, incluindo compatibilidade com versões anteriores. |
| Agente convidado | google-guest-agent.service |
GCEAgent |
Desativado por padrão. Ativado apenas em modo de compatibilidade com versões anteriores. |
| Gerenciador de compatibilidade do agente convidado | google-guest-compat-manager.service |
GCEWindowsCompatManager |
Ativado em todos os modos, incluindo compatibilidade com versões anteriores. |
| Atualizador de certificado de carga de trabalho | gce-workload-cert-refresh.timer |
N/A |
Desativado por padrão. Ativado apenas no modo de compatibilidade com versões anteriores. |
| Scripts de inicialização | google-startup-scripts.service |
GCEStartup |
|
| Scripts de encerramento | google-shutdown-scripts.service |
Shutdown |
|
Compatibilidade com versões anteriores
Para garantir uma transição tranquila do agente convidado monolítico anterior para o sistema baseado em plug-ins, o pacote do agente convidado inclui vários componentes projetados para compatibilidade com versões anteriores. Esses componentes não fazem parte da arquitetura baseada em plug-ins e são ativados apenas se você escolher manualmente reverter para o agente monolítico definindo o atributo de metadados enable-guest-agent-core-plugin como false.
Os componentes que oferecem suporte a essa compatibilidade incluem:
- Gerenciador de compatibilidade do agente convidado: esse pacote gerencia a alternância entre o agente baseado em plug-ins e o agente monolítico.
- Gerenciador de compatibilidade do executor de script de metadados: esse pacote garante que o executor de script correto seja usado, dependendo se o agente monolítico ou baseado em plug-ins está ativo.
- Gerenciador de compatibilidade de chaves autorizadas (somente Windows): esse pacote processa chaves SSH, garantindo que as chaves corretas sejam usadas para o agente antigo ou novo.
| Componente | Caminho no Linux | Caminho no Windows |
|---|---|---|
| Gerenciador de compatibilidade do agente convidado | /usr/bin/google_guest_compat_manager |
C:\Program Files\Google\Compute Engine\agent\GCEWindowsCompatManager.exe |
| Gerenciador de compatibilidade do executor de script de metadados | /usr/bin/metadata_script_runner_compat |
C:\Program Files\Google\Compute Engine\metadata_scripts\GCECompatMetadataScripts.exe |
| Gerenciador de compatibilidade de chaves autorizadas | Não relevante | C:\Program Files\Google\Compute Engine\agent\GCEWindowsAuthorizedKeysCompat.exe |
A seguir
- Para mais informações sobre as funções principais do plug-in, consulte Funcionalidade do agente convidado