Gli agenti Storage Transfer Service sono applicazioni in esecuzione all'interno di un container Docker, che si coordinano con Storage Transfer Service per i trasferimenti relativi ai file system o compatibile con S3.
Se il trasferimento non prevede un file system o uno spazio di archiviazione compatibile con S3, senza dover configurare gli agenti.
Questo documento descrive come amministrare gli agenti di trasferimento su nei tuoi server.
Panoramica
I processi degli agenti sono dinamici. Mentre esegui un trasferimento, puoi aggiungere agli agenti per aumentare le prestazioni. Gli agenti appena avviati entrano a far parte del pool di agenti assegnato ed eseguono il lavoro da trasferimenti esistenti. Puoi usarlo per regolare quanti agenti sono in esecuzione, o di adattare le prestazioni dei trasferimenti all'evoluzione della domanda di trasferimento.
I processi degli agenti sono un collettivo a tolleranza di errore. Se l'esecuzione di un agente viene interrotta, mentre gli altri agenti continuano a lavorare. Se tutti i tuoi agenti si fermano, quando riavvii gli agenti, il trasferimento riprende dal punto in cui questi si sono arrestati. Questo consente di evitare gli agenti di monitoraggio, ritentare i trasferimenti o implementare dalla logica di ripristino. Puoi applicare patch, spostare e scalare dinamicamente i pool di agenti. senza tempi di inattività per il trasferimento coordinare gli agenti con Google Kubernetes Engine.
Ad esempio, invii due trasferimenti mentre sono in esecuzione due agenti. Se uno degli agenti si interrompe a causa del riavvio della macchina o di una patch del sistema operativo, mentre l'agente rimanente continua a funzionare. I due trasferimenti sono ancora in esecuzione, perché un singolo agente sta spostando i dati. Se anche l'agente rimanente si arresta, tutti i trasferimenti interrompono l'avanzamento, poiché non ci sono agenti in esecuzione. Quando riavvii i processi dell'agente, i trasferimenti riprenderanno dove l'avevano interrotto.
I processi dell'agente appartengono a un pool. Trasferisci collettivamente i tuoi dati parallelo. Per questo motivo, tutti gli agenti all'interno di un pool devono avere lo stesso e l'accesso a tutte le origini dati che vuoi trasferire.
Ad esempio, se trasferisci i dati da un determinato file system, devi montare il file system su ogni macchina che ospita agenti nel tuo pool di agenti. Se alcuni agenti nel tuo pool possono raggiungere un'origine dati e altri non è possibile, i trasferimenti da questa origine dati non andranno a buon fine.
Prima di iniziare
Prima di configurare i trasferimenti, assicurati di aver configurato l'accesso: per utenti e account di servizio.
Se usi i comandi gcloud
,
installa l'interfaccia a riga di comando gcloud.
Installa ed esegui agenti di trasferimento
Consigliamo di installare un minimo di tre agenti per pool di agenti, idealmente su e macchine separate. Per ulteriori informazioni su come determinare quanti agenti devono esegui, vedi Massimizzare le prestazioni dell'agente di trasferimento
Non includere informazioni sensibili come informazioni che consentono l'identificazione personale (PII) o dati di sicurezza nel prefisso dell'ID agente. I nomi delle risorse possono essere propagati ai nomi di altre risorse Google Cloud e potrebbero essere esposti a sistemi interni di Google al di fuori del tuo progetto.Per installare ed eseguire gli agenti di trasferimento:
Console Google Cloud
Nella console Google Cloud, vai alla pagina Pool di agenti.
Seleziona il pool di agenti a cui aggiungere il nuovo agente.
Fai clic su Installa agente.
Segui le istruzioni per installare ed eseguire l'agente.
Per ulteriori informazioni sulle opzioni della riga di comando dell'agente, vedi Opzioni a riga di comando dell'agente.
Interfaccia a riga di comando gcloud
Per installare uno o più agenti utilizzando gcloud CLI, esegui
gcloud transfer agents install
:
gcloud transfer agents install --pool=POOL_NAME --count=NUM_AGENTS \
--mount-directories=MOUNT_DIRECTORIES
Lo strumento ti guiderà attraverso tutti i passaggi necessari per installare gli agenti. Questo
installa NUM_AGENTS agente sulla tua macchina, mappato a
il nome del pool specificato come POOL_NAME e autentica il
utilizzando le tue credenziali gcloud
. Il nome del pool deve esistere oppure
.
Il flag --mount-directories
è facoltativo, ma vivamente consigliato. È
value è un elenco separato da virgole di directory sul file system in cui
per concedere l'accesso all'agente.
Se ometti questo flag, l'intero file system viene montato nel container dell'agente. Consulta
il
Riferimento gcloud
per ulteriori informazioni.
Origini compatibili con S3
Quando installi agenti da usare con un'origine compatibile con S3,
devi fornire le credenziali AWS come variabili di ambiente
valori di AWS_ACCESS_KEY_ID
e AWS_SECRET_ACCESS_KEY
o archiviati come
credenziali predefinite nei file di configurazione del tuo sistema.
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
Usa una chiave dell'account di servizio
Per eseguire gli agenti utilizzando
chiave dell'account di servizio, utilizza
l'opzione --creds-file
:
gcloud transfer agents install --pool=POOL_NAME --count=NUM_AGENTS \
--creds-file=/relative/path/to/service-account-key.json
Scopri di più
Per un elenco completo dei flag facoltativi, esegui
gcloud transfer agents install --help
o leggi le
Riferimento gcloud transfer
.
docker run
Prima di utilizzare docker run
per installare gli agenti, segui le istruzioni per
installare Docker.
Il comando docker run
installa un agente. aumentare il numero di agenti
nel tuo pool, esegui nuovamente questo comando tutte le volte necessarie.
Durante l'installazione degli agenti, puoi scegliere di eseguire l'autenticazione utilizzando gcloud
con credenziali predefinite o con un account di servizio.
Credenziali predefinite
Consenti al container Docker di eseguire l'autenticazione con l'impostazione predefinita di gcloud
credenziali, crea un volume Docker contenente un file con la tua applicazione
credenziali predefinite eseguendo questo comando:
sudo docker run -ti --name gcloud-config google/cloud-sdk gcloud auth application-default login
Quindi utilizza il comando seguente per installare un agente, utilizzando
Flag --volumes-from
per montare il volume di credenziali gcloud-config
:
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
Autorizzazione account di servizio
Per installare ed eseguire gli agenti di trasferimento docker run
utilizzando l'account di servizio
credenziali, specifica il percorso della chiave dell'account di servizio in formato JSON
utilizzando il flag --creds-file
.
Il percorso deve essere preceduto dal prefisso della stringa /transfer_root
.
Consulta Creare e gestire le chiavi degli account di servizio per ulteriori informazioni sulle chiavi degli account di servizio.
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
Opzioni e flag
Sostituisci le variabili degli esempi precedenti con le seguenti informazioni:
HOST_DIRECTORY
è la directory sulla macchina host da cui intendi effettuare la copia. Puoi utilizzare più di un flag-v
per specificare altre directory da cui eseguire la copia.CONTAINER_DIRECTORY
è la directory mappata all'interno dal container dell'agente. Deve essere uguale aHOST_DIRECTORY
.PROJECT_ID
è il ID progetto che ospita il trasferimento.POOL_NAME
è il nome del pool di agenti in cui installare questo agente. Se ometti questo flag, l'agente viene installato del pooltransfer_service_default
del progetto.
Il comando docker run
supporta flag aggiuntivi.
--enable-mount-directory
monta l'intero file system sotto la/transfer_root
sul container. Se--enable-mount-directory
le restrizioni della directory che utilizzano il flag-v
non vengono applicate.--creds-file=CREDENTIAL_FILE
specifica il percorso di un file di credenziali dell'account di servizio in formato JSON. A meno che non utilizzi--enable_mount_directory
, devi:- Monta il file delle credenziali utilizzando il flag
-v
. - Fai precedere il percorso a
--creds-file
con/transfer_root
.
Ad esempio:
-v /tmp/key.json:/tmp/key.json \ --creds-file=/transfer_root/tmp/key.json
- Monta il file delle credenziali utilizzando il flag
--enable-s3
specifica che questo agente è per i trasferimenti da Spazio di archiviazione compatibile con S3. Agenti installato con questa opzione non può essere usato per trasferimenti da file POSIX sistemi operativi.Se il trasferimento avviene da uno spazio di archiviazione compatibile con AWS S3 o S3, l'ID della chiave di accesso e la chiave segreta utilizzando le variabili di ambiente:
-e AWS_ACCESS_KEY_ID=AWS_ACCESS_KEY_ID \ -e AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY
--env HTTPS_PROXY=PROXY
specifica un proxy di inoltro sulla tua rete. Il valore diPROXY
è l'URL HTTP e la porta del server proxy. Assicurati di specificare l'URL HTTP e non un URL HTTPS, per evitare il doppio wrapping delle richieste nella crittografia TLS. Le richieste con doppio wrapping impediscono al server proxy di inviare messaggi validi richieste in uscita.--agent-id-prefix=ID_PREFIX
specifica un prefisso facoltativo anteposto all'ID agente per consentire a identificare l'agente o la relativa macchina nella console Google Cloud. Quando un prefisso è utilizzato, l'ID agente è formattato comeprefix + hostname + Docker container ID
.--log-dir=LOGS_DIRECTORY
modifica la directory in cui l'agente scrive i log. La directory predefinita è/tmp/
.Se non hai specificato
--enable_mount_directory
, devi anteponi/transfer_root
a questo percorso. Ad esempio:/transfer_root/logs
.--max-physical-mem=MAX_MEMORY
: il valore predefinito degli agenti è utilizzando un massimo di 8 GiB di memoria di sistema. Se l'impostazione predefinita non si adatta al tuo ambiente, puoi specificare una memoria massima nei seguenti formati:max-physical-mem
valoreImpostazione memoria massima 6g
6 gigabyte 6gb
6 gigabyte 6GiB
6 gibibyte
Conferma connessioni agente
Per verificare che i tuoi agenti siano connessi:
Nella console Google Cloud, vai alla pagina Pool di agenti.
Vengono visualizzati i pool di agenti insieme al numero di agenti connessi.
Seleziona un pool di agenti per visualizzare i dettagli degli agenti connessi.
Se un nuovo agente non viene visualizzato nella pagina del pool di agenti entro 10 minuti dal alla sua creazione, vedi Gli agenti non sono connessi.
Monitora l'attività dell'agente
Puoi utilizzare gli avvisi di Cloud Monitoring per monitorare l'attività dell'agente.
Il monitoraggio è disponibile nei seguenti paesi: project
, agent_pool
e agent_id
dimensioni.
Utilizzando questi dati di monitoraggio, puoi configurare avvisi per informarti di potenziali problemi con il trasferimento. Per farlo, crea un avviso in una delle seguenti metriche Google Cloud:
Nome metrica | Descrizione | Utilizzi suggeriti |
---|---|---|
storagetransfer.googleapis.com/agent/transferred_bytes_count | Misura la velocità con cui un agente specifico sposta i dati tra tutti i job che in un determinato momento. | Avviso in caso di cali nelle prestazioni. |
storagetransfer.googleapis.com/agent/connected | Un valore booleano che è True per ogni agente che Google Cloud ha ricevuto un messaggio heartbeat recente da. |
|
Interrompere un agente
Per arrestare un agente, esegui docker stop
sull'ID container Docker dell'agente. Per trovare
l'ID e interrompi l'agente:
Nella console Google Cloud, vai alla pagina Pool di agenti.
Seleziona il pool di agenti contenente l'agente da arrestare.
Seleziona un agente dall'elenco. Utilizza il campo Filtro per cercare per prefissi, stato e età dell'agente e altro ancora.
Fai clic su Interrompi agente. Il comando
docker stop
con il container specifico Viene visualizzato l'ID.Esegui il comando sulla macchina su cui è in esecuzione l'agente. Un successo Il comando
docker stop
restituisce l'ID container.
Una volta arrestato, l'agente viene visualizzato nell'elenco dei pool di agenti come Disconnesso.
Elimina un agente
Per eliminare agenti specifici, elenca quelli in esecuzione sulla tua macchina:
docker container list --all --filter ancestor=gcr.io/cloud-ingest/tsop-agent
Quindi passa gli ID agente a transfer agents delete
:
gcloud transfer agents delete --ids=id1,id2,…
Per eliminare tutti gli agenti in esecuzione sulla macchina, utilizza il flag --all
o il flag --uninstall
. Entrambi i flag eliminano tutti gli agenti sulla macchina;
Il flag --uninstall
disinstalla inoltre l'immagine Docker dell'agente.
gcloud transfer agents delete --all
gcloud transfer agents delete --uninstall
Dettagli trasferimento file system
Trasferimenti incrementali
Storage Transfer Service avvia tutti i trasferimenti calcolando i dati presenti all'origine e la destinazione per determinare quali file di origine sono nuovi, aggiornati o eliminati dall'ultimo trasferimento. Lo scopo è ridurre la quantità di dati inviati le tue macchine, per utilizzare la larghezza di banda in modo efficace e per ridurre i tempi di trasferimento.
Per rilevare se un file è stato modificato, controlliamo l'ultima modifica data e ora e le dimensioni del file di origine e confrontarle con l'ora dell'ultima modifica registrate al momento dell'ultima copia del file. Quando rileviamo un nuovo viene copiato l'intero file nella sua destinazione. Per ulteriori informazioni l'aggiornamento dei file, consulta Dettagli sulla coerenza dei dati.
Per impostazione predefinita, rileviamo i file eliminati nell'origine, ma non interveniamo. Se scegli l'opzione di sincronizzazione Elimina i file di destinazione che non sono presenti anche source quando viene creato o modificando, il trasferimento eliminerà dell'oggetto corrispondente nella destinazione.
Se scegli l'opzione di sincronizzazione Elimina i file di destinazione che non sono presenti anche origine, i file eliminati accidentalmente all'origine vengono eliminati anche la destinazione. Per evitare la perdita di dati a causa di eliminazioni accidentali, ti consigliamo l'abilitazione del controllo delle versioni degli oggetti nel tuo bucket di destinazione, se scegli di utilizzare questa opzione. Quindi, se elimini un file per errore puoi ripristinare una versione precedente degli oggetti in Cloud Storage.
Dettagli sulla coerenza dei dati
Un'operazione di trasferimento riuscita trasferirà tutti i file di origine esistenti non sono state modificate durante l'intero periodo di esecuzione dell'operazione. File sorgente che sono stati creati, aggiornati o eliminati durante un trasferimento potrebbero o meno avere questi le modifiche riflesse nel set di dati di destinazione.
Storage Transfer Service utilizza l'ora e le dimensioni dell'ultima modifica di un file per determinare se
è cambiato. Se un file viene aggiornato senza cambiare l'ora dell'ultima modifica o
e attivi l'opzione delete-objects-from-source
, potresti perdere dati
da quella modifica.
Quando utilizzi la funzionalità delete-objects-from-source
, ti consigliamo vivamente di
blocchi le scritture sull'origine per la durata del trasferimento, per proteggere
dalla perdita di dati.
Per bloccare le scritture sull'origine, procedi in uno dei seguenti modi:
- Clona la directory che intendi trasferire, quindi utilizza il file come origine del trasferimento.
- Interrompi le applicazioni che scrivono nella directory di origine.
Se è importante acquisire le modifiche apportate durante un trasferimento, puoi: eseguire nuovamente il trasferimento o impostare il file system di origine come di sola lettura mentre è in esecuzione l'operazione.
Poiché Cloud Storage non ha la nozione di directory, l'origine vuota vengono trasferite.