Gestione di Transfer per i job on-premise

Prima di iniziare un trasferimento, devi creare un job di trasferimento e far installare e connettere uno o più agenti al job. Questo documento descrive come creare il job di trasferimento, installare agenti di trasferimento e come gestire i job di trasferimento.

Prerequisiti

Per utilizzare Transfer for on-premise, devi disporre di:

Prima di avviare un trasferimento, verifica quanto segue:

  • Le porte TCP 80 (HTTP) e 443 (HTTPS) sono aperte per le connessioni in uscita.
  • Tutti i processi dell'agente all'interno di un singolo progetto Google Cloud hanno lo stesso filesystem montato nello stesso punto di montaggio.

Restrizioni di scalabilità su job e agenti

Il trasferimento per gli ambienti on-premise presenta le seguenti restrizioni in termini di scalabilità su job e agenti di trasferimento:

  • Meno di un miliardo di file per job
  • Massimo 100 agenti per progetto di trasferimento
  • Il limite di larghezza di banda deve essere superiore a 1 MBps

Crea un job di trasferimento

Prima di iniziare un trasferimento, devi creare un job di trasferimento. Il lavoro di trasferimento si coordina e controlla gli agenti on-premise durante lo spostamento dei dati.

Per creare un job di trasferimento:

Interfaccia a riga di comando gcloud

Innanzitutto, se non hai già un pool di agenti e degli agenti per questo trasferimento:

  1. Crea un pool di agenti:

    gcloud transfer agent-pools create my-agent-pool
    
  2. Installa agenti di trasferimento:

    gcloud transfer agents install --pool=my-agent-pool --count=3
    

    Consulta i requisiti e le best practice degli agenti per determinare il numero ottimale di agenti per il tuo ambiente.

    Per eseguire gli agenti utilizzando una chiave dell'account di servizio, utilizza l'opzione --creds-file:

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

    Per un elenco completo dei flag facoltativi, esegui gcloud transfer agents install --help.

Quindi, usa il comando gcloud transfer jobs create.

gcloud transfer jobs create \
SOURCE DESTINATION \
[--source-agent-pool=projects/$PROJECT_ID/agentPools/my-source-agent-pool] \
[--destination-agent-pool=projects/$PROJECT_ID/agentPools/my-destination-agent-pool] \
[--intermediate-storage-path=gs://INTERMEDIATE_BUCKET_NAME]

Dove:

  • SOURCE è uno di:

    • Un file system POSIX, nel formato posix:///path/to/folder. Deve essere un percorso assoluto dalla radice della macchina host dell'agente.
    • Un bucket Cloud Storage, nel formato gs://bucket-name.
    • Un bucket Amazon S3 o un container Storage di Microsoft Azure.
  • DESTINATION è uno di:

    • Un filesystem POSIX, nel formato posix:///path/to/folder. Deve essere un percorso assoluto dalla radice della macchina host dell'agente.
    • Un bucket Cloud Storage, nel formato gs://bucket-name.
  • --source-agent-pool specifica il pool di agenti di origine da utilizzare per questo trasferimento, se si esegue il trasferimento da un file system.

  • --destination-agent-pool specifica il pool di agenti di destinazione da utilizzare per questo trasferimento, se esegue il trasferimento a un file system.

  • --intermediate-storage-path specifica il percorso di una cartella in un bucket Cloud Storage (gs://example-bucket/example-folder) da utilizzare come archiviazione intermediaria durante il trasferimento tra due file system. Ti consigliamo di utilizzare una cartella vuota riservata a questo job di trasferimento per assicurarti che i dati trasferiti non interagiscano con i dati esistenti di Cloud Storage.

Altre opzioni sono:

  • Informazioni sul job: puoi specificare name e description.

  • Programmazione: specifica schedule-starts, schedule-repeats-every e schedule-repeats-until oppure do-not-run.

  • Opzioni di trasferimento: specifica se sovrascrivere i file di destinazione (--overwrite-when=different o always) e se eliminare determinati file durante o dopo il trasferimento (--delete-from=destination-if-unique o source-after-transfer); specificare i valori dei metadati da conservare (--preserve-metadata) e, se vuoi, impostare una classe di archiviazione sugli oggetti trasferiti (--custom-storage-class).

  • Notifiche: configura le notifiche Pub/Sub per i trasferimenti con notification-pubsub-topic, notification-event-types e notification-payload-format.

  • Logging: configura le azioni di trasferimento e gli stati delle azioni segnalati nei report generati per questo job.

Tieni presente che le condizioni degli oggetti (opzioni che iniziano con --include- o --exclude-) non sono supportate per i trasferimenti che interessano i file system POSIX.

Ad esempio, per creare un job di trasferimento per spostare i dati da un file system locale a un bucket Google Cloud Storage denominato my-unique-bucket, esegui:

gcloud transfer jobs create \
posix:///usr/local/my_dir gs://my-unique-bucket \
--source-agent-pool=projects/PROJECT_ID/agentPools/SOURCE_POOL`

Per visualizzare tutte le opzioni, esegui gcloud transfer jobs create --help.

Cloud Console

  1. Vai alla pagina Transfer Service for On Premises Data Console in Google Cloud Console.

    Vai alla pagina Trasferimento di dati on-premise

  2. Fai clic su Crea job di trasferimento.

    Viene visualizzata la pagina Crea un job di trasferimento.

  3. Seleziona un pool di agenti per il trasferimento. Per creare un nuovo pool di agenti:

    1. Fai clic su Crea pool di agenti.

      Viene visualizzato il modulo Crea un pool di agenti.

    2. Compila il modulo, quindi fai clic su Crea.

      Nella pagina Crea un job di trasferimento è evidenziato il nuovo pool di agenti. Selezionala per confermare.

  4. Specifica un'origine inserendo il percorso completo della directory del file system di origine.

  5. Specifica un bucket di destinazione Cloud Storage. Puoi inserire un nome bucket Cloud Storage o creare un nuovo bucket.

    Per creare e selezionare un nuovo bucket:

    1. Fai clic su Sfoglia.

    2. Fai clic su Nuovo bucket.

      Viene visualizzato il modulo Crea un bucket.

    3. Compila il modulo, quindi fai clic su Crea e poi su Seleziona.

  6. (Facoltativo) Per trasferire i file in una cartella anziché al bucket di primo livello, specifica il nome della cartella e il percorso completo per trovarla.

  7. Descrivi il job di trasferimento. Inserisci una breve descrizione del trasferimento che ti aiuterà a tracciarlo.

  8. (Facoltativo) Crea una pianificazione per il tuo lavoro.

  9. Fai clic su Crea.

API REST

Utilizza transferJobs.create con posixDataSource:

POST https://storagetransfer.googleapis.com/v1/transferJobs
{
  "name":"transferJobs/sample_transfer",
  "description": "My First Transfer",
  "status": "ENABLED",
  "projectId": "my_transfer_project_id",
  "schedule": {
      "scheduleStartDate": {
          "year": 2022,
          "month": 5,
          "day": 2
      },
      "startTimeOfDay": {
          "hours": 22,
          "minutes": 30,
          "seconds": 0,
          "nanos": 0
      }
      "scheduleEndDate": {
          "year": 2022,
          "month": 12,
          "day": 31
      },
      "repeatInterval": {
          "259200s"
      },
  },
  "transferSpec": {
      "posixDataSource": {
           "rootDirectory": "/bar/",

      },
      "gcsDataSink": {
           "bucketName": "destination_bucket"
           "path": "foo/bar/"
      },
   }
}

Il campo schedule è facoltativo; se non è incluso, il job di trasferimento deve essere avviato con una richiesta transferJobs.run.

Per controllare lo stato del tuo trasferimento dopo aver creato un job, utilizza transferJobs.get:

GET https://storagetransfer.googleapis.com/v1/transferJobs/sample_transfer?project_id=my_transfer_project_id

Se non lo hai già fatto, installa ed esegui agenti di trasferimento on-premise su ciascuna delle tue macchine.

Controlla l'utilizzo della larghezza di banda per Transfer Service for On Premises Data

I limiti di larghezza di banda sono utili se devi limitare la quantità di dati utilizzati da Transfer Service per i dati on-premise per trasferire i dati in Cloud Storage. L'utilizzo di un limite di larghezza di banda garantisce che:

  • I tuoi uplink di rete non sono saturi a causa dell'utilizzo di Transfer Service per i dati on-premise.

  • Il comportamento dell'applicazione esistente dell'organizzazione non diminuisce durante il trasferimento.

  • Se stai utilizzando una connessione di rete che si ricarica in base all'utilizzo massimo della larghezza di banda, non c'è un aumento improvviso dei prezzi.

I limiti di larghezza di banda vengono applicati a livello di pool di agenti e sono divisi per tutti gli agenti nel pool.

Impostare un limite di larghezza di banda

Per impostare un limite di larghezza di banda:

Interfaccia a riga di comando gcloud

Puoi impostare un limite di larghezza di banda su un pool di agenti al momento della creazione o in qualsiasi momento una volta che il pool di agenti esiste.

Per impostare un limite di larghezza di banda quando crei un pool di agenti, specifica il flag --bandwidth-limit:

gcloud transfer agent-pools create POOL_NAME --bandwidth-limit=BANDWIDTH_LIMIT

Per impostare un limite di larghezza di banda su un pool di agenti esistente, utilizza il comando gcloud transfer agent-pools update:

gcloud transfer agent-pools update POOL_NAME --bandwidth-limit=BANDWIDTH_LIMIT

Sostituisci POOL_NAME con il nome del pool da creare o aggiornare. Sostituisci BANDWIDTH_LIMIT con un valore che rappresenta la larghezza di banda massima in MB/s. Ad esempio, per impostare una larghezza di banda massima per tutti gli agenti nel pool di 50 MB al secondo, specifica --bandwidth-limit=50.

Cloud Console

  1. In Cloud Console, vai alla pagina Servizio di trasferimento per dati on-premise.

    Vai a Transfer Service for On Premises Data

  2. Fai clic su Impostazioni di connessione.

  3. Seleziona il pool di agenti da aggiornare.

  4. Fai clic su Imposta limite larghezza di banda.

  5. Inserisci il limite di rete desiderato in megabyte al secondo (MB/s) e fai clic su Set limit (Imposta limite).

    Il limite della larghezza di banda viene visualizzato per il progetto.

Modifica un limite di larghezza di banda

Interfaccia a riga di comando gcloud

Per modificare il limite della larghezza di banda del pool di agenti, utilizza il comando gcloud transfer agent-pools update:

gcloud transfer agent-pools update POOL_NAME --bandwidth-limit=BANDWIDTH_LIMIT

Sostituisci POOL_NAME con il nome del pool da aggiornare. Sostituisci BANDWIDTH_LIMIT con un valore che rappresenta la nuova larghezza di banda massima in MB/s. Ad esempio, per impostare una larghezza di banda massima per tutti gli agenti nel pool di 50 MB al secondo, specifica --bandwidth-limit=50.

Per rimuovere un limite, utilizza il flag --clear-bandwidth-limit:

gcloud transfer agent-pools update POOL_NAME --clear-bandwidth-limit

Cloud Console

Per modificare un limite di larghezza di banda esistente, fai clic su Modifica limite nella pagina Impostazioni di connessione.

Per rimuovere un limite, fai clic su Utilizza tutta la larghezza di banda.

Monitora job

Puoi monitorare il tuo servizio di trasferimento per i job dei dati on-premise per assicurarti che funzionino come previsto.

Per monitorare i job di trasferimento:

Interfaccia a riga di comando gcloud

Usa il comando transfer jobs monitor:

gcloud transfer jobs monitor JOB_NAME

Per restituire maggiori dettagli, utilizza "nome operazione" restituito da questo comando come input per il comando operations describe:

gcloud transfer operations describe OPERATION_NAME

Cloud Console

  1. Vai alla pagina relativa a Transfer Service for On Premises Data in Google Cloud Console.

    Vai alla pagina relativa a Transfer Service for On Premises Data

    Viene visualizzato un elenco di job. Questo elenco include i job sia in esecuzione che completati.

  2. Per visualizzare informazioni dettagliate su un job di trasferimento, fai clic sulla descrizione del job per il job che ti interessa.

    Viene visualizzata la pagina Dettagli job.

Nella pagina Dettagli job sono visualizzate le seguenti informazioni:

  • Quantità di dati trasferiti.

  • Informazioni di configurazione sul job di trasferimento.

  • Informazioni job pianificate o ricorrenti.

  • Dettagli dell'esecuzione più recente.

  • Cronologia di tutte le esecuzioni dei job passate.

API REST

Utilizza transferJobs.list per restituire un elenco di tutti i job di trasferimento.

Per ottenere ulteriori informazioni su un job di trasferimento specifico, utilizza transferJobs.get per restituire un oggetto TransferJob.

Per verificare lo stato di un trasferimento in corso, passa il valore TransferJob.latestOperationName a transferOperations.get.

Filtra job

Se hai molti lavori e vuoi monitorarne un sottoinsieme, valuta la possibilità di utilizzare i filtri per ordinare e visualizzare solo i lavori che ti interessano.

Per filtrare i job di trasferimento:

Interfaccia a riga di comando gcloud

Utilizza i flag --job-statuses e --job-names sul comando transfer jobs list per elencare i job con gli stati e/o i nomi specificati.

gcloud transfer jobs list --job-statuses=[JOB_STATUSES,…] --job-names=[JOB_NAMES,…]

I valori accettabili per JOB_STATUSES sono enabled, disabled e deleted. Separa gli stati con virgole.

Cloud Console

  1. Fai clic su Elenco filtri .

  2. Seleziona i filtri da applicare.

API REST

Per filtrare i job di trasferimento, fornisci il parametro di ricerca filter a transferJobs.list.

Modifica configurazioni job

Per modificare una configurazione del job:

Interfaccia a riga di comando gcloud

Per modificare un job esistente, utilizza il comando transfer jobs update:

gcloud transfer jobs update NAME

Per un elenco completo dei campi che possono essere aggiornati, consulta il riferimento transfer jobs update.

Cloud Console

  1. Vai alla pagina relativa a Transfer Service for On Premises Data in Google Cloud Console.

    Vai alla pagina relativa a Transfer Service for On Premises Data

  2. Fai clic su Descrizione del job per il job che stai modificando.

    Viene visualizzata la pagina Dettagli job.

  3. Fai clic su Configurazione.

  4. Fai clic sulla accanto all'elemento di configurazione che vuoi modificare.

API REST

Puoi aggiornare un job di trasferimento dopo averlo creato utilizzando transferJobs.patch.

Esegui nuovamente i job

Transfer Service for On Premises Data supporta l'esecuzione di un job completato ancora una volta. Questo può essere utile se hai alcuni dati aggiuntivi da spostare e vuoi riutilizzare una configurazione del job esistente.

Per eseguire di nuovo un job:

Interfaccia a riga di comando gcloud

Utilizza il comando transfer jobs run:

gcloud transfer jobs run NAME

Per eseguire il job e bloccare altre attività nel terminale, fino al completamento dell'operazione di trasferimento, includi il flag --no-async. Se non sono incluse, le attività vengono eseguite in modo asincrono.

gcloud transfer jobs run NAME --no-async

Cloud Console

  1. Vai alla pagina relativa a Transfer Service for On Premises Data in Google Cloud Console.

    Vai alla pagina relativa a Transfer Service for On Premises Data

  2. Fai clic su Descrizione del job per il job che stai modificando.

    Viene visualizzata la pagina Dettagli job.

  3. Fai clic di nuovo su Esegui.

    Il job inizia.

API REST

Puoi eseguire nuovamente un job di trasferimento utilizzando transferJobs.run e fornendo jobName.

Visualizza errori

Per visualizzare un esempio di errori riscontrati durante il trasferimento:

Interfaccia a riga di comando gcloud

Usa il comando transfer jobs monitor:

gcloud transfer jobs monitor JOB_NAME

Per restituire ulteriori dettagli, passa il comando "quot nome dell'operazione" restituito dal comando gcloud transfer jobs monitor JOB_NAME come input per il comando operations describe:

gcloud transfer operations describe OPERATION_NAME

Cloud Console

  1. Vai alla pagina relativa a Transfer Service for On Premises Data in Google Cloud Console.

    Vai alla pagina relativa a Transfer Service for On Premises Data

  2. Fai clic su Descrizione del job per il job che stai modificando.

    Viene visualizzata la pagina Dettagli job.

  3. Fai clic su Visualizza dettagli errore.

    Viene visualizzata la pagina Dettagli errore, che mostra un campione di errori riscontrati durante il trasferimento.

API REST

Puoi visualizzare il job di errore di trasferimento utilizzando transferOperations.get.

Visualizza log di trasferimento

Transfer Service per i dati on-premise produce log di trasferimento dettagliati che puoi utilizzare per verificare i risultati del tuo job di trasferimento. Ogni job produce una raccolta di log di trasferimento archiviati nel bucket Cloud Storage di destinazione.

I log vengono generati quando il job di trasferimento è in esecuzione. I log completi sono in genere disponibili entro 15 minuti dal completamento del job.

Puoi visualizzare i log in uno dei seguenti modi:

Visualizzare gli errori in Google Cloud Console

Per visualizzare tutti gli errori riscontrati durante il trasferimento all'interno di Google Cloud Console:

  1. Fai clic su Visualizza i log del trasferimento.

    Viene visualizzata la pagina Dettagli bucket. Questa è una destinazione nel tuo bucket Cloud Storage.

  2. Fai clic sul log di trasferimento che ti interessa.

    Vengono visualizzati i log di trasferimento. Per ulteriori informazioni, consulta Formato del log di trasferimento.

Visualizza i log nel bucket di destinazione

I log di trasferimento sono archiviati nel bucket di destinazione al seguente percorso:

destination-bucket-name/storage-transfer/logs/transferJobs/job-name/transferOperations/operation-name

dove:

  • destination-bucket-name è il nome del bucket Cloud Storage di destinazione del job.
  • job-name è il nome del job, così come viene visualizzato nell'elenco dei job.
  • operation-name è il nome dell'operazione di trasferimento singola, compreso come timestamp IS08601 e ID generato.

I log vengono aggregati e archiviati come oggetti. A ogni batch dei log viene assegnato il nome all'ora di creazione. Ad esempio:

my bucket/storage-transfer/logs/transferOperations/job1/2019-10-19T10_52_56.519081644-07_00.log

Vengono visualizzati i log di trasferimento. Per ulteriori informazioni, consulta Formato del log di trasferimento.

Eseguire query BigQuery sui log di trasferimento

Per eseguire le query BigQuery sui log di trasferimento:

  1. Carica i dati del log CSV in BigQuery.

  2. Esegui la query BigQuery.

Esempi di query

Numero di file che sono stati tentati il trasferimento e che si sono verificati senza errori

select ActionStatus, count(*) as num_files
from big-query-table
where Action="TRANSFER"
group by 1;

Dove big-query-table è il nome della tabella BigQuery che contiene il log di trasferimento.

Visualizza tutti i file che non sono stati trasferiti

select Src_File_Path
from big-query-table
where Action="TRANSFER" and ActionStatus="FAILED";

Dove big-query-table è il nome della tabella BigQuery che contiene il log di trasferimento.

Checksum e timestamp di visualizzazione per ogni file trasferito correttamente

select Timestamp, Action, ActionStatus, Src_File_Path, Src_File_Size,
Src_File_Crc32C, Dst_Gcs_BucketName, Dst_Gcs_ObjectName, Dst_Gcs_Size,
Dst_Gcs_Crc32C, Dst_Gcs_Md5
from big-query-table
where Action="TRANSFER" and ActionStatus="SUCCEEDED";

Dove big-query-table è il nome della tabella BigQuery che contiene il log di trasferimento.

Visualizza tutte le informazioni sugli errori per le directory che non è stato possibile trasferire

select FailureDetails_ErrorType, FailureDetails_GrpcCode, FailureDetails_Message
from big-query-table
where Action="FIND" and ActionStatus="FAILED";

Dove big-query-table è il nome della tabella BigQuery che contiene il log di trasferimento.

Passaggi successivi

Per informazioni sull'ottimizzazione della configurazione dell'agente, consulta i requisiti e le best practice degli agenti.