Installare Bridge per Linux per contenitori

Bridge per Linux offre scalabilità e funzionalità ottimizzate per la gestione dei carichi di lavoro basati su contenitori.Le seguenti istruzioni descrivono un approccio semplice per eseguire Bridge per Linux e presuppongono una conoscenza di base di Docker e dei termini chiave utilizzati nell’ecosistema.

Installare ed eseguire Bridge da un contenitore Docker

Per utilizzare Bridge in Linux, è necessario creare un’immagine Docker personalizzata, installare il pacchetto RPM e quindi eseguire Bridge dall’interno dell’immagine del contenitore.

Note per l’installazione:

Prerequisiti

Fase 1. Creare un’immagine del contenitore Bridge

Le fasi seguenti rappresentano le istruzioni principali per creare un’immagine di base Bridge su Linux.Per maggiori informazioni, consulta Panoramica di Docker (in inglese).

Quando Docker è installato, l’unico utente che dispone dell’autorizzazione per eseguire i comandi è root.Puoi eseguire i comandi Docker con sudo o da un utente membro del gruppo docker.

Importante Le immagini di base variano a seconda dei diversi driver e piattaforme.Gli esempi che seguono hanno lo scopo di illustrare il processo di creazione di un'immagine di base.È necessario adattare il processo di compilazione per l'ambiente specifico.

  1. Scarica il pacchetto .rpm di Bridge dalla pagina Download(Il collegamento viene aperto in una nuova finestra) sul sito Web di Tableau.
  2. (Facoltativo) Puoi modificare le impostazioni di configurazione per cambiare la modalità di esecuzione del client.Per maggiori informazioni, consulta Modificare le impostazioni del client Bridge.
  3. Crea una directory di lavoro e sposta il pacchetto .rpm nella directory.

    cd ~

    $ mkdir Docker

    $ cd Docker

    $ mv <RPM_location>.rpm .

  4. Crea un file Docker nella directory di lavoro.Ad esempio:

    $ touch Dockerfile

  5. Modifica il file Docker e aggiungi i comandi per eseguire yum update.

    Esempio per Red Hat

    Per Red Hat 8:

    FROM registry.access.redhat.com/ubi8/ubi:latest

    RUN yum -y update

  6. Modifica il file Docker, quindi immetti i comandi per copiare, installare e rimuovere il pacchetto RPM di Bridge dall’immagine:

    • Opzione 1: utilizza --mount, ad esempio:
      FROM registry.access.redhat.com/ubi8/ubi:latest
      RUN --mount=type=bind,source=<your_bridge_rpm>.rpm,target=/tmp/bridge.rpm \
       set -eux; \
       yum -y update; \
       ACCEPT_EULA=y yum install -y /tmp/bridge.rpm; \
       yum -y clean all; \
       rm -rf /var/cache/yum
    • Opzione 2: scarica direttamente il pacchetto rpm, ad esempio:
      FROM registry.access.redhat.com/ubi8/ubi:latest
      RUN set -eux; \
       yum -y update; \
       curl -fsSL https://repo.example.com/bridge.rpm -o /tmp/bridge.rpm; \
       ACCEPT_EULA=y yum install -y /tmp/bridge.rpm; \
       rm -f /tmp/bridge.rpm; \
       yum -y clean all; \
       rm -rf /var/cache/yum
  7. Crea una nuova immagine del contenitore utilizzando il comando di creazione docker.

    Ad esempio, il comando seguente crea un’immagine nella directory corrente, contrassegnandola con la parola ​"bridge_base".

    docker buildx build --platform=linux/amd64 -t bridge_base .

  8. Verifica che l’immagine di base creata sia visualizzata nell’elenco delle immagini:

    docker images | grep bridge

Fase 2. Installare i driver

Il client Bridge richiede driver per facilitare la connettività tra i dati della rete privata e Tableau Cloud.Per i driver, visita la pagina di download dei driver, seleziona l’origine dati, quindi seleziona Linux per il sistema operativo.

  1. L’installazione può essere eseguita in modo interattivo dopo l’avvio dell’immagine di base oppure è possibile scrivere Dockerfile separati da aggiungere all’immagine di base.

    Esempio

    Dopo aver copiato il pacchetto RPM del driver MySQL nella directory, puoi creare una directory di lavoro separata per aggiungere i driver MySQL utilizzando il seguente Dockerfile:

    # Using previously built bridge_base image

    FROM bridge_base

    COPY mysql-connector-odbc-8.0.26-1.el8.x86_64.rpm

    RUN yum install -y mysql-connector-odbc-8.0.26-1.el8.x86_64.rpm

    Nota: con i driver MySQL e Amazon Aurora MySQL è necessario configurare le impostazioni locali e installare i Language Pack nell’immagine:
    Esempio:
    RUN yum install -y glibc-langpack-en
    ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8

    Esempio

    Installa un driver JDBC Postgres.Questa operazione può essere eseguita anche in un Dockerfile separato.

    # Using previously built bridge_base image

    FROM bridge_base

    COPY postgresql-42.3.3.jar /opt/tableau/tableau_driver/jdbc/

    Esempio

    Installa il driver Amazon Redshift.

    # Using previously built bridge_base image

    FROM bridge_base

    yum install -y unixODBC

    yum --nogpgcheck localinstall -y

    AmazonRedshiftODBC-64-bit-2.1.7.0.x86_64.rpm

    odbcinst -i -d -f /opt/amazon/redshiftodbcx64/odbcinst.ini

  2. Crea una nuova immagine:
  3. docker image build -t bridge_final .

    L’immagine bridge_final utilizza l’immagine memorizzata nella cache della fase precedente e automatizza l’installazione del driver per tutte le istanze di Bridge.Se disponi di un repository di immagini, puoi pubblicare l’immagine nel repository e distribuirla a tutti i computer su cui desideri eseguire Bridge.

Fase 3. Installare i Language Pack e definire le impostazioni locali in Docker

  1. Installa i Language Pack nei contenitori Docker:

    RUN yum install -y glibc-langpack-en

  2. Specifica le impostazioni locali in Docker utilizzando ENV LC_ALL en_US.UTF-8.Puoi anche impostare le impostazioni locali aggiungendo quanto segue al file /etc/profile:

    export LANG="en_US.utf8"

    export LANGUAGE="en_US.utf8"

    export LC_ALL="en_US.utf8"

Nota: se l’host Bridge deve connettersi a una condivisione di rete remota per le estrazioni basate su file (Excel, CSV), consulta Configurare gli aggiornamenti delle estrazioni basate su file per i file condivisi (facoltativo).

Fase 4. Eseguire il contenitore Bridge

Ora che hai creato un’immagine di base, puoi distribuirla utilizzando diversi metodi.I passaggi fondamentali sono:

  1. Creare token
  2. Avviare l’istanza del contenitore Bridge.
  3. Assegnare l’agente a un pool.

Creare token

Prima di iniziare a distribuire il contenitore, crea un token di accesso personale o un token di accesso unificato(Il collegamento viene aperto in una nuova finestra).Un token di accesso personale o un token di accesso unificato è necessario per accedere all’agente.

Considerazioni e requisiti:

  • Tableau Cloud supporta 104 token di accesso personali per ogni utente.Si consiglia di utilizzare un token di accesso personale o un token di accesso unificato per client.

  • I seguenti nomi di token devono corrispondere: patTokenId o jwTokenFile (utilizzato durante l’esecuzione del comando run-bridge.sh), il nome del token nel file JSON e il nome del token che specifichi quando generi il token.

  • Se utilizzi un token di accesso unificato, devi includere gli ambiti OAuth richiesti: "tableau:remote_agents:*", "tableau: jobs:read", "tableau:file_uploads:*", "tableau:datasources:*"

Avviare l’istanza

Il metodo interattivo in questa procedura illustra le fasi necessarie per avviare il worker.Quando esci, l’esecuzione del contenitore viene interrotta.

  • Esegui questo comando per passare al prompt della shell per il contenitore come root:

    docker container run -it bridge_final /bin/bash

Il resto dei comandi viene eseguito nel contesto di questa sessione interattiva del contenitore.

  1. Aggiungi il token di accesso personale o il token di accesso unificato a un file flat in formato JSON.Ad esempio: /home/jSmith/Documents/MyTokenFile.txt
  2. Sintassi del token di esempio:

    {"MyToken" : "uLICC7e8SUS8ZNGe8RIFn4u==:lRihmYHI0XBKle7e8S4uSORXGqAkAl4"}

  3. Modifica le autorizzazioni del file per limitare l’accesso all’utente corrente.Ad esempio: chmod 600 MyTokenFile.txt
  4. Avvia un’istanza del contenitore Bridge mediante l’esecuzione del comando run-bridge.sh.Il processo varia a seconda del tipo di token che utilizzi:

    Esempio di comando con token di accesso personale

    /opt/tableau/tableau_bridge/bin/run-bridge.sh -e --patTokenId="Mytoken" --userEmail="admin@tableau.com" --client="myBridgeAgent" --site="mySite" --patTokenFile="/home/jSmith/Documents/MyTokenFile.txt" --poolId="1091bfe4-604d-402a-b41c-29ae4b85ec94"

    Esempio di comando con token di accesso unificato

    /opt/tableau/tableau_bridge/bin/run-bridge.sh -e --userEmail="admin@tableau.com" --client="myBridgeAgent" --site="mySite" --jwTokenFile="jwTokenFile.txt" --poolId="1091bfe4-604d-402a-b41c-29ae4b85ec94"
    Parametri di run-bridge.sh
    Parametri globali
    --client(Obbligatorio) Nome da assegnare al worker.
    --site(Obbligatorio) Nome del sito così come viene visualizzato nell’URI.Non includere il percorso URI.
    --userEmail(Obbligatorio) E-mail dell’utente associato al token.
    -e(Facoltativo) Per impostazione predefinita, il worker client Bridge viene eseguito come servizio in background.Per eseguire il worker in primo piano, includi l'argomento -e.
    --poolId(Facoltativo) ID del pool assegnato al client.Vedi Utilizzo di un ID del pool.

    Token di accesso personale: parametri obbligatori
    --patTokenIdID del token di accesso personale.Per maggiori informazioni, consulta Token di accesso personali.
    --patTokenFileNome e percorso del file di testo del token di accesso personale.

    Token di accesso unificato: parametro obbligatorio
    --jwTokenFileNome e percorso del file del token di accesso unificato.

Nota: se si installano versioni precedenti di Bridge per Linux, è necessario eseguire un comando diverso per avviare il worker.Per le versioni 2024.2 e precedenti, avviare il worker con TabBridgeClientWorker comando (non il comando run-bridge.sh.Tutte le opzioni dei comandi sono le stesse.

Agente avviato

Il messaggio seguente indica che l’agente è avviato. “Service started: ...”

Arrestare il worker

Utilizza Control-C per arrestare il worker.Invece di riavviare il worker, puoi avviare un nuovo worker per l’immagine del contenitore.

Assegnazione del pool predefinito

Se non hai assegnato un pool utilizzando l’opzione di comando --poolId, il client viene assegnato al pool predefinito.Se desideri utilizzare il client con domini o connessioni virtuali specifici, puoi assegnare il client a un pool denominato tramite l’interfaccia utente.Il menu corrispondente in Tableau Cloud è disponibile in Home > Impostazioni > Bridge.Per maggiori informazioni, consulta Configurare il pool di client Bridge.

Utilizzo di un ID del pool

Quando si avvia il worker Bridge con il comando run-bridge.sh, poolId è facoltativo.Tuttavia, il comportamento del client dipende dal fatto che sia registrato o meno in un sito e che sia assegnato a un pool.Tableau Bridge può connettersi o eseguire la registrazione a un solo sito Tableau Cloud in qualsiasi momento.Il client viene registrato su un sito quando si effettua la disconnessione e si accede nuovamente.

Se non viene fornito un ID del pool

  • Se il client Bridge è stato registrato, lo stato del client rimane invariato:
    • Se il client è assegnato a un pool, rimarrà assegnato al pool, indipendentemente dal fatto che si tratti di un pool denominato o di un pool predefinito.
    • Se il client non è assegnato a un pool, rimarrà non assegnato.
  • Se il client Bridge è nuovo (non hai mai effettuato l’accesso a Tableau Cloud), viene assegnato al pool predefinito.

Se viene fornito un ID del pool

  • Se viene fornito l’ID del pool ed è corretto, il client Bridge viene assegnato al pool denominato.
  • Se l’ID del pool fornito è errato:
    • Se il client Bridge non è registrato, viene assegnato al pool predefinito.
    • Se il client Bridge è registrato, lo stato del client rimane invariato, indipendentemente dal fatto che appartenga a un pool denominato, a un pool predefinito o sia non assegnato.

Trovare l’ID del pool

Per trovare l’ID del pool, passa alla pagina Impostazioni > Bridge e fai clic sul nome del pool.Ad esempio:

Aggiornamento del client Bridge per Linux

Rimanere aggiornati all’ultima versione di Bridge assicura di poter sfruttare le ultime funzioni e correzioni incluse in ogni nuova versione del client Bridge.

Non è possibile eseguire un upgrade sul posto per il contenitore.Devi invece creare una nuova immagine del contenitore con i file binari Bridge più recenti e quindi aggiungere il client Bridge al pool affiancato alla versione precedente.Dopo aver convalidato la funzionalità, rimuovi il client Bridge precedente. Segui questa procedura:

  1. Installa e configura il nuovo client Tableau Bridge come documentato nelle sezioni precedenti.

  2. Aggiungi il nuovo client Bridge al pool pertinente.Consulta Configurare i pool.

  3. Monitora lo stato di integrità dei processi Bridge per convalidarne la stabilità prima di procedere alla fase successiva.

  4. Rimuovi il/i client Bridge precedente/i dal pool.Apri il pool, identifica il computer client da rimuovere e fai clic su Elimina.

  5. Attendi il completamento del processo di timeout dell’aggiornamento dell’estrazione sul client Bridge.Il timeout predefinito è di 24 ore.Per maggiori informazioni, consulta dataSourceRefreshSettings.

  6. Una volta trascorso il periodo di timeout dell’aggiornamento, puoi rimuovere l’istanza precedente del client Bridge.

Configurare gli aggiornamenti delle estrazioni basate su file per i file condivisi (facoltativo)

Nota: completa queste fasi solo se il tuo contenitore Tableau Bridge per Linux deve aggiornare estrazioni da origini dati condivise basate su file (ad esempio file Excel o CSV in condivisioni di rete).

Questa configurazione gestisce sia origini dati pubblicate (PDS) sia origini dati incorporate (EDS).Mentre Tableau Cloud utilizza file mappa UNC per convertire i percorsi di rete (\\fileserver\share\data.xlsx) per PDS, i contenitori Linux devono avere al loro interno collegamenti simbolici di directory aggiuntivi per gestire gli aggiornamenti EDS, che raggiungono il file system del contenitore sotto forma di percorsi letterali (/fileserver/share/data.xlsx).

Fase 1. Montare la condivisione sul computer host

Monta la condivisione file remota in /mnt/remotes (directory padre consigliata da Tableau):

sudo mkdir -p /mnt/remotes/<share-leaf>
sudo mount -t cifs //<fileserver>/<share> /mnt/remotes/<share-leaf> \
-o <auth-options-appropriate-to-your-file-server>

Rendi persistente questo montaggio in /etc/fstab in modo che venga montato di nuovo automaticamente quando il sistema viene riavviato.Conferma l’accesso eseguendo ls/mnt/remotes/<share-leaf>.

Fase 2. Creare il file mappa UNC

Crea un file di mapping in /mnt/remotes/uncmap utilizzando barre delimitate dai due punti.Includi le voci sia per i nomi host completi sia per i nomi host senza dominio:

//<fileserver.example.com>/<share>:/mnt/remotes/<share-leaf>

//<fileserver>/<share>:/mnt/remotes/<share-leaf>

Fase 3. Avviare il contenitore Bridge

Esegui il contenitore utilizzando il bind mount e una variabile di ambiente:

docker run -d \
--mount type=bind,source=/mnt/remotes,target=/mnt/remotes \
-e TABLEAU_BRIDGE_UNC_MAP_OVERRIDE=/mnt/remotes/uncmap \
... <your other Bridge flags> ... \
<bridge-image>

Fase 4. Aggiungere collegamenti simbolici all’interno del contenitore

Aggiungi collegamenti simbolici per consentire la corretta risoluzione del percorso UNC letterale.Questa è necessaria per gli aggiornamenti di EDS in Linux.Estendi il Dockerfile di Bridge come segue:

FROM <tableau-bridge-image>:<version>

# Make the literal UNC path resolvable at the filesystem level.
# Add one symlink per case variant your workbooks embed
# (Linux is case-sensitive; Windows-authored workbooks may embed either).
RUN mkdir -p /<fileserver>/<share-parent> \
&& ln -sf /mnt/remotes/<share-leaf> /<fileserver>/<share-parent>/<share-leaf>
&& ln -sf /mnt/remotes/<share-leaf> /<fileserver>/<share-parent>/<Share-Leaf-CapCase>

Nota: se non è possibile ricreare l’immagine del contenitore, esegui i comandi mkdir e ln -sf all’interno del contenitore in esecuzione tramite docker exec dopo ogni container start.4.

Fase 5. Seguire i flussi di lavoro di pubblicazione richiesti in Tableau Desktop

Assicurati che le cartelle di lavoro e le origini dati soddisfino i seguenti prerequisiti di pubblicazione:

  • Uso di percorsi UNC: per connetterti ed eseguire la pubblicazione utilizza sempre un percorso UNC (ad esempio, \\<fileserver>\<share>\<file>.xlsx).Non utilizzare lettere di unità mappate (Z:\) o percorsi locali (C:\).

  • File esterni non selezionati: deseleziona la casella di controllo Includi file esterni in Tableau Desktop prima di eseguire la pubblicazione.

  • Assegnazione a un pool configurato: assegna il client Bridge a un pool di client configurato.Il pool predefinito non supporta gli aggiornamenti delle origini dati incorporate.Mappa il pool al dominio della condivisione file.

Risoluzione dei problemi degli aggiornamenti basati su file

Per risolvere i problemi relativi agli aggiornamenti basati su file consulta la tabella seguente:

SintomoCausa probabileControllo consigliato
La PDS ha esito positivo ma l’EDS genera l’errore NOT_FOUND dopo 0 msNon è possibile risolvere il percorso UNC letterale all’interno del file system del contenitore.Verifica la creazione dei collegamenti simbolici all’interno del contenitore (consulta Fase 4. Aggiungere collegamenti simbolici all’interno del contenitore).
L’EDS ha esito negativo e il client Bridge è nel pool predefinitoIl pool predefinito non supporta le EDSSposta il client in un pool configurato.

Sia la PDS sia l’EDS hanno esito negativo

Montaggio dell’host interrotto o file non leggibili dall’utente che esegue il montaggio

Esegui ls /mnt/remotes/<share-leaf> dall’host.

Risoluzione dei problemi

Installazione di versioni precedenti

Se si installano versioni precedenti di Bridge per Linux, è necessario eseguire un comando diverso per avviare il worker.Per le versioni 2024.2 e precedenti, avvia il worker con il comando TabBridgeClientWorker e non con il comando run-bridge.sh.

Tutte le opzioni del comando sono uguali a quelle documentate sopra in Fase 4. Eseguire il contenitore Bridge.

Ad esempio: 

/opt/tableau/tableau_bridge/bin/TabBridgeClientWorker -e --patTokenId="Mytoken" --userEmail="admin@tableau.com" --client="myBridgeAgent" --site="mySite" --patTokenFile="/home/jSmith/Documents/MyTokenFile.txt" --poolId="1091bfe4-604d-402a-b41c-29ae4b85ec94"

Errore di avvio del worker

In alcuni casi, dopo aver eseguito il comando run-bridge.sh verrà visualizzato il seguente errore:

Missing log in parameters. Aborting the attempt to start service worker.

Nella maggior parte dei casi, rieseguire il comando con le opzioni originali e l'opzione -e risolve il problema.L'opzione -e esegue il servizio worker Bridge in primo piano.

Se stai eseguendo il client Bridge in modalità background e viene visualizzato un errore di avvio, verifica che tutti i parametri di input includano i percorsi dei file richiesti.Ad esempio, in modalità background, il contesto utente non viene fornito per risolvere il percorso del file token.

Utilizzo dei file di log

I file di log sono archiviati nella cartella My_Tableau_Bridge_Repository/Logs dell’utente.Per salvare i log in una cartella tmp , esegui questo comando:

docker container run --volume /tmp/bridge_logs:/root/Documents/My_Tableau_Bridge_Repository/Logs -it bridge_final /bin/bash

In questo esempio, il percorso è specificato da /tmp/bridge_logs.L’utilizzo del comando Docker semplifica il salvataggio dei file di log ed evita di dover copiare manualmente i file di log di Bridge dal contenitore al file system locale.

Errore del driver MySQL

Se LC_MESSAGES non è impostato con impostazioni locali UTF-8, potresti riscontrare problemi di lettura e visualizzazione.Puoi modificare il file /etc/profile o riavviare il worker utilizzando il comando seguente:

LC_ALL=en_US.UTF-8 /opt/tableau/tableau_bridge/bin/run-bridge.sh -e

Il client Bridge si arresta in modo imprevisto a causa della scadenza del token di accesso personale

Quando un token di accesso personale (PAT) scade, il client Bridge si disconnette da Tableau Cloud e potrebbe causare l'arresto del contenitore.Dal client Bridge puoi verificare se il tuo PAT è scaduto eseguendo il comando Avvia in primo piano.Se il PAT non è abilitato, verrà visualizzato il seguente errore:

The client credentials are invalid. To complete the request, reset the credentials, and sign in to the Tableau Bridge client.

Se sei il proprietario originale del PAT, puoi anche verificare se il PAT è scaduto visitando Gestisci impostazioni account in Tableau Cloud.Per risolvere il problema, sarà necessario generare un nuovo PAT e seguire le fasi sopra indicate, Fase 4. Eseguire il contenitore Bridge.

Errori di timeout di estrazioni incorporate e connessioni live incorporate

Alla versione 24.3 di Bridge per Linux sono stati apportati miglioramenti significativi a livello di prestazioni degli estratti incorporati e delle connessioni live incorporate.Se si verificano errori di timeout nelle versioni precedenti, si consiglia di eseguire l'aggiornamento alla versione 24.3 di Bridge per Linux.Se il problema persiste, pubblica l'origine dati separatamente rispetto alla cartella di lavoro.

Grazie per il tuo feedback.Il tuo feedback è stato inviato. Grazie!