Übertragungs-Agents verwalten

Storage Transfer Service-Agents sind Anwendungen, die in einem Docker-Container ausgeführt werden. die sich mit dem Storage Transfer Service für Übertragungen mit Dateisystemen koordinieren oder einen S3-kompatiblen Speicher.

Wenn für die Übertragung kein Dateisystem oder S3-kompatibler Speicher verwendet wird, keine Agents einrichten.

In diesem Dokument wird beschrieben, wie Übertragungs-Agents in auf euren Servern.

Übersicht

  • Agent-Prozesse sind dynamisch. Sie können während der Übertragung auch Agents hinzufügen, um die Leistung zu verbessern. Neu gestartete Agents werden dem entsprechenden Agent-Pool hinzugefügt und sind an der Verarbeitung vorhandener Übertragungen beteiligt. Damit können Sie anpassen, wie viele Agents ausgeführt werden, oder die Übertragungsleistung an die sich ändernde Übertragungsnachfrage anpassen.

  • Agent-Prozesse sind eine fehlertolerante Sammlung. Wenn ein Agent nicht mehr ausgeführt wird, funktionieren die verbleibenden Agents weiterhin. Wenn alle Ihre Agents angehalten werden und Sie die Agents neu starten, wird die Übertragung an der Stelle fortgesetzt, an der die Agents angehalten wurden. Auf diese Weise können Sie vermeiden, Agents zu überwachen, Übertragungen zu wiederholen oder Wiederherstellungslogik zu implementieren. Wenn Sie Agents mit Google Kubernetes Engine koordinieren, können Sie Ihre Agent-Pools ohne Ausfallzeiten bei der Übertragung patchen, verschieben und dynamisch skalieren.

    Beispiel: Sie senden zwei Übertragungen, während zwei Agents ausgeführt werden. Wenn einer der Agents aufgrund eines Neustarts oder Betriebssystem-Patches gestoppt wird, funktioniert der verbleibende Agent weiterhin. Die beiden Übertragungen werden weiterhin ausgeführt, sind jedoch langsamer, da ein einzelner Agent Daten verschiebt. Wenn der verbleibende Agent ebenfalls beendet wird, werden alle Übertragungen unterbrochen, da keine Agents ausgeführt werden. Wenn Sie die Agent-Prozesse neu starten, werden die Übertragungen an der Stelle fortgesetzt, an der sie unterbrochen wurden.

  • Agent-Prozesse gehören zu einem Pool. Sie verschieben Ihre Daten parallel. Aus diesem Grund müssen alle Agents in einem Pool dieselben Zugriff auf alle Datenquellen, die Sie übertragen möchten.

    Wenn Sie beispielsweise Daten aus einem bestimmten Dateisystem übertragen, müssen Sie das Dateisystem auf allen Computern bereitstellen, auf denen Agents in Ihrem Agent-Pool. Wenn einige Agents im Pool eine Datenquelle erreichen können und andere nicht können, schlagen Übertragungen von dieser Datenquelle fehl.

Vorbereitung

Bevor Sie die Übertragungen konfigurieren, müssen Sie folgenden Zugriff konfiguriert haben: für Nutzer und Dienstkonten.

Wenn Sie gcloud-Befehle verwenden, installieren Sie die gcloud CLI.

Übertragungs-Agents installieren und ausführen

Wir empfehlen, mindestens drei Agents pro Agent-Pool zu installieren, idealerweise auf auf separaten Rechnern. Weitere Informationen dazu, wie Sie ermitteln können, wie viele Agents ausführen, siehe Leistung des Übertragungs-Agents maximieren

Geben Sie keine vertraulichen Daten wie personenidentifizierbare Informationen an (PII) oder Sicherheitsdaten in das Präfix der Agent-ID ein. Ressourcennamen können an die Namen anderer Google Cloud-Ressourcen weitergegeben und Google-internen Systemen außerhalb Ihres Projekts zu implementieren.

So installieren und führen Sie Übertragungs-Agents aus:

Google Cloud Console

  1. Rufen Sie in der Google Cloud Console die Seite Agent-Pools auf.

    Zu „Agent-Pools“

  2. Wählen Sie den Agent-Pool aus, dem Sie den neuen Agent hinzufügen möchten.

  3. Klicken Sie auf Agent installieren.

  4. Folgen Sie der Anleitung, um den Agent zu installieren und auszuführen.

    Weitere Informationen zu den Befehlszeilenoptionen des Agents finden Sie unter Agent-Befehlszeilenoptionen.

gcloud-CLI

Wenn Sie einen oder mehrere Agents mithilfe der gcloud CLI installieren möchten, führen Sie gcloud transfer agents install aus:

gcloud transfer agents install --pool=POOL_NAME --count=NUM_AGENTS \
  --mount-directories=MOUNT_DIRECTORIES

Das Tool führt Sie durch die erforderlichen Schritte zur Installation des Agents. Dieser Befehl installiert NUM_AGENTS Agents auf Ihrem Computer, die dem Poolnamen angegeben als POOL_NAME zugeordnet sind und authentifiziert die Agents mithilfe Ihrer gcloud-Anmeldedaten. Der Poolname muss vorhanden sein oder ein Fehler wird zurückgegeben.

Das Flag --mount-directories ist optional, wird aber dringend empfohlen. Das value ist eine durch Kommas getrennte Liste von Verzeichnissen im Dateisystem, in die um dem Agent Zugriff zu gewähren. Wenn Sie dieses Flag weglassen, wird das gesamte Dateisystem im Agent-Container bereitgestellt. Weitere Informationen finden Sie unter die Referenz zu gcloud .

S3-kompatible Quellen

Wenn Sie Agents zur Verwendung mit einer S3-kompatiblen Quelle installieren, müssen Sie AWS-Anmeldedaten entweder als Umgebungsvariablen AWS_ACCESS_KEY_ID und AWS_SECRET_ACCESS_KEY oder gespeichert als Standardanmeldedaten in den Konfigurationsdateien Ihres Systems.

export AWS_ACCESS_KEY_ID=ID
export AWS_SECRET_ACCESS_KEY=SECRET
gcloud transfer agents install --pool=POOL_NAME \
  --creds-file=/relative/path/to/service-account-key.json

Dienstkontoschlüssel verwenden

Verwenden Sie die Option --creds-file, um Agents mit einem Dienstkontoschlüssel auszuführen:

gcloud transfer agents install --pool=POOL_NAME --count=NUM_AGENTS \
   --creds-file=/relative/path/to/service-account-key.json

Weitere Informationen

Für eine vollständige Liste der optionalen Flags führen Sie gcloud transfer agents install --help aus oder lesen Sie die Referenz zu gcloud transfer.

docker run

Bevor Sie Agents mit docker run installieren, folgen Sie der Anleitung zum Installieren Sie Docker.

Mit dem Befehl docker run wird ein Agent installiert. Um die Anzahl der Agents zu erhöhen in Ihrem Pool, führen Sie diesen Befehl so oft wie nötig aus.

Beim Installieren von Agents können Sie sich mit Ihrem gcloud authentifizieren oder mit einem Dienstkonto.

Standardanmeldedaten

So lassen Sie zu, dass sich der Docker-Container bei Ihrem gcloud-Standard authentifizieren kann Anmeldedaten erstellen, ein Docker-Volume erstellen, das eine Datei mit Ihrer Anwendung enthält Standardanmeldedaten verwenden, indem Sie den folgenden Befehl ausführen:

sudo docker run -ti --name gcloud-config google/cloud-sdk gcloud auth application-default login

Installieren Sie dann mit dem folgenden Befehl einen Agent. Das Flag --volumes-from, um das Anmeldedaten-Volume gcloud-config bereitzustellen:

sudo docker run --ulimit memlock=64000000 -d --rm \
--volumes-from gcloud-config \
-v HOST_DIRECTORY:CONTAINER_DIRECTORY \
gcr.io/cloud-ingest/tsop-agent:latest \
--project-id=PROJECT_ID \
--hostname=$(hostname) \
--agent-pool=POOL_NAME

Dienstkontoauthentifizierung

Zum Installieren und Ausführen von Übertragungs-Agents docker run mit einem Dienstkonto Anmeldedaten, geben Sie den Pfad zu Ihrem Dienstkontoschlüssel im JSON-Format an mit dem Flag --creds-file.

Dem Pfad muss der String /transfer_root vorangestellt werden.

Weitere Informationen finden Sie unter Dienstkontoschlüssel erstellen und verwalten finden Sie weitere Informationen zu Dienstkontoschlüsseln.

sudo docker run --ulimit memlock=64000000 -d --rm \
-v HOST_DIRECTORY:CONTAINER_DIRECTORY \
-v PATH/TO/KEY.JSON:PATH/TO/KEY.JSON \
gcr.io/cloud-ingest/tsop-agent:latest \
--project-id=PROJECT_ID \
--creds-file=/transfer_root/PATH/TO/KEY.JSON
--hostname=$(hostname) \
--agent-pool=POOL_NAME

Optionen und Flags

Ersetzen Sie die Variablen in den obigen Beispielen durch Folgendes: Informationen:

  • HOST_DIRECTORY ist das Verzeichnis auf dem Hostcomputer, aus dem Sie kopieren möchten. Sie können mehr als ein -v-Flag verwenden , um weitere Verzeichnisse anzugeben, aus denen kopiert werden soll.
  • CONTAINER_DIRECTORY ist das Verzeichnis, das dem Agent-Container zugeordnet ist. Sie muss mit HOST_DIRECTORY
  • PROJECT_ID ist der/die/das Projekt-ID auf dem die Übertragung gehostet wird.
  • POOL_NAME ist der Name des Agent-Pools, in dem der Installieren Sie diesen Agent. Wenn Sie dieses Flag weglassen, wird der Agent in Ihrem den Pool transfer_service_default des Projekts.

Der Befehl docker run unterstützt zusätzliche Flags.

  • --enable-mount-directory stellt das gesamte Dateisystem unter folgendem Pfad bereit: /transfer_root-Verzeichnis im Container. Wenn --enable-mount-directory angegeben ist, werden Verzeichnisbeschränkungen mit dem Flag -v nicht angewendet.

  • --creds-file=CREDENTIAL_FILE gibt den Pfad zu Eine Dienstkonto-Datei mit Anmeldedaten im JSON-Format. Es sei denn, Sie verwenden --enable_mount_directory müssen Sie Folgendes tun:

    1. Stellen Sie die Anmeldedatendatei mit dem Flag -v bereit.
    2. Stellen Sie dem Pfad --creds-file das Präfix /transfer_root voran.

    Beispiel:

    -v /tmp/key.json:/tmp/key.json \
    --creds-file=/transfer_root/tmp/key.json
    
  • --enable-s3 gibt an, dass dieser Agent für Übertragungen aus S3-kompatibler Speicher. Vertreter Diese Option kann nicht für Übertragungen aus einer POSIX-Datei verwendet werden. Systeme.

  • Wenn die Übertragung aus einem AWS S3- oder S3-kompatiblen Speicher erfolgt, übergeben Sie Zugriffsschlüssel-ID und geheimen Schlüssel mithilfe von Umgebungsvariablen:

    -e AWS_ACCESS_KEY_ID=AWS_ACCESS_KEY_ID \
    -e AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY
    
  • --env HTTPS_PROXY=PROXY gibt einen Weiterleitungsproxy an in Ihrem Netzwerk. Der Wert von PROXY ist die HTTP-URL und Port des Proxyservers. Achten Sie darauf, dass Sie die HTTP-URL und eine HTTPS-URL, um zu vermeiden, dass Anfragen in TLS-Verschlüsselung doppelt verpackt werden. Doppelt verpackte Anfragen verhindern, dass der Proxyserver gültige ausgehende Anfragen.

  • --agent-id-prefix=ID_PREFIX gibt ein optionales Präfix an, das der Agent-ID vorangestellt wird, um zu helfen, den Agent oder seinen Computer in der Google Cloud Console identifiziert. Wenn ein Präfix verwendet wird, hat die Agent-ID das Format prefix + hostname + Docker container ID.

  • --log-dir=LOGS_DIRECTORY ändert das Verzeichnis in die der Agent Logs schreibt. Das Standardverzeichnis ist /tmp/.

    Wenn Sie --enable_mount_directory nicht angegeben haben, müssen Sie /transfer_root diesem Pfad voranstellen. Beispiel: /transfer_root/logs.

  • --max-physical-mem=MAX_MEMORY: Agents werden standardmäßig auf mit maximal 8 GiB Systemspeicher. Wenn der Standardwert nicht zu Ihrer Umgebung passt, können Sie in den folgenden Formaten eine geeignete maximale Speichernutzung angeben:

    max-physical-mem Wert Einstellung für den maximalen Arbeitsspeicher
    6g 6 Gigabyte
    6gb 6 Gigabyte
    6GiB 6 Gibibyte

Agent-Verbindungen bestätigen

So prüfen Sie, ob Ihre Agents verbunden sind:

  1. Rufen Sie in der Google Cloud Console die Seite Agent-Pools auf.

    Zu „Agent-Pools“

    Ihre Agent-Pools werden mit der Anzahl der verbundenen Agents angezeigt.

  2. Wählen Sie einen Agent-Pool aus, um Details zu verbundenen Agents aufzurufen.

Wenn ein neuer Agent nicht innerhalb von zehn Minuten nach der Erstellung auf der Seite des Agent-Pools angezeigt wird, finden Sie weitere Informationen unter Agents sind nicht verbunden.

Agent-Aktivität überwachen

Sie können Cloud Monitoring-Benachrichtigungen verwenden, um die Agent-Aktivität zu überwachen.

Monitoring ist für project, agent_pool und agent_id verfügbar Dimensionen.

Mit diesen Monitoring-Daten können Sie Benachrichtigungen einrichten, um über potenzielle Probleme bei der Übertragung informiert zu werden. Erstellen Sie dazu eine Benachrichtigung für einen der folgenden Google Cloud-Messwerte:

Messwertname Beschreibung Empfohlene Anwendungsmöglichkeiten
storagetransfer.googleapis.com/agent/transferred_bytes_count Gibt an, wie schnell ein bestimmter Agent Daten über alle von ihm bereitgestellten Jobs zu einem bestimmten Zeitpunkt verschiebt. Benachrichtigung bei Leistungsrückgängen.
storagetransfer.googleapis.com/agent/connected Ein boolescher Wert, der true ist, für jeden Agent, von dem Google Cloud eine aktuelle Heartbeat-Nachricht erhalten hat.
  • Benachrichtigung bei fehlgeschlagenen Agents
  • Die Anzahl erfolgreicher Agents unterschreitet einen Mindestwert, den Sie für eine angemessene Leistung als erforderlich erachten
  • Problem mit Agent-Rechnern melden

Agent beenden

Führen Sie zum Beenden eines Agents docker stop für die Docker-Container-ID des Agents aus. So finden Sie und beenden Sie den Agent:

  1. Rufen Sie in der Google Cloud Console die Seite Agent-Pools auf.

    Zu „Agent-Pools“

  2. Wählen Sie den Agent-Pool aus, der den zu beendenden Agent enthält.

  3. Wählen Sie einen Agent aus der Liste aus. Im Feld Filter können Sie nach Präfixen, Agent-Status, Agent-Alter und mehr suchen.

  4. Klicken Sie auf Agent beenden. Der Befehl docker stop mit der spezifischen Container-ID wird angezeigt.

  5. Führen Sie den Befehl auf dem Computer aus, auf dem der Agent ausgeführt wird. Ein erfolgreicher docker stop-Befehl gibt die Container-ID zurück.

Nach dem Beenden wird der Agent in der Liste der Agent-Pools als Nicht verbunden angezeigt.

Agent löschen

Um bestimmte Agents zu löschen, listen Sie auf, welche Agents auf Ihrem Computer ausgeführt werden:

docker container list --all --filter ancestor=gcr.io/cloud-ingest/tsop-agent

Übergeben Sie dann die Agent-IDs an transfer agents delete:

gcloud transfer agents delete --ids=id1,id2,…

Verwenden Sie zum Löschen aller Agents, die auf dem Computer ausgeführt werden, eines der Flags --all oder --uninstall. Beide Flags löschen alle Agents auf dem Computer. Das --uninstall-Flag deinstalliert zusätzlich das Agent-Docker-Image.

gcloud transfer agents delete --all
gcloud transfer agents delete --uninstall

Details zur Übertragung des Dateisystems

Inkrementelle Übertragungen

Der Storage Transfer Service beginnt mit allen Daten, die an der Quelle und am Ziel vorhanden sind, um festzustellen, welche Quelldateien seit der letzten Übertragung neu, aktualisiert oder gelöscht wurden. Dadurch soll die von Ihren Maschinen gesendete Datenmenge reduziert, die Bandbreite effektiv genutzt und die Übertragungszeiten reduziert werden.

Um festzustellen, ob eine Datei geändert wurde, prüfen wir die Datei der Quelldatei haben und mit dem Datum der letzten Änderung die beim letzten Kopieren der Datei erfasste Größe. Wenn wir neue oder geänderte kopieren wir die gesamte Datei an ihr Ziel. Weitere Informationen zu Details zur Datenkonsistenz

Standardmäßig erkennen wir keine Dateien, die aus der Quelle gelöscht wurden, aber nicht darauf reagieren. Wenn Sie beim Erstellen oder Bearbeiten die Sync-Option Zieldateien löschen wählen, die sich nicht auch in der Quelle befinden, wird bei Ihrer Übertragung das entsprechende Objekt am Ziel gelöscht.

Wenn Sie die Synchronisierungsoption Zieldateien löschen, die nicht auch in der Quelle sind auswählen, werden Dateien, die versehentlich an der Quelle gelöscht wurden, auch am Ziel gelöscht. Wenn Sie verhindern möchten, dass Datenverluste versehentlich gelöscht werden, empfehlen wir, die Objektversionierung im Ziel-Bucket zu aktivieren, wenn Sie diese Option verwenden möchten. Wenn Sie dann versehentlich eine Datei löschen, können Sie Ihre Objekte in Cloud Storage in einer älteren Version wiederherstellen.

Details zur Datenkonsistenz

Bei einem erfolgreichen Übertragungsvorgang werden alle Quelldateien übertragen, die während der gesamten Ausführungszeit des Vorgangs nicht geändert wurden. Quelldateien, die während einer Übertragung erstellt, aktualisiert oder gelöscht wurden, können diese Änderungen im Zieldatensatz enthalten.

Storage Transfer Service ermittelt anhand des Zeitpunkts und der Größe der letzten Änderung einer Datei, geändert. Wenn eine Datei aktualisiert wird, ohne die Zeit der letzten Änderung zu ändern, oder und Sie die Option delete-objects-from-source aktivieren, können Daten verloren gehen. von dieser Änderung erhalten.

Wenn Sie das Feature delete-objects-from-source verwenden, empfehlen wir dringend, Schreibvorgänge in die Quelle für die Dauer der Übertragung einzufrieren, um vor Datenverlust zu schützen.

Führen Sie einen der folgenden Schritte aus, um Schreibvorgänge in der Quelle zu fixieren:

  • Klonen Sie das zu übertragende Verzeichnis und verwenden Sie das geklonte als Übertragungsquelle.
  • Anwendungen anhalten, die in das Quellverzeichnis schreiben

Wenn es wichtig ist, während einer Übertragung vorgenommene Änderungen zu erfassen, können Sie die Übertragung noch einmal ausführen oder das Quelldateisystem während der Ausführung als schreibgeschützt festlegen.

Da Cloud Storage nicht das Konzept von Verzeichnissen hat, ist die Quelle leer werden nicht übertragen.