Funktionen des Gast-Agents

In diesem Dokument werden die Architektur und die Hauptfunktionen des Gast-Agents beschrieben. Anhand dieser Informationen können Sie nachvollziehen, wie der Agent die Instanzeinrichtung, Netzwerkschnittstellen, Metadatenskripts und Nutzerkonten verwaltet, um den Zustand und die Leistung Ihrer Compute Engine-Instanzen aufrechtzuerhalten. Der Gast-Agent ist eine Kernkomponente der Gastumgebung, die die Scripts, Daemons und Binärdateien enthält, die Compute-Instanzen für die Ausführung in Compute Engine benötigen.

Funktionsweise des Gast-Agents

Ab Version 20250901.00 verwendet der Gast-Agent eine auf Plug-ins basierende Architektur. Dieses Design verbessert die Zuverlässigkeit und Flexibilität, indem die Funktionen des Agenten in separate Komponenten unterteilt werden.

Die Gast-Agent-Architektur besteht aus einigen wichtigen Komponenten:

  • Guest Agent Manager: Der zentrale Prozess in Ihrer Instanz, der alle Plug-ins startet, beendet und überwacht.
  • Haupt-Plug-in: Dieses Plug-in verarbeitet die wesentlichen Dienste, die Ihre Instanz für die Ausführung in Google Cloudbenötigt. Die Funktion kann nicht deaktiviert werden.
  • Erweiterungen (optionale Plug-ins): Diese Plug-ins binden Ihre Instanz in andere Google Cloud -Dienste wie Cloud Monitoring ein. Mit dem VM Extension Manager können Sie steuern, welche dieser Plug-ins auf Ihrer Instanz ausgeführt werden.
  • VM Extension Manager: Dies ist ein verwalteter Google Cloud Dienst, der in der Backend-Infrastruktur von Google ausgeführt wird und den Lebenszyklus optionaler Plug-ins verwaltet, einschließlich ihrer Installation und Updates.

Weitere Informationen zur Architektur des Gast-Agents finden Sie unter Gast-Agent.

Startsequenz und Abhängigkeiten

Der Gast-Agent-Manager folgt einer bestimmten Startsequenz, um sicherzustellen, dass die Instanz für die Ausführung in Compute Engine richtig eingerichtet ist. Unmittelbar nach dem Start des Prozesses startet der Agent-Manager das Core-Plugin, eine spezielle Komponente, die grundlegende Aufgaben der Gastumgebung übernimmt.

Linux

Auf Linux-Instanzen wird der Gast-Agent als systemd-Dienst mit dem Namen google-guest-agent-manager.service ausgeführt. Die Startsequenz umfasst die folgenden Schritte:

  1. Netzwerkabhängigkeit einrichten: google-guest-agent-manager.service wird nach dem network-online.target-Systemd-Ziel gestartet. So wird eine grundlegende Netzwerkverbindung sichergestellt, bevor der Agent mit dem Metadatenserver kommuniziert oder andere Konfigurationsschritte ausführt. Implementierungsdetails finden Sie in der Konfigurationsdatei für die google-guest-agent-manager.service-Einheit.
  2. Sendet eine Benachrichtigung, dass er bereit ist: Der Gast-Agent führt die mindestens erforderlichen Einrichtungsschritte aus und informiert das System dann über systemd-notify --ready, dass er vollständig betriebsbereit ist und andere Komponenten bedienen kann. Der KI-Agent führt die folgenden erforderlichen Einrichtungsschritte aus:

Windows

Auf Windows-Instanzen wird der Gast-Agent als Windows-Dienst mit dem Namen GCEAgentManager ausgeführt. Die Startsequenz umfasst die folgenden Schritte:

  1. Verzögerten Start aktivieren: Der Starttyp des Dienstes ist auf Automatisch (Verzögerter Start) festgelegt. So können die wichtigsten Betriebssystemdienste zuerst initialisiert werden, wodurch die Ressourcenkonflikte während der ersten Startphase reduziert werden. Details zur Implementierung finden Sie im Dienstinstallationsskript.
  2. Dienststatus festlegen: Der Agent führt die erforderliche Mindesteinrichtung aus und legt dann den Dienststatus SERVICE_RUNNING fest, um das System darüber zu informieren, dass er vollständig betriebsbereit ist und andere Komponenten bedienen kann. Der Kundenservicemitarbeiter führt die folgenden Mindestanforderungen an die Einrichtung aus:

Best Practices für abhängige Prozesse

Wenn Sie benutzerdefinierte Dienste oder Scripts haben, die von Gast-Agent-Funktionen wie dem MDS-Anmeldedaten-Bootstrapping abhängen, müssen Sie eine explizite Startabhängigkeit definieren, damit sie nur ausgeführt werden, wenn der Agent aktiv ist.

Linux

Fügen Sie in Ihrer Unit-Datei eine Abhängigkeit vom systemd-Dienst des Gast-Agents hinzu, z. B.:

[Unit]
After=google-guest-agent-manager.service

Windows

Fügen Sie mit Dienststeuerung eine Abhängigkeit vom Windows-Dienst des Gast-Agents hinzu, z. B.:

sc config "CustomService" depend= "GCEAgentManager"

Hauptfunktion

Das Core-Plug-in ist für die grundlegenden Dienste verantwortlich, die für die Funktion Ihrer Instanz in Compute Engine erforderlich sind. Im folgenden Abschnitt werden die Funktionen des Kern-Plug-ins beschrieben. Viele dieser Funktionen lassen sich mit der Konfigurationsdatei des Gast-Agents anpassen.

Ersteinrichtung und Optimierung der Instanz

Der Gast-Agent führt mehrere Einrichtungsaufgaben aus, um die Instanz für die Ausführung in Compute Engine vorzubereiten. Wie in der folgenden Tabelle zu sehen ist, werden einige Aufgaben nur beim ersten Start ausgeführt, andere bei jedem Start.

Aufgabe Standardpfad Häufigkeit
SSH-Hostschlüssel generieren /etc/ssh/ssh_host_type_key und .pub. Zu den Standardtypen gehören ecdsa, ed25519 und rsa. Beim ersten Booten (nur Linux)
boto-Konfiguration für die Verwendung von Cloud Storage erstellen /etc/boto.cfg Beim ersten Booten (nur Linux)
Eindeutige Instanz-ID speichern Linux: /etc/google_instance_id
Windows: C:\ProgramData\Google\Compute Engine\google-guest-agent\google_instance_id
Beim ersten Booten
Für lokale SSDs optimieren Konfiguriert über die Einstellungen des System-E/A-Planers in /sys/block/dev/queue/scheduler, wobei dev der Gerätename ist (z. B. nvme0n1 oder sdb). Bei jedem Start (nur Linux)
Multi-Queue auf allen virtionet-Geräten aktivieren Keine Bei jedem Start

Sie können diese Einrichtungsaufgaben steuern, indem Sie die InstanceSetup-Optionen der Konfigurationsdatei des Gast-Agents konfigurieren. Sie können beispielsweise die Optimierung für lokale SSDs deaktivieren, indem Sie optimize_local_ssd = false festlegen.

Erfassung von Systemtelemetriedaten

Der Gast-Agent zeichnet beim Booten und dann in regelmäßigen Abständen, mindestens alle 24 Stunden, einige grundlegende Systemtelemetriedaten auf. Die aufgezeichneten Informationen umfassen Folgendes:

  • Version und Architektur des Gast-Agents
  • Name und Version des Betriebssystems
  • Betriebssystemkernel-Release und ‑Version
  • Unterstützte ISV-Anwendung (Independent Software Vendor) auf der Compute-Instanz und die erkannte Version

    Unterstützte ISV-Anwendungen

    • Apache Cassandra
    • Apache Hadoop
    • Apache Spark
    • Apache-Webserver
    • Citrix Cloud Connector
    • Citrix Delivery Controller
    • Citrix StoreFront
    • Citrix Virtual Delivery Agent
    • EDB Postgres
    • EDB Postgres Advanced Server (EPAS)
    • Kubernetes
    • MariaDB
    • Memcached
    • Microsoft Active Directory
    • Microsoft Message Queuing (MSMQ)
    • Microsoft SQL Server
    • MongoDB
    • MySQL
    • Oracle Data Guard
    • Oracle-Datenbank
    • Oracle E-Business Suite
    • Oracle GoldenGate
    • Oracle JD Edwards EnterpriseOne
    • Oracle PeopleSoft
    • Oracle WebLogic Server
    • PostgreSQL
    • Red Hat OpenShift
    • Redis
    • SAP Gateway
    • SAP HANA
    • SAP HANA Studio
    • SAP IQ
    • SAP NetWeaver ABAP
    • SAP NetWeaver ASCS
    • SAP NetWeaver Enqueue Replicator
    • SAP NetWeaver Java
    • SAP Web Dispatcher
    • SUSE Pacemaker

Sie können die Erfassung von Telemetriedaten deaktivieren, indem Sie den Metadatenschlüssel disable-guest-telemetry auf true setzen. Informationen zum Festlegen von Metadaten finden Sie unter Benutzerdefinierte Metadaten festlegen und entfernen.

Zeitsynchronisierung (nur Linux)

Damit die Zeit korrekt erfasst wird, verwendet der Gast-Agent die clock_skew_daemon-Komponente, um die Uhr auf Ihrer Instanz regelmäßig an den physischen Server anzupassen, auf dem sie ausgeführt wird. Dieser Prozess verhindert das Problem der Uhrzeitabweichung und generiert eine system time has changed-Meldung in den Instanzlogs, die bestätigt, dass die Zeit erfolgreich synchronisiert wurde.

Wenn diese Option aktiviert ist, synchronisiert der Agent die Uhr normalerweise nach einem Stopp- oder Start-Ereignis oder nach einer Migration. Wenn die Echtzeituhr (RTC) auf Ihrer Instanz jedoch für die Verwendung der lokalen Zeitzone anstelle von UTC konfiguriert ist, erkennt der Agent diese Konfiguration automatisch und deaktiviert die Uhrzeitsynchronisierung, um potenzielle Inkonsistenzen zu vermeiden.

Der Agent führt die Neusynchronisierung mit dem folgenden Befehl aus: /sbin/hwclock --hctosys -u --noadjfile.

Sie können die Komponente clock_skew_daemon deaktivieren, indem Sie in der Konfigurationsdatei des Gast-Agents clock_skew_daemon = false festlegen.

Ausführung von Metadatenscripts

Sie können Startskripts und Shutdown-Skripts verwenden, um bei jedem Start oder Stopp Ihrer Instanz automatisierte Aufgaben auszuführen.

Der Gast-Agent unterstützt die Ausführung dieser Skripts so:

  • Führt Skripts in einer Shell aus.
  • Wenn Sie mehrere Scripts angeben (z. B. wenn Sie sowohl startup-script als auch startup-script-url verwenden), werden beide vom Agent ausgeführt.
  • Wenn für dasselbe Ereignis mehrere Skripts angegeben werden, führt der Agent zuerst das Skript von der URL aus.
  • Nachdem ein Script abgeschlossen wurde, protokolliert der Agent seinen Beendigungsstatus.

Sie können die Ausführung von Metadatenskripts konfigurieren, indem Sie die MetadataScripts-Optionen in der Konfigurationsdatei des Gast-Agents ändern.

Verwaltung von Nutzerkonten und SSH-Schlüsseln

Der Gast-Agent verwendet ein accounts_daemon, um lokale Nutzerkonten und SSH-Schlüssel zu verwalten, die den Zugriff auf die Instanz steuern. Das genaue Verhalten variiert je nach Linux- und Windows-Betriebssystem.

Sie können die Optionen für die Kontoverwaltung ändern, indem Sie die Accounts-Optionen in der Konfigurationsdatei des Gast-Agents konfigurieren.

Linux

Mit OS Login können Sie den SSH-Zugriff auf Ihre Instanzen mithilfe von IAM verwalten, ohne einzelne SSH-Schlüssel erstellen und verwalten zu müssen. Weitere Informationen zu OS Login finden Sie unter OS Login. Wenn OS Login auf Linux-Instanzen nicht aktiviert ist, erstellt und verwaltet der Agent lokale Nutzerkonten und ihre SSH-Schlüssel mithilfe von Metadateneinstellungen.

Wenn Sie SSH-Schlüssel zu Instanz- oder Projektmetadaten hinzufügen oder daraus entfernen, erstellt oder löscht der Gast-Agent ein lokales Nutzerkonto. Der Gast-Agent führt auch die folgenden Aktionen aus, um diese lokalen Nutzerkonten zu verwalten:

  • Die Datei authorized_keys (~/.ssh/authorized_keys) wird für jedes verwaltete Nutzerkonto so verwaltet:
    • Wenn Sie Metadaten SSH-Schlüssel hinzufügen, erstellt der Agent eine authorized_keys-Datei für das Nutzerkonto.
    • Wenn Sie alle SSH-Schlüssel für einen Nutzer aus den Metadaten entfernen, löscht der Agent die authorized_keys-Datei des Nutzerkontos.
  • Verwaltet Administratorberechtigungen mithilfe der Linux-Gruppe google-sudoers. Alle Mitglieder dieser Gruppe erhalten Sudo-Berechtigungen für die Instanz. Sudo-Richtlinien werden in /etc/sudoers.d/google_sudoers konfiguriert.
  • Alle bereitgestellten Nutzerkonten werden der Gruppe google-sudoers hinzugefügt.
  • Fügt Nutzerkonten allen zusätzlichen Linux-Gruppen hinzu, die Sie in der Option groups der Konfigurationsdatei des Gast-Agents angeben.

Windows

Auf Windows-Instanzen erstellt der Agent automatisch lokale Nutzerkonten für alle SSH-Nutzerkonten, die in den Metadaten-SSH-Schlüsseln auf Instanz- oder Projektebene angegeben sind. Der Gast-Agent erstellt auch Nutzerkonten und legt Passwörter fest oder setzt sie zurück. Diese lokalen Nutzerkonten sind erforderlich, um über SSH eine Verbindung zu Windows-Instanzen herzustellen.

Um eine unbeabsichtigte AD-Nutzerbereitstellung zu verhindern, deaktivieren Sie den Kontomanager auf der AD-Controller-Instanz. Weitere Informationen zum Einrichten von AD in Compute Engine finden Sie unter Domaincontroller bereitstellen.

OS Login konfigurieren (nur Linux)

Mit OS Login können Sie den SSH-Zugriff auf Ihre Instanzen mithilfe von IAM verwalten, ohne einzelne SSH-Schlüssel erstellen und verwalten zu müssen. Weitere Informationen zu OS Login finden Sie in der Dokumentation zu OS Login.

Wenn Sie OS Login aktivieren, ist der Gast-Agent dafür verantwortlich, die Instanz für die Verwendung von OS Login zu konfigurieren.

Der Gast-Agent konfiguriert OS Login, indem er die folgenden Aufgaben ausführt:

Wenn Sie OS Login deaktivieren, werden die Konfigurationsänderungen entfernt. Die Optionen im Abschnitt Accounts der Konfigurationsdatei SSHD gelten nicht für OS Login-Nutzer.

Netzwerkverwaltung

Der Gast-Agent konfiguriert die Netzwerkschnittstellen Ihrer Instanz beim Booten automatisch. Die Netzwerkkonfiguration wird vom Metadatenserver gelesen, damit Ihre Instanz richtig mit dem Netzwerk verbunden wird und auf andere Google Cloud-Dienste zugreifen kann.

Sie können das Verhalten des Agents bei der Netzwerkverwaltung steuern, indem Sie die NetworkInterfaces-Optionen in der Konfigurationsdatei des Gast-Agents konfigurieren. Sie können beispielsweise die Option manage_primary_nic = true festlegen, damit der Agent die primäre Netzwerkkarte (NIC) zusätzlich zu den sekundären NICs verwaltet.

Bei jedem Start führt der Gast-Agent die folgenden wichtigen Aufgaben aus:

  • Aktiviert Netzwerkschnittstellen: Der Agent erkennt den aktiven Netzwerkmanager in Ihrem Betriebssystem und verwendet ihn, um alle sekundären Netzwerk-NICs zu aktivieren.
  • Konfiguriert IP-Routen: Der Agent richtet die erforderlichen IP-Routen (nur IPv4) für Funktionen wie IP-Weiterleitung und Alias-IP-Bereiche so ein:
    • Legt Routen auf der primären Ethernet-Schnittstelle fest.
    • Konfiguriert standardmäßig Google-Routen mit der Routingprotokoll-ID 66. Diese ID ist ein Namespace für IP-Adressen, die für Gast-Agents konfiguriert sind. Diese ID kann mit der Option ethernet_proto_id in der Konfigurationsdatei des Gast-Agents geändert werden.
  • Route zum Metadatenserver erstellen: Der Agent sorgt dafür, dass Ihre primäre NIC immer mit dem Metadatenserver kommunizieren kann, um Instanzinformationen abzurufen.
  • VLAN-Konfiguration: Wenn Ihre Instanz für die Verbindung mit einem virtuellen lokalen Netzwerk (VLAN) konfiguriert ist, übernimmt der Gast-Agent automatisch die Einrichtung. Die VLAN-Konfiguration wird vom Metadatenserver gelesen und die Netzwerkschnittstelle in der Instanz wird so konfiguriert, dass das richtige VLAN-Tag verwendet wird. So wird sichergestellt, dass die Instanz über das vorgesehene logische Netzwerk kommuniziert. Wichtig: Wenn das VLAN an die primäre NIC angehängt ist, konfiguriert der Gast-Agent es auch dann, wenn manage_primary_nic deaktiviert ist.

Auswahl des Netzwerkmanagers

Unter Linux erkennt der Gast-Agent automatisch, welcher Netzwerkmanager auf dem System verfügbar ist, und verwendet ihn, um die Netzwerkschnittstellen zu konfigurieren. Der Agent sucht in der Reihenfolge der Priorität nach unterstützten Managern, von netplan bis dhclient.

In der folgenden Tabelle sind die unterstützten Netzwerkmanager aufgeführt, sortiert nach dem Betriebssystem, mit dem sie standardmäßig am häufigsten verknüpft sind. Ihre spezifische Instanzkonfiguration kann abweichen, aber diese Tabelle zeigt den Standard-Netzwerkmanager für die aufgeführten Betriebssysteme.

Netzwerkmanager Betriebssystem Konfigurationsort Beispielpfad Hinweise
netplan
  • Debian 12 oder höher
  • Ubuntu 20.04 oder höher
/run/netplan/ /run/netplan/20-google-guest-agent-eth0.yaml Der Agent kann auch einen Drop-in-Standort unter /etc/systemd/network/ verwenden.
wicked
  • SLES
/etc/sysconfig/network/ /etc/sysconfig/network/ifcfg-eth0 Vorhandene ifcfg-Dateien werden nicht überschrieben, sondern übersprungen.
NetworkManager
  • CentOS
  • RHEL
  • Rocky Linux
/etc/NetworkManager/system-connections/ /etc/NetworkManager/system-connections/google-guest-agent-eth0.nmconnection
systemd-networkd
  • Debian
/usr/lib/systemd/network/ /usr/lib/systemd/network/20-eth0-google-guest-agent.network
dhclient
  • Debian 11 oder früher
  • Ubuntu 18.04 oder früher
/run/ /run/dhclient.google-guest-agent.eth0.ipv4.pid Wenn keiner der anderen Netzwerkmanager erkannt wird, verwendet der Gast-Agent standardmäßig dhclient.

Sichere Verwaltung von Anmeldedaten für den Metadatenserver (MDS)

Shielded VMs unterstützen jetzt die sichere Kommunikation mit dem Metadatenserver über den HTTPS-Endpunkt https://metadata.google.internal/computeMetadata/v1. Diese Verbesserung bietet einen sichereren Kanal für den Metadatenzugriff.

Damit diese sichere Kommunikation möglich ist, ruft der Gast-Agent die erforderlichen Anmeldedaten ab und speichert sie auf der Festplatte der Instanz. Diese Anmeldedaten werden an einem Standardspeicherort gespeichert und sind für jede Clientanwendung zugänglich, die auf der Instanz ausgeführt wird. Informationen zu diesen Speicherorten finden Sie unter Wo werden Zertifikate gespeichert?.

HTTPS-MDS-Zertifikate sind ab Version 20260228.00 des Gast-Agents standardmäßig aktiviert. In früheren Versionen des Gast-Agents mussten Sie den Metadatenschlüssel disable-https-mds-setup für Ihre Instanz oder Ihr Projekt auf false festlegen, um HTTPS-MDS-Zertifikate auf Ihren Shielded VMs automatisch einzurichten. Informationen zum Festlegen von Metadaten finden Sie unter Benutzerdefinierte Metadaten festlegen und entfernen.

Die Verwaltung von Anmeldedaten durch den Gast-Agent umfasst:

  • Erstes Update: Sowohl das Root-Zertifikat als auch die Clientanmeldedaten werden bei jedem Start des Gast-Agent-Prozesses aktualisiert.
  • Automatische Aktualisierung: Für mehr Sicherheit aktualisiert der Gast-Agent die Client-Anmeldedaten alle 48 Stunden automatisch.
  • Überschneidungszeitraum: Der Agent generiert und speichert neue Anmeldedaten, während die alten gültig bleiben. Während des Überschneidungszeitraums haben Kunden ausreichend Zeit, auf die neuen Anmeldedaten umzustellen, bevor die alten ablaufen. In diesem Überschneidungszeitraum kann der Agent auch versuchen, die Anmeldedaten im Falle eines Fehlers noch einmal abzurufen. So wird sichergestellt, dass gültige Anmeldedaten vorhanden sind, bevor die vorhandenen ungültig werden.
  • Zusammensetzung: Der Gast-Agent sorgt dafür, dass die Clientanmeldedaten aus einem privaten EC-Schlüssel (Elliptic Curve) bestehen, der mit dem Clientzertifikat verkettet ist.
  • Eindeutigkeit: Der Gast-Agent sorgt dafür, dass die Anmeldedaten für eine Instanz eindeutig sind und nicht an anderer Stelle verwendet werden können.

Weitere Informationen zum HTTPS-Metadatenserver-Endpunkt finden Sie unter Informationen zum HTTPS-Metadatenserver-Endpunkt.

Standardmäßig schreibt der Gast-Agent Zertifikate direkt auf die Festplatte. Sie können den Agent jedoch so konfigurieren, dass Zertifikate in die integrierten Zertifikatsspeicher des Betriebssystems eingebunden werden. Legen Sie den Metadatenschlüssel enable-https-mds-native-cert-store auf true fest, um diese Integration zu aktivieren. Informationen zum Festlegen von Metadaten finden Sie unter Benutzerdefinierte Metadaten festlegen und entfernen.

Das Verhalten des Agents beim Hinzufügen von Zertifikaten zu Betriebssystem-Trust Stores variiert je nach Betriebssystem:

Linux

Der Gast-Agent führt die folgenden Schritte aus:

  1. Fügt das MDS-Root-Zertifikat dem Trust Store des Systems hinzu. Der genaue Pfad hängt von der Betriebssystemdistribution ab. Informationen zu diesen Speicherorten finden Sie unter Speicher von Root-Zertifikaten im OS-Vertrauensspeicher.
  2. Aktualisiert den lokalen Trust Store, indem der entsprechende Befehl für das Betriebssystem ausgeführt wird, z. B. update-ca-certificates oder update-ca-trust.

Windows

Der Agent fügt Clientanmeldedaten zu Cert:\LocalMachine\My und das Root-Zertifikat zu Cert:\LocalMachine\Root hinzu.

Unterstützung für Windows-Failover-Cluster (nur Windows)

Der Gast-Agent überwacht den aktiven Knoten im Windows Server-Failover-Cluster und koordiniert mit dem internen Load Balancer von Google Cloud die Weiterleitung des gesamten Cluster-Traffics an den erwarteten Knoten.

Sie können dieses Verhalten mithilfe der folgenden Felder in den Instanzmetadaten oder in der Datei instance_configs.cfg steuern:

  • enable-wsfc: Wenn auf true festgelegt, ignoriert der Agent alle Informationen zur IP-Weiterleitung und beginnt, auf den Systemdiagnoseport zu reagieren. Die Standardeinstellung ist false.
  • wsfc-agent-port: gibt den Port an, über den der Agent auf Systemdiagnosen reagiert. Die Standardeinstellung ist 59998.
  • wsfc-addrs: eine durch Kommas getrennte Liste von IP-Adressen. Mit dieser erweiterten Einstellung können Sie sowohl normale Weiterleitungs-IP-Adressen als auch Cluster-IP-Adressen auf derselben Instanz verwenden. Wenn Sie diese Option festlegen, überspringt der Agent die automatische Konfiguration nur für die IP-Adressen in dieser Liste. Standardmäßig ist dieser Wert nicht festgelegt.

Nächste Schritte