Tableau Server in un contenitore - Utilizzo di un’immagine

Introduzione

Tableau Server in un contenitore è la prima offerta server basata su contenitori di Tableau. Tableau Server in un contenitore è un’istanza completa di Tableau Server in esecuzione all’interno di un contenitore Docker di Linux. In altre parole, è un’immagine Docker che esegue un’intera applicazione Tableau Server autonoma. Tableau Server in un contenitore è il primo di molti passaggi per supportare Tableau Server in esecuzione negli ambienti basati su contenitori. Il modo più semplice per comprendere il concetto di Tableau Server in un contenitore consiste nel considerarlo come una macchina virtuale (VM) con Tableau Server preinstallato. L’immagine è basata su un’immagine UBI 8 (CentOS 7.x per la versione 2022.1 e precedenti) ed esegue supervisord (anziché systemd) all’interno del contenitore. All’avvio del contenitore, supervisord tenterà immediatamente di inizializzare e avviare Tableau Server. Gran parte della documentazione seguente ha lo scopo di descrivere come fornire la configurazione e sfruttare l’automazione in modo da eseguire Tableau Server negli ambienti Docker.

Lo strumento di configurazione dell’immagine per Tableau Server in un contenitore consente di personalizzare le immagini del contenitore in modo da includere pacchetti e artefatti personalizzati. Una delle funzionalità principali dello strumento è creare l’immagine del contenitore e installare connettori dati personalizzati.

Per testare rapidamente l’immagine di Tableau Server in un contenitore in scenari proof-of-concept, consulta Tableau Server in un contenitore - Avvio rapido.

Limitazioni per Tableau Server in un contenitore

  • Tableau Server in un contenitore supporta solo l’attivazione della licenza tramite il servizio ATR del server. L’attivazione offline tramite l’ATR del server è supportata nella versione 2023.1 e successive. Questa funzionalità è disponibile nei contenitori ma richiede operazioni e approvazioni aggiuntive. Se devi eseguire Tableau Server in un contenitore in un ambiente air gapped o offline, contatta il rappresentante del tuo account per ulteriori informazioni.
  • Tableau Server in un contenitore attualmente non supporta l’agente di Resource Monitoring Tool (RMT).
  • Kerberos non è supportato in Tableau Server in un contenitore.

Immagine di Tableau Server in un contenitore

L’immagine di Tableau Server in un contenitore è un’immagine Docker che contiene tutti i componenti di Tableau Server. L’immagine viene compilata utilizzando uno strumento di configurazione per Tableau Server in un contenitore. Una volta creata, l’immagine include Tableau Server ma non è ancora inizializzata. L’utente predefinito in un’immagine di Tableau Server in un contenitore è un utente non root senza privilegi.

Prerequisiti

Esegui lo script configure-container-host

Quando Tableau Server viene installato senza un contenitore, determinati limiti di risorse e proprietà di coredump vengono modificati come parte del processo di installazione. In questo modo è possibile ottimizzare le prestazioni di Tableau Server. Un’immagine di Tableau Server in un contenitore non ha la possibilità di apportare queste modifiche sul computer host, quindi è consigliabile eseguire lo script configure-container-host fornito nello strumento di configurazione per Tableau Server in un contenitore su qualsiasi computer che eseguirà le immagini di Tableau Server in un contenitore. Ciò contribuirà a garantire che le prestazioni di Tableau Server in un’immagine contenitore siano equivalenti a quelle della sua controparte non in un contenitore.

Per eseguire lo script configure-container-host:

  1. Individua lo script (configure-container-host) nella directory principale dello strumento di configurazione per Tableau Server in un contenitore.
  2. Copialo negli ambienti in cui prevedi di eseguire Tableau Server.

  3. Determina l’account utente/UID senza privilegi che verrà eseguito come utente predefinito di Tableau Server in un’immagine del contenitore. Questo utente deve essere presente nel computer host e deve corrispondere all’UID impostato nella variabile di ambiente UNPRIVILEGED_TABLEAU_UID del contenitore di Tableau Server. Se non l’hai impostato durante la creazione dell’immagine Docker, l’ID utente senza privilegi predefinito all’interno del contenitore è 999. Se stai utilizzando il mapping degli utenti Docker, questo UID dovrebbe corrispondere all’utente presente nel computer host.

  4. Esegui lo script come utente root:

    sudo ./configure-container-host -u <uid>

Esecuzione dell’immagine

Per eseguire un’immagine Docker di Tableau Server in un contenitore, il comando più semplice è il seguente:

docker run \
-e LICENSE_KEY=<key>
-p 8080:8080
-d <Tableau Server in a Container image ID or tag>

Verrà eseguito Docker in background e, dopo un certo tempo, sarà creata un’istanza completamente installata di Tableau Server. L’avvio completo di Tableau Server può richiedere da 10 a 20 minuti, a seconda dell’hardware del computer che esegue l’immagine. Puoi verificare che il contenitore sia in esecuzione digitando il comando docker ps. Una volta che Tableau Server è operativo, sarà necessario creare l’account amministratore iniziale di Tableau Server. Questo passaggio può essere automatizzato. Per maggiori informazioni, consulta Automatizzare l’amministratore iniziale di Tableau Server.

Riepilogo degli argomenti di esecuzione di base

Tutte le opzioni utilizzate nel comando Docker run sono necessarie. Spesso verranno fornite più opzioni per sfruttare diverse funzionalità nell’immagine. Per il momento, esaminiamo più da vicino solo gli argomenti utilizzati nel comando Docker run più semplice per Tableau Server in un contenitore:

ArgomentoDescrizione
-e LICENSE_KEY=<key>Tableau Server deve essere concesso in licenza. Questa variabile di ambiente memorizzerà il codice che verrà utilizzato per concedere in licenza il server. Si tratta di un componente obbligatorio del processo di inizializzazione. Puoi specificare più licenze separandole con delle virgole.
-p 8080:8080Questo comando indica a Docker di esporre la porta 8080 all’interno del contenitore e associarla alla porta 8080 nel computer host. Il primo valore 8080 è configurabile. Modificandolo, si modificherà la porta mappata sull’host. Tableau Server per impostazione predefinita prevede di ricevere il traffico utente sulla porta 8080 all’interno del contenitore. Puoi scegliere se esporre questa porta su una porta diversa dell’host o non esporla affatto.

 

Automatizzare l’amministratore iniziale di Tableau Server

Quando Tableau Server viene avviato per la prima volta, è necessario creare un utente amministratore iniziale prima che siano consentite connessioni di rete remote a Tableau Server. Questa operazione può essere effettuata eseguendo il comando tabcmd initialuser -s localhost:8080 -u <username> -p <password> all’interno del contenitore. Puoi anche impostare le credenziali di amministratore tramite le variabili di ambiente. TABLEAU_USERNAME e TABLEAU_PASSWORD o TABLEAU_PASSWORD_FILE (preferibile) sono le variabili di ambiente che possono essere impostate per passare le credenziali dell’amministratore iniziale. Per maggiori informazioni sulla gestione delle password, consulta Gestione delle password.

Per maggiori informazioni sul comando tabcmd initialuser, consulta initialuser.

Esempio

docker run \
-e LICENSE_KEY=<key> \
-e TABLEAU_USERNAME=<myadmin> \
-e TABLEAU_PASSWORD_FILE=/etc/tableau-admin-secret \
-v <full-path-to-pw-file>:/etc/tableau-admin-secret \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

Gestione licenze

Gestione delle licenze nei contenitori

Per la gestione delle licenze di Tableau Server in un contenitore viene utilizzato il servizio ATR (Authorization-To-Run) del server, in modo da attivare Tableau Server distribuito in ambienti cloud, con contenitori o virtuali senza esaurire le attivazioni delle licenze. A tale scopo, il servizio ATR fornisce lease a breve termine di durata configurabile (durata ATR) fino al raggiungimento della data di scadenza del codice prodotto. ATR ricava le licenze di Tableau dalle modifiche hardware sottostanti, cosa che rappresenta un aspetto fondamentale delle distribuzioni con contenitori. Poiché l’ATR del server richiede che il contenitore sia in grado di raggiungere il servizio ATR ospitato da Tableau, i contenitori richiedono l’accesso a Internet. Tableau Server in un contenitore non supporta l’attivazione offline o manuale. Per maggiori dettagli, consulta Attivare Tableau Server utilizzando il servizio ATR (Authorization-To-Run).

Importante: devi fornire la variabile di ambiente LICENSE_KEY o LICENSE_KEY_FILE (impostane una sola).

Durante l’upgrade di Tableau Server in un contenitore, se hai utilizzato il numero massimo di attivazioni per la tua licenza, Tableau Server non potrà essere avviato fino alla scadenza della durata ATR (per impostazione predefinita, 4 ore/14.400 secondi). Per maggiori informazioni sull’impostazione o la modifica della durata ATR, consulta Attivare Tableau Server utilizzando il servizio ATR (Authorization-To-Run)(Il collegamento viene aperto in una nuova finestra).

Variabile di ambiente per la licenza

Tableau Server in un contenitore supporta l’impostazione dei codici di licenza tramite una variabile di ambiente: LICENSE_KEY può contenere uno o più codici (-e LICENSE_KEY="<codice1> , <codice2>") tramite un elenco separato da virgole.

Esempio

docker run \
-e LICENSE_KEY="<key1>, <key2>" \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

File di licenza

Tableau Server in un contenitore supporta anche l’impostazione dei codici di licenza tramite un file. Monta un file nel percorso predefinito del file del codice di licenza nel contenitore (/docker/config/license_file) o come altrimenti specificato dalla variabile di ambiente LICENSE_KEY_FILE.

Esempio

docker run \
-v <full-path-to-license-file>:/docker/config/license_file \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

Tempo di lease per la licenza richiesta

Puoi specificare il tempo di lease della licenza ATR in un contenitore Tableau Server impostando la variabile di ambiente REQUESTED_LEASE_TIME. È necessario specificare il tempo di lease in secondi, con una durata minima di 3600 secondi (o 1 ora). È consigliabile ridurre il tempo di lease durante la sperimentazione e il test di Tableau Server per ridurre la probabilità di raggiungere il limite massimo di lease attivato. Per le distribuzioni di produzione, è consigliabile non impostare il parametro REQUESTED_LEASE_TIME (utilizzando quindi il valore predefinito), in modo che Tableau possa determinare il tempo di lease ideale.

Esempio

docker run \
...
-e REQUESTED_LEASE_TIME=<time-in-seconds> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

Esecuzione di un’immagine non inizializzata

Tableau Server prevede due fasi di installazione. In primo luogo, vengono installati i servizi di Tableau Services Manager (TSM). In un’installazione locale tipica, questo passaggio consente agli amministratori del server di registrare il server, attivare le licenze e configurare il server nel modo desiderato. La seconda fase dell’installazione consiste nell’impostazione e nell’avvio dei processi di Tableau Server che gestiranno il traffico degli utenti finali e la logica di business correlata.

Il comportamento predefinito delle immagini di Tableau Server in un contenitore consiste nell’automatizzare tutti i passaggi di installazione, in modo che il comando docker run consenta la creazione di un server completamente funzionante. Se tuttavia si desidera avviare un’immagine di Tableau Server in un contenitore e utilizzarla solo per eseguire i servizi di TSM (ciò che un amministratore del server si aspetterebbe eseguendo initialize-tsm), è possibile farlo passando il flag TSM_ONLY come variabile di ambiente.

Ad esempio:

docker run \
-e TSM_ONLY=1 \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

Interazione con l’immagine

Quando disponi di un’immagine di Tableau Server in un contenitore in esecuzione, puoi chiamare direttamente i comandi di TSM e tabcmd. Questi strumenti vengono aggiunti direttamente al percorso dell’ambiente dell’utente pid 1 (che è root in questo momento). Ciò significa che puoi chiamare i comandi di TSM e tabcmd in questo modo:

docker exec -it <container> tsm status -v
docker exec -it <container> tabcmd initialuser -s localhost -u <admin> -p <secret>

È anche possibile aprire una shell nel contenitore per eseguire operazioni più generali. Questa operazione è in genere sconsigliata, tranne che a scopo di debug:

docker exec -it <container> bash

Interfaccia utente Web e interfaccia della riga di comando remota di TSM

Per impostazione predefinita, l’interfaccia utente Web e l’interfaccia della riga di comando remota di TSM non sono accessibili. Ciò è dovuto al fatto che sono necessari un nome utente e una password per l’autenticazione, ma per impostazione predefinita non viene fornita una password all’utente che esegue i processi di Tableau Server nel contenitore. Questo avviene per motivi di sicurezza: non è consigliabile distribuire immagini che contengono una password predefinita, in quanto ciò consentirebbe l’accesso remoto. In alcuni casi, l’interfaccia utente Web di TSM e l’esecuzione di chiamate di accesso remoto tramite la CLI di TSM possono essere utili. Se desideri utilizzare queste funzionalità, dovrai attenerti ai passaggi descritti di seguito per creare un account utente di accesso remoto.

Per informazioni più dettagliate sull’interfaccia utente Web e sull’interfaccia della riga di comando di TSM, consulta Accedere all’interfaccia utente Web di Tableau Services Manager.

Creare un utente remoto di TSM

Specifica le variabili di ambiente TSM_REMOTE_UID e TSM_REMOTE_USERNAME durante la compilazione dell’immagine di Tableau Server in un contenitore tramite lo strumento di configurazione. La creazione di un account abilitato per TSM nell’immagine richiede un accesso con privilegi elevati nell’immagine, che non è disponibile in fase di esecuzione. Pertanto, può essere eseguita solo quando l’immagine Docker viene creata dallo strumento di configurazione per Tableau Server in un contenitore (build-image).

Esempio di file environment per lo strumento di configurazione di Tableau Server in un contenitore:

TSM_REMOTE_UID=1010
TSM_REMOTE_USERNAME=myuser

Impostare la password per l’utente remoto di TSM

L’immagine di Tableau Server in un contenitore richiede una password per l’account durante l’esecuzione dell’immagine. Esistono due modi per impostare la password per questo account.

File di segreti (consigliato)

Crea un file denominato remote-user-secret, scrivi la password nel file e montalo nel contenitore in fase di esecuzione. TSM_REMOTE_PASSWORD_FILE determina il percorso previsto (il percorso predefinito è /docker/config/remote-user-secret) del file di segreti nel contenitore.

Esempio di file di segreti per l’utente remoto:

mypassword

Esempio di comando Docker run:

docker run \
-e LICENSE_KEY=<key>
-v {absolute-path}/remote-user-secret:/docker/config/remote-user-secret
-p 8080:8080 \
-p 8850:8850 \
-d <Tableau Server in a Container image ID or tag>
Variabile di ambiente

Puoi anche semplicemente impostare la variabile di ambiente TSM_REMOTE_PASSWORD all’avvio dell’immagine Docker.

Esempio di comando Docker run:

docker run \
-e LICENSE_KEY=<key>
-e TSM_REMOTE_PASSWORD=<password>
-p 8080:8080 \
-p 8850:8850 \
-d <Tableau Server in a Container image ID or tag>

Note sulla sicurezza

  • La porta 8850 deve essere esposta per ricevere il traffico della richiesta TSM.
  • Se la password non è impostata correttamente nell’immagine, in fase di esecuzione il contenitore verrà chiuso immediatamente.
  • TSM si basa sul sistema di account utente Linux dell’immagine. In questo caso, si tratta di un account con restrizioni all’interno dell’immagine. Ciò significa che l’account avrà una shell con restrizioni ed è limitato all’esecuzione di due comandi: /bin/true e passwd.

Come ruotare la password dell’utente remoto di TSM

Se desideri ruotare la password dell’account dell’utente remoto di TSM, puoi farlo utilizzando una di queste opzioni:

Avvia un nuovo Tableau Server in un contenitore

La password dell’account viene impostata a ogni avvio del contenitore. Se stai rendendo persistenti i dati di Tableau all’esterno del contenitore, l’avvio di una nuova immagine con una nuova password comporterà la rotazione della password.

  1. Arresta e rimuovi l’immagine in esecuzione
  2. Imposta un nuovo valore per la password nelle variabili di ambiente TSM_REMOTE_PASSWORD o TSM_REMOTE_PASSWORD_FILE (vedi sopra) nella configurazione dell’immagine.
  3. Avvia nuovamente l’immagine.
Ruota manualmente la password all’interno di un contenitore in esecuzione

Se non vuoi chiudere l’immagine, puoi comunque ruotare la password manualmente.

  1. Apri una shell nel contenitore in esecuzione
  2. Accedi come account utente remoto utilizzando il comando su
  3. Esegui il comando passwd per cambiare la password.

    Avviso: queste rotazioni manuali persistono solo finché rimane il livello di scrittura dell’istanza del contenitore. Se elimini il contenitore, le modifiche manuali non verranno applicate all’avvio di un nuovo contenitore.

 

Opzioni di configurazione iniziali

La configurazione di Tableau Server in un contenitore è essenziale per ottenere il comportamento di Tableau Server desiderato. Tableau Server in un contenitore è un’installazione pulita di Tableau Server, quindi devi fornire al contenitore le stesse informazioni di quando configuri Tableau Server all’esterno di un contenitore.

Variabili di ambiente in fase di esecuzione

Le variabili di ambiente in fase di esecuzione riportate di seguito indicano a un’immagine di Tableau Server in un contenitore come distribuire Tableau Server. Un sottoinsieme di queste variabili di ambiente sarà descritto in modo più dettagliato.

Tutti questi valori possono essere sostituiti, in modo da consentire una maggiore flessibilità per la configurazione.

Nome dell’ambienteImpostazione predefinitaDescrizione
ACCEPTEULA0Impostato automaticamente su 1 quando un’immagine viene compilata tramite lo strumento di configurazione per Tableau Server in un contenitore.
LICENSE_KEY Impostato sul codice di licenza che verrà utilizzato per concedere in licenza il server. Accetta più licenze separate da virgole.
LICENSE_KEY_FILE/docker/config/license_file Percorso del file di licenza. Il formato del file di licenza prevede un codice di licenza per ogni riga.
REGISTRATION_FILE/docker/config/tableau_reg.jsonPercorso del file di registrazione all’interno dell’immagine. Per impostazione predefinita, contiene le informazioni di registrazione fornite al momento della compilazione dell’immagine di Tableau Server in un contenitore. Può essere sovrascritto in fase di esecuzione. Per maggiori informazioni, consulta Attivare e registrare Tableau Server.
REGISTRATION_DATA Un modo alternativo per sovrascrivere le informazioni di registrazione in fase di esecuzione. Questa variabile di ambiente deve essere impostata su una stringa JSON serializzata contenente le stesse informazioni di registrazione disponibili in un file di registrazione di Tableau Server. Per maggiori informazioni, consulta Attivare e registrare Tableau Server.
TABLEAU_USERNAME Si riferisce all’account amministratore iniziale in Tableau Server. È consigliato, ma facoltativo. Se questo utente non è impostato, l’account amministratore iniziale per Tableau Server dovrà essere impostato utilizzando tabcmd. Se questa variabile è impostata su un valore, è necessaria anche una password. Viene utilizzato solo quando Tableau Server viene inizializzato per la prima volta. L’impostazione di questo valore indicherà a Tableau Server in un contenitore di tentare automaticamente di inizializzare l’utente. Per maggiori informazioni, consulta Aggiungere un account Amministratore.
TABLEAU_PASSWORD Password in testo normale per l’utente di Tableau. Si riferisce all’account amministratore iniziale in Tableau Server. È obbligatorio se è specificato TABLEAU_USERNAME. Per maggiori informazioni, consulta Aggiungere un account Amministratore.
TABLEAU_PASSWORD_FILE Percorso di un file contenente solo il testo della password per l’utente di Tableau. Si riferisce all’account amministratore iniziale in Tableau Server. È obbligatorio se è specificato TABLEAU_USERNAME. Per maggiori informazioni, consulta Aggiungere un account Amministratore.
CONFIG_FILE/docker/config/config.json

Percorso del file di configurazione predefinito di TSM. Il file verrà utilizzato per configurare Tableau Server. Per maggiori informazioni, consulta Esempio di file di configurazione.

Non impostare CONFIG_DATA se viene utilizzato CONFIG_FILE

CONFIG_DATA Può essere utilizzato come sostituto di CONFIG_FILE. Se vuoi fornire la configurazione al server senza montare un file esterno, imposta questa variabile di ambiente sui contenuti serializzati equivalenti di un file di configurazione TSM.

Esempio CONFIG_DATA="{\"configEntities\":{\"identityStore\":{\"_type\":\"identityStoreType\",\"type\":\"local\"}}}" Per maggiori informazioni, consulta Esempio di file di configurazione

Non impostare CONFIG_FILE se viene utilizzato CONFIG_DATA

IGNORE_TOPOLOGY_CONFIG00 o 1. Se impostato su 1, il contenitore ignorerà qualsiasi configurazione correlata alla topologia presente nel file di configurazione designato da CONFIG_FILE.
BACKUP_FILE/docker/config/backup/backup-file.tsbakPercorso di un file di backup di Tableau Server (con estensione .tsbak). Se specificato durante l’inizializzazione, il server tenterà un ripristino.
INIT_CONTAINER00 o 1. Se impostato su 1, verrà eseguito solo un tentativo di inizializzare TSM e Tableau Server. Al termine, il contenitore verrà chiuso.
TSM_ONLY00 o 1. Equivalente all’installazione del pacchetto rpm di Tableau Server e all’esecuzione di initialize-tsm. Verranno avviati solo i servizi di TSM (Tableau Services Manager). Funziona SOLO se il contenitore viene inizializzato per la prima volta (non funzionerà se Tableau Server in un contenitore viene avviato con una directory di un server inizializzato in precedenza).
BOOTSTRAP_INSTALL00 o 1. Indica se il server è un nodo iniziale o un nodo aggiuntivo. Se impostato su 1, il contenitore attende indefinitamente finché non è presente un file di bootstrap nel percorso specificato da $BOOTSTRAP_FILE
ALWAYS_WRITE_BOOTSTRAP_FILE0 0 o 1. Se impostato su 1, il contenitore scriverà un file di bootstrap nel percorso specificato in BOOTSTRAP_FILE.
WAIT_FOR_BOOTSTRAP_FILE10 o 1. Se impostato su 1 (impostazione predefinita), se il contenitore ha rilevato che si tratta di un’installazione Worker (BOOTSTRAP_INSTALL=1), il contenitore attenderà indefinitamente finché non viene rilevato un file nel percorso impostato in BOOTSTRAP_FILE. Se impostato su 0 quando viene eseguito il processo di avvio, questa attesa verrà ignorata. Può essere utile in alcuni casi di debug.
BOOTSTRAP_FILE/docker/config/bootstrap/bootstrap.jsonPercorso del file di bootstrap. Si applica solo ai contenitori Worker. Questo file deve puntare solo a un file di bootstrap. L’utilizzo tipico è il montaggio della directory del file di destinazione (il valore predefinito è /docker/config/bootstrap) nell’host.
BOOTSTRAP_DATAPuò essere utilizzato come sostituto di BOOTSTRAP_FILE. Se vuoi fornire un file bootstrap senza montare un file esterno, imposta questa variabile di ambiente sui contenuti serializzati equivalenti di un file bootstrap TSM. Non impostare BOOTSTRAP_DATA se utilizzi BOOTSTRAP_FILE.
PORT_RANGE_MIN8800 Per motivi di prestazioni, è consigliabile esporre solo 200 porte (8800-9000) anziché l’intervallo di porte 8000-9000 predefinito di Tableau Server in locale, perché l’esposizione di 1000 porte in Docker può influire negativamente sul tempo di avvio dell’immagine Docker. Per maggiori informazioni, consulta Esposizione delle porte per la gestione delle licenze e TSM di seguito.
PORT_RANGE_MAX9000È consigliabile esporre solo 200 porte (8800-9000) anziché l’intervallo di porte 8000-9000 predefinito di Tableau Server in locale, perché l’esposizione di 1000 porte in Docker può influire negativamente sul tempo di avvio dell’immagine Docker. Per maggiori informazioni, consulta Esposizione delle porte per la gestione delle licenze e TSM di seguito.
HTTP_PROXY Per inoltrare le richieste http al server proxy, imposta questa variabile di ambiente in modo che punti all’host proxy. Ad esempio, per impostare il proxy su example-host per la porta 8080, HTTP_PROXY=http://example-host:8080/
HTTPS_PROXY Per inoltrare le richieste https al server proxy, imposta questa variabile di ambiente in modo che punti all’host proxy. Ad esempio, per impostare il proxy su example-host per la porta 443, HTTPS_PROXY=http://example-host:443/ Assicurati di usare "http" quando specifichi l’URL per la variabile di ambiente HTTPS_PROXY.
NO_PROXY Per ignorare il server proxy, specifica le eccezioni nella variabile no_proxy. Utilizza questa variabile se il server proxy non instrada gli indirizzi interni. Devi inoltre aggiungere eccezioni a questa configurazione proxy per garantire che tutte le comunicazioni all’interno di un cluster locale di Tableau Server (se ne è presente uno ora o lo sarà in seguito) non vengano indirizzate al server proxy. Immetti sia il nome host che l’indirizzo IP per ogni computer e aggiungi il nome host del contenitore. Inoltre, includi il nome host canonico (localhost) e l’indirizzo IP (127.0.0.1) per il computer locale. Ad esempio, per specificare le eccezioni per un cluster con tre nodi: NO_PROXY="localhost,127.0.0.1,hostname1,hostname2,hostname3,IP1,IP2,IP3"
COORDINATION_SERVICE_CLIENT_PORTQualsiasi porta compresa tra PORT_RANGE_MIN e PORT_RANGE_MAX Porta client per il servizio di coordinamento.
COORDINATION_SERVICE_PEER_PORTQualsiasi porta compresa tra PORT_RANGE_MIN e PORT_RANGE_MAX Porta peer per il servizio di coordinamento.
COORDINATION_SERVICE_LEADER_PORTQualsiasi porta compresa tra PORT_RANGE_MIN e PORT_RANGE_MAX Porta leader per il servizio di coordinamento.
LICENSE_SERVICE_VENDOR_DAEMON_PORTQualsiasi porta compresa tra PORT_RANGE_MIN e PORT_RANGE_MAX Porta del daemon del fornitore per il servizio di gestione delle licenze.
AGENT_FILE_TRANSFER_PORTQualsiasi porta compresa tra PORT_RANGE_MIN e PORT_RANGE_MAX Porta di trasferimento file per il servizio agente.
CONTROLLER_PORTQualsiasi porta compresa tra PORT_RANGE_MIN e PORT_RANGE_MAX Porta https per il servizio controller.
REQUESTED_LEASE_TIMEL’impostazione predefinita è attualmente impostata su 4 ore.Imposta il tempo di lease richiesto per le attivazioni con l’ATR del server. È necessario fornire il valore del tempo in secondi e la durata minima è 14.400 secondi (o 4 ore). La modifica di questo valore non è generalmente consigliata per le distribuzioni di produzione. Tuttavia, durante attività di sviluppo o di creazione di prototipi con Tableau Server in un contenitore, potrebbe essere utile impostare questo valore sul valore minimo in modo da ridurre al minimo la perdita di attivazioni.

Variabili di ambiente di sola lettura

Di seguito sono riportate le proprietà dell’ambiente che descrivono alcune delle proprietà di base dell’immagine di Tableau Server in un contenitore. La sostituzione di questi valori non è consigliata.

Nome dell’ambienteImpostazione predefinitaDescrizione
PRE_INIT_COMMAND_SCRIPT${DOCKER_CONFIG}/customer-files/pre_init_commandPercorso di un file Bash/eseguibile personalizzato dall’utente da eseguire in Tableau Server prima dell’inizializzazione di Tableau Server. Nota: assicurati che il file disponga dell’autorizzazione di esecuzione per tutti gli utenti. In caso contrario, eseguichmod +rx <path-to-pre-init-command-file>
POST_INIT_COMMAND_SCRIPT${DOCKER_CONFIG}/customer-files/post_init_commandPercorso di un file Bash/eseguibile personalizzato dall’utente da eseguire in Tableau Server dopo che il server è completamente funzionante e in esecuzione. Nota: assicurati che il file disponga dell’autorizzazione di esecuzione per tutti gli utenti. In caso contrario, eseguichmod +rx <path-to-post-init-command-file>
DATA_DIR/var/opt/tableau/tableau_serverDirectory dei dati in cui devono essere scritti i bit di Tableau Server.
INSTALL_DIR/opt/tableau/tableau_serverDirectory di installazione in cui vengono scritti i bit di installazione di Tableau Server.
SERVICE_NAMETableau ServerNome dell’applicazione in esecuzione nel contenitore.
SERVICE_VERSIONNon applicabileVersione di Tableau Server installata nel contenitore.
DOCKER_CONFIG/dockerDirectory che contiene la configurazione Docker specifica di Tableau.
ENV_FILE${DOCKER_CONFIG}/customer-files/environmentFile che contiene tutte le sostituzioni dell’ambiente utente.

Variabili di ambiente in fase di compilazione

   
BASE_IMAGE_URLUtilizza il comando dello strumento di compilazione: build-image -bL’immagine predefinita specificata nello strumento build-image e Dockerfile è l’unica immagine di base ufficialmente supportata. Questo parametro può essere utilizzato per eseguire il pull di una copia di questa specifica immagine di base da un repository di immagini Docker personalizzato o definire un’immagine di base personalizzata. Se scegli di utilizzare un’immagine di base personalizzata, devi assicurarti che sia basata su UBI 8 (CentOS o RHEL 7 per la versione 2022.1 e precedenti) e che contenga le risorse necessarie per eseguire correttamente Tableau Server. Per maggiori informazioni sulle immagini di base personalizzate, consulta Tableau Server in un contenitore - Utilizzo di un’immagine.
PRIVILEGED_TABLEAU_GID997 GID del gruppo Tableau con privilegi.
UNPRIVILEGED_TABLEAU_GID998 GID del gruppo Tableau senza privilegi.
UNPRIVILEGED_TABLEAU_UID999 UID dell’utente che esegue i processi Tableau (distribuzione con un singolo utente).
UNPRIVILEGED_USERNAMEtableau Nome stringa dell’utente senza privilegi.
UNPRIVILEGED_GROUP_NAMEtableau Nome stringa del gruppo senza privilegi.
PRIVILEGED_GROUP_NAMEtsmadmin Nome stringa del gruppo con privilegi.
LANGen_US.UTF-8Impostazione per le impostazioni locali

 

Sostituzioni della configurazione di Tableau Server

Queste variabili di ambiente possono essere sovrascritte da Docker in modo da puntare a qualsiasi file nel contenitore. Di conseguenza, se vuoi specificare un punto di montaggio diverso, sei libero di farlo.

Tableau Server richiede un file di configurazione per l’avvio e l’esecuzione:

CONFIG_FILE=/docker/config/config.json

CONFIG_FILE fa riferimento a un file di configurazione TSM. Il formato e l’utilizzo sono identici a quelli del file di configurazione descritto in Esempio di file di configurazione.

Comandi pre-inizializzazione e post-inizializzazione

Tableau Server esegue uno script di installazione automatizzato progettato per portare il server da uno stato pre-inizializzato a uno completamente funzionante. Tuttavia, a volte potresti voler aggiungere codice di automazione personalizzato nel processo di inizializzazione. A tale scopo, sono disponibili due hook: lo script di pre-inizializzazione e lo script di post-inizializzazione.

Script di pre-inizializzazione

Questo script verrà eseguito subito dopo l’inizializzazione dei processi TSM di base e prima dell’esecuzione di qualsiasi altra operazione di configurazione di TSM. È utile per eseguire i comandi di configurazione di TSM prima dell’esecuzione di Tableau Server. Per le modifiche alla configurazione apportate in questa fase, non è necessario applicare le modifiche perché la normale automazione di Tableau Server esegue tale operazione dopo il completamento dello script.

Script di post-inizializzazione

Questo script verrà eseguito dopo il completamento di tutte le altre operazioni di inizializzazione e automazione dell’avvio di Tableau Server. Tableau Server sarà completamente funzionante e in esecuzione quando questo script verrà eseguito. Le modifiche alla configurazione apportate in questa fase devono essere applicate.

Istruzioni

Per aggiungere uno script personalizzato a uno di questi hook nell’immagine, procedi come segue:

  1. Scrivi il tuo script personalizzato
  2. Copia lo script personalizzato nella directory customer-files dello strumento build-image di Tableau Server in un contenitore.
  3. Rinomina lo script come pre_init_command o post_init_command, a seconda di quando desideri eseguire lo script (è possibile utilizzare entrambi gli hook in modo indipendente).
  4. Verifica che le autorizzazioni dello script siano eseguibili da altri (chmod +rx <command-file>) o che le autorizzazioni di proprietà corrispondano all’utente senza privilegi nel contenitore.

Configurazione utente

Tableau Server utilizza un utente senza privilegi per eseguire i processi server. Questo utente è stato creato all’interno del contenitore durante l’inizializzazione di Tableau Server in un contenitore. Per impostazione predefinita, l’utente è denominato tableau con 999 come UID. Se si distribuisce Tableau Server in un contenitore che utilizza montaggi per archiviare esternamente i dati nel computer host, è preferibile modificare l’UID in modo che corrisponda a un UID nel computer host. L’utilizzo degli spazi dei nomi utente di Docker è un altro modo per ottenere lo stesso risultato.

Utilità e strumenti per Tableau Server in un contenitore

Tutte le funzioni delle utilità e degli strumenti per Tableau Server in un contenitore sono disponibili in questa directory:

/docker/

Gestione delle autorizzazioni dei file

Quando si passano file di configurazione al contenitore, è necessario assicurarsi che l’utente che esegue il processo Tableau Server all’interno del contenitore disponga dell’autorizzazione per accedere ai file. Per evitare di concedere a tutti gli utenti l’accesso ai file montati nel contenitore, puoi modificare l’UID e/o il GID dell’utente che esegue Tableau Server all’interno del contenitore in modo che corrisponda al proprietario dell’utente/gruppo nell’host. L’utente del contenitore disporrà di un UID determinato dalla variabile di ambiente UNPRIVILEGED_TABLEAU_UID (impostazione predefinita: 999) e di un GID determinato da UNPRIVILEGED_TABLEAU_GID (impostazione predefinita: 998). Questi valori possono essere modificati eseguendo l’override della variabile di ambiente oppure puoi utilizzare un mapping del nome utente di Docker per associare l’UID/GID nel contenitore a un UID/GID diverso nell’host.

Gestione delle password

Alcune funzionalità e opzioni richiedono che le credenziali utente vengano fornite come impostazione di configurazione nel contenitore. Le credenziali dell’amministratore iniziale di Tableau sono un esempio di credenziali facoltative che abilitano funzionalità aggiuntive. In questi casi, sono sempre disponibili due metodi per l’impostazione della password. Innanzitutto, puoi fornire un file contenente la password e specificare un percorso di file in una variabile di ambiente. In alternativa, puoi impostare una variabile di ambiente per archiviare direttamente la password.

L’opzione consigliata e più sicura consiste nel fornire la password come percorso di file per il contenitore. Fornire un segreto in un file è un modello ben supportato in Docker, Docker Swarm, Kubernetes e altri sistemi di orchestrazione dei contenitori. L’archiviazione delle password direttamente nelle variabili di ambiente è un modello comune, pertanto è supportato, ma in genere rende la password meno sicura.

Esempi

Esaminiamo la credenziale TABLEAU_USERNAME. Puoi fornire la password per l’utente come TABLEAU_PASSWORD o TABLEAU_PASSWORD_FILE. Quando esegui un’immagine di Tableau Server in un contenitore, puoi fornire qualsiasi di queste variabili di ambiente per specificare la password.

La variabile di ambiente per il file delle password prevede un percorso di file all’interno del contenitore relativo a un file dei segreti valido. Il file dei segreti deve essere una singola riga contenente il segreto.

Esempio di utilizzo di un file dei segreti
docker run \
...
-e TABLEAU_USERNAME=admin \
-e TABLEAU_PASSWORD_FILE=/etc/admin-secret \
-v <full-path-to-pw-file>:/etc/admin-secret \
-d <Tableau Server in a Container image ID or tag>
Esempio di contenuto di un file dei segreti
mypassword23879172

In alternativa, è possibile memorizzare direttamente la password in testo normale nella variabile di ambiente della password. Questo approccio è considerato meno sicuro, ma è più pratico e rappresenta un modello comune con i contenitori.

Esempio
docker run \
...
-e TABLEAU_USERNAME=admin \
-e TABLEAU_PASSWORD=password \
-d <Tableau Server in a Container image ID or tag>

Configurazione di Tableau Server una volta che è in esecuzione

Una volta che Tableau Server è stato inizializzato ed è in esecuzione, il modo migliore per interagire con il server è utilizzare lo strumento CLI di TSM. Questo è il classico strumento di Tableau Server per l’esecuzione di attività amministrative. In futuro, Tableau Server reagirà ai cambiamenti nella configurazione statica fornita nella variabile di ambiente CONFIG_FILE tra le esecuzioni. Per ora, tuttavia, dopo l’inizializzazione di Tableau Server, devi interagire con il server utilizzando gli strumenti classici.

Per maggiori informazioni sulla riga di comando di TSM, consulta Riferimento della riga di comando tsm.

Stato

Sono disponibili due controlli di stato di base per Tableau Server, illustrati nell’immagine. Possono essere utilizzati per verificare l’attività e la preparazione del server.

Controllo dell’attività

Il controllo dell’attività indica se i servizi di TSM sono in esecuzione o meno. Specifica se i servizi orchestrati di Tableau Server sono operativi e funzionano. Questo controllo è richiamabile qui:

/docker/alive-check

Un’altra opzione consiste nell’esporre la porta 8850, utilizzata dal servizio Controller di Tableau per fornire funzioni amministrative tramite un Web browser. È possibile controllare periodicamente l’integrità del servizio verificandola tramite i controlli di integrità di tcp.

Controllo della preparazione

Il controllo della preparazione indica se Tableau Server è in esecuzione e i servizi aziendali sono pronti per ricevere traffico. Può essere determinato utilizzando il seguente script:

/docker/server-ready-check

Un’altra opzione consiste nell’utilizzare i controlli di integrità tcp sulla porta 8080 (o qualsiasi porta a cui è associato Tableau Server per la ricezione del traffico). Talvolta questo tipo di controllo di integrità tcp è più affidabile di server-ready-check, poiché server-ready-check si basa sullo stato del servizio segnalato a TSM, che a volte può essere ritardato a causa dell’aggiornamento dello stato del servizio.

Persistenza dei dati

Spesso si desidera essere in grado di arrestare e riattivare i contenitori senza perdere alcuna informazione importante. Le immagini di Tableau Server in un contenitore supportano questa situazione, in quanto è possibile montare determinate directory esterne al contenitore, in modo da poter eliminare o rimuovere completamente le istanze del contenitore e mantenere comunque i dati. Questi dati possono essere usati per avviare un’altra istanza del contenitore e riprendere dal punto in cui il contenitore precedente era stato arrestato.

Nelle sezioni seguenti sono illustrati i diversi tipi di stato gestito.

Dati di Tableau Server

Tutti i dati del server sono memorizzati nella directory dei dati. La directory dei dati è la posizione in cui sono archiviati tutti i dati correlati all’utente e i metadati di runtime dei servizi. L’esternalizzazione di questi dati consente di rendere persistenti i dati dell’utente anche dopo la rimozione completa del contenitore Tableau Server.

Questi dati sono trasferibili e possono essere utilizzati con un sistema di archiviazione a blocchi gestito dal cloud, come i volumi AWS EBS.

Quando Tableau Server in un contenitore viene utilizzato insieme all’archivio file esterno, la directory dei dati deve trovarsi in EBS. Non utilizzare un file system di rete (ad esempio, NFS) per la directory dei dati. La directory dell’archivio file esterno può trovarsi su un volume NFS.

Nomi host statici

Tableau Server non gestisce bene le modifiche dinamiche del nome host, pertanto è importante specificare il nome host interno del contenitore in modo che sia coerente tra le esecuzioni del contenitore. Il nome host all’interno di un contenitore è arbitrario e può essere impostato su qualsiasi valore. L’utilizzo dell’opzione --hostname consente di specificare il nome host interno del contenitore. Assicurati che i successivi contenitori che utilizzano gli stessi dati persistenti vengano eseguiti usando lo stesso valore per il nome host.

Non deve essere confuso con le installazioni di server multi-nodo. In tal caso, ai nodi aggiuntivi dovrebbe essere assegnato un nome host diverso. Ciò che conta è che, quando un singolo contenitore viene riavviato, il contenitore che lo sostituisce che utilizzerà gli stessi dati persistenti per tale istanza abbia un nome host corrispondente.

Esempio completo

Ecco un esempio in cui la directory dei dati viene montata all’esterno del contenitore.

docker run \
-v <empty-data-dir>:/var/opt/tableau \
-e LICENSE_KEY=<key> \
--hostname=<static (internal) name of host machine> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

Backup e ripristino

Tableau Server in un contenitore supporta la creazione di backup di Tableau Server e il ripristino da un file di backup (con estensione .tsbak). Il primo passaggio consiste nell’eseguire un’immagine del contenitore Tableau Server, montare il file di backup (.tsbak) nell’immagine e impostare la variabile di ambiente BACKUP_FILE con il percorso del file di backup. Inoltre, è necessario fornire il file di configurazione json di backup nella variabile di ambiente CONFIG_FILE. Il contenitore Tableau Server automatizza il processo di ripristino anche per le distribuzioni multi-nodo. Se in qualsiasi momento questa automazione non riesce a ripristinare completamente il sistema, puoi sempre ricorrere ai classici strumenti e processi di Tableau Server come i comandi TSM per interagire con Tableau Server esattamente come faresti con una distribuzione senza contenitore.

Per maggiori informazioni su come eseguire il backup e il ripristino di un’istanza standard di Tableau Server, consulta Eseguire un backup completo e ripristinare Tableau Server.

Backup nel contenitore Tableau Server

  1. Apri la shell all’interno di Tableau Server in un contenitore versione A. Crea il backup del repository e i file di backup della topologia e della configurazione.

    docker exec -it my-server bash
    
    # Just providing filename automatically produces the backup file at /var/opt/tableau/tableau_server/data/tabsvc/files/backups/
    tsm maintenance backup -f <repository-backup>.tsbak -d
    
    # Any filepath where current user(UNPRIVILEGED USER) can write.
    tsm settings export -f /var/opt/tableau/tableau_server/data/tabsvc/files/backups/<topology-conf-backup>.json
  2. Copia i file creati nel passaggio precedente nel computer host. Modifica le autorizzazioni dei file in modo da impostare autorizzazioni di lettura complete per entrambi i file.

    docker cp my-server:/var/opt/tableau/tableau_server/data/tabsvc/files/backups/<repository-backup>.tsbak ./<repository-backup>.tsbak
    docker cp my-server:/var/opt/tableau/tableau_server/data/tabsvc/files/backups/<topology-conf-backup>.json ./<topology-conf-backup>.json
    chmod a+r ./<repository-backup>.tsbak ./<topology-conf-backup>.json
  3. Archivia gli artefatti di backup in una posizione sicura. Esegui la procedura di ripristino riportata di seguito quando necessario.

Ripristino nel contenitore Tableau Server

I backup creati da qualsiasi versione supportata di Tableau Server (con contenitore e senza contenitore) possono essere ripristinati all’interno del contenitore Tableau Server.

Prerequisiti
  • File di backup di Tableau Server.
  • File json di configurazione contenente informazioni sulla configurazione e sulla topologia.
  • File json di configurazione contenente informazioni sull’archivio identità.
  • Nota: sarà probabilmente necessario modificare i file di backup in modo che dispongano di autorizzazioni di lettura complete. I file di backup in genere sono bloccati per l’utente che ha creato il file, che probabilmente sarà diverso dall’utente Tableau in esecuzione nel contenitore.
docker run \
-v <full-path-to-backup-file>:/docker/config/backup/backup-file.tsbak \
-v <full-path-to-config-only-file>:/docker/config/config.json:ro \
-v <full-path-to-identity-store-config-only-file>:/docker/config/identity-store-config.json \
-e LICENSE_KEY=<key> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

Note:

  • Se esegui il ripristino di un sistema multi-nodo, devi avviare anche gli altri nodi per il corretto funzionamento dell’automazione del ripristino. Per maggiori informazioni, consulta la sezione Configurazione multi-nodo di Tableau Server in un contenitore di questo documento. Solo il nodo iniziale richiede il file di backup, il file di configurazione di backup e la licenza.
  • I file di backup devono essere forniti solo nella prima esecuzione del contenitore. Una volta inizializzato il server, non è necessario continuare a montare i file di backup.

 

Migrazione da Tableau Server a Tableau Server in un contenitore

Per eseguire la migrazione da un’installazione standard di Tableau Server a Tableau Server in un contenitore, devi utilizzare la tecnica di backup e ripristino. I backup creati da qualsiasi versione supportata di Tableau Server (con contenitore e senza contenitore) possono essere ripristinati all’interno del contenitore Tableau Server. Per maggiori informazioni, consulta la sezione Ripristino nel contenitore Tableau Server più indietro.

Upgrade delle versioni di Tableau Server

Esistono due modi per eseguire l’upgrade di Tableau Server. Il metodo Upgrade-Image elencato in questa sezione rappresenta la soluzione consigliata. Tuttavia, come soluzione alternativa, è anche possibile eseguire l’upgrade di Tableau Server utilizzando il backup e il ripristino.

Upgrade tramite il metodo Upgrade-Image

L’immagine di upgrade è un’immagine Docker che può essere creata utilizzando lo script build-upgrade-image dallo strumento di configurazione per Tableau Server in un contenitore. Lo scopo dell’immagine è esclusivamente quello di eseguire l’upgrade di Tableau Server attualmente in esecuzione in un contenitore.

Procedi come segue per eseguire l’upgrade.

  1. Crea un’immagine di upgrade utilizzando lo script build-upgrade-image. Per compilare questo contenitore, è necessario il file rpm della nuova versione di Tableau Server.
  2. Arresta il contenitore in cui è attualmente in esecuzione Tableau Server.
  3. Avvia l’immagine di upgrade, montando la stessa directory di dati del contenitore arrestato nel passaggio precedente.
  4. Il processo di upgrade richiede un certo tempo. Al termine, Tableau Server sarà aggiornato. Controlla i log di Docker per informazioni sul processo di upgrade. Il contenitore verrà arrestato dopo il processo di upgrade.
  5. Avvia un nuovo Tableau Server in un contenitore di una versione più recente. Monta la stessa directory dei passaggi precedenti.

Esempio:

Supponiamo di avere Tableau Server in un contenitore che esegue Tableau Server. Di seguito sono riportati alcuni presupposti per questo esempio:

  • Disponi di dati importanti e non vuoi perdere alcun dato durante il processo di upgrade. La directory dei dati deve essere resa persistente all’esterno del contenitore.
  • Il contenitore è denominato my-server. L’immagine Docker è denominata tableau-server:versionA.
  • La versione del server my-server attualmente in uso è la versione A.
  • La versione del server a cui desideri eseguire l’upgrade è la versione B.
  1. Ottieni il file rpm di Tableau Server per la versione B. Crea un’immagine di upgrade.

    # For all the options available in the script
    ./build-upgrade-image -h
     
    # Frequently used command to create a upgrade-image
    ./build-upgrade-image --installer=<path to the tableau server version B> -i tableau-server:versionA -o tableau-server-upgrade:versionAB
  2. Arresta il contenitore my-server.

    docker stop my-server -t 120
  3. Avvia l’immagine appena creata tableau-server-upgrade:versionAB. Monta la stessa directory di dati del contenitore precedentemente arrestato. Il contenitore avvia il processo di upgrade alla versione B.

    docker run --name my-upgrade-server \
    -v <data-dir mount from previous step>:/var/opt/tableau \
    ...
    tableau-server-upgrade:versionAB
  4. Il contenitore verrà arrestato una volta completato l’upgrade. Controlla i log di Docker per i log del processo di upgrade e verifica che il processo di upgrade sia stato eseguito correttamente. Puoi anche controllare il codice di uscita del contenitore Docker per assicurarti che il processo di upgrade sia stato completato correttamente.

    # The log file /var/opt/tableau/tableau_server/logs/upgrade-console.log is created after 3-4 mins into the start of upgrade container. When the upgrade completes successfully, "upgrade is complete" log will be # seen.
    docker logs my-upgrade-server
    ...
    ...
    Verifying licensing state.
    Tableau Server has been upgraded to version near.20.0801.1050.
    >> The upgraded Tableau binary directory will be added to PATH for new shells. To get the
    >> updated path, either start a new session, or for bash users run:
    >> source /etc/profile.d/tableau_server.sh
    Starting service...
    Starting service...
    Job id is '12', timeout is 30 minutes.
    Service was started successfully.
    Status: RUNNING
    Tableau Server is Running
    upgrade is complete
  5. Arresta il contenitore my-upgrade-server. Avvia la nuova versione B di Tableau Server in un’immagine contenitore e monta la directory dei dati dal contenitore my-upgrade-server arrestato

    # Stop the server.
    docker stop my-upgrade-server -t 120
    
    
    # Run the new version Hu
    docker run --name my-upgraded-server \
    -v <data-dir mount from previous step>:/var/opt/tableau \
    ...
    ...
    tableau-server:versionB

Upgrade tramite il metodo di backup/ripristino

Segui la procedura nella sezione Backup e ripristino di questo documento. L’unica modifica necessaria per cambiare un’operazione di backup/ripristino in un’operazione di upgrade è ripristinare il backup su una nuova versione di Tableau Server.

Configurazione multi-nodo di Tableau Server in un contenitore

Per configurazione multi-nodo di Tableau Server in un contenitore si intende una singola distribuzione di Tableau Server distribuita su più nodi. La configurazione multi-nodo in questo contesto corrisponde alla configurazione multi-nodo di Tableau Server, in cui determinati processi possono essere eseguiti su altri nodi per aumentare la capacità, la potenza di calcolo e così via. Ciò è diverso dall’avvio di più istanze singole di Tableau Server in un contenitore, in cui ciascun contenitore è un server indipendente con dati distinti.

La configurazione multi-nodo di Tableau Server in un contenitore funziona in modo molto simile a un’installazione multi-nodo di Tableau Server senza contenitore e utilizza lo stesso meccanismo sottostante. Per una panoramica della configurazione di un’installazione multi-nodo di Tableau Server senza contenitore, consulta Installazioni di Tableau Server distribuite e ad alta disponibilità.

Ecco un esempio:

Utilizzo di base multi-nodo

Nodo iniziale

Opzione 1: utilizza questa opzione se la configurazione del server (CONFIG_FILE) specifica una topologia multi-nodo:

docker run \
-v <network-shared-directory>:/docker/config/bootstrap \
-v <full-path-to-config-file>:/docker/config/config.json:ro \
-e LICENSE_KEY=<key> \
-p 8080:8080 -p 8800-9000:8800-9000 -p 27000-27010:27000-27010 \
--hostname=<static (internal) name of host machine> \
-d <Tableau Server in a Container image ID or tag>

Opzione 2: utilizza questa opzione se desideri una distribuzione multi-nodo anche se la configurazione del server non specifica la topologia multi-nodo:

docker run \
-v <network-shared-directory>:/docker/config/bootstrap \
-e LICENSE_KEY=<key> -e ALWAYS_WRITE_BOOTSTRAP_FILE=1 \
-p 8080:8080 -p 8800-9000:8800-9000 -p 27000-27010:27000-27010 \

--hostname=<static (internal) name of host machine> \
-d <Tableau Server in a Container image ID or tag>
Nodo aggiuntivo
docker run \
-v <network-shared-directory>:/docker/config/bootstrap \
-e BOOTSTRAP_INSTALL=1 \
-p 8080:8080 -p 8800-9000:8800-9000 \
--hostname=<static (internal) name of host machine> \
-d <Tableau Server in a Container image ID or tag>

Esposizione delle porte per la gestione delle licenze e TSM

Per permettere la comunicazione dei nodi Worker con l’istanza primaria, è necessario aprire porte aggiuntive. Devi consentire il traffico da altri nodi nell’istanza primaria di Tableau Server in un contenitore nei seguenti intervalli di porte:

Service Ports: 8800-9000
Postgres Port: 8060
Licensing Ports: 27000-27010

Presta attenzione al numero di porte aperte: è consigliabile esporre solo 200 porte (8800-9000) anziché l’intervallo di porte 8000-9000 predefinito di Tableau Server, perché l’esposizione di 1000 porte in Docker può influire negativamente sul tempo di avvio dell’immagine Docker. Puoi utilizzare un intervallo di porte più piccolo o più grande, a seconda della complessità della topologia di Tableau Server. In genere non è consigliabile esporre meno di 100 porte. In caso contrario, si corre il rischio che i servizi in un cluster non siano in grado di comunicare con determinati servizi. Se specifichi un intervallo di porte personalizzato, assicurati di esporre la porta 8850 (inclusa in modo implicito nell’intervallo 8800-9000). L’intervallo di porte viene specificato impostando le variabili di ambiente PORT_RANGE_MIN e PORT_RANGE_MAX.

I nodi aggiuntivi dovranno inoltre esporre l’intervallo di porte per i servizi (8800-9000), ma non l’intervallo di porte per la gestione delle licenze. È importante notare che questi intervalli di porte sono utilizzati solo per consentire la comunicazione tra i processi di Tableau Server. Queste porte non devono essere esposte agli utenti o a qualsiasi altro computer diverso da quelli che eseguono Tableau Server in un contenitore per lo stesso cluster multi-nodo.

Queste regole per le porte sono coerenti con la documentazione del firewall di Tableau Server. Per maggiori informazioni, consulta Configurare il firewall locale.

Risoluzione dei nomi host

I diversi nodi di Tableau Server in un contenitore devono essere eseguiti con nomi host coerenti, perché Tableau Server non gestisce le modifiche dinamiche del nome host. Quando si esegue Tableau Server in configurazione multi-nodo, tali nodi dovranno comunicare tra loro. I nodi di Tableau Server tenteranno di farlo usando i nomi host che i nodi di Tableau Server in un contenitore sono configurati per utilizzare. Se ad esempio esegui il nodo iniziale con il nome host "iniziale", i nodi aggiuntivi tenteranno di inviare traffico a un host denominato "iniziale". Esistono diversi modi per configurare le immagini per la risoluzione dei nomi host in altre immagini. Il file /etc/hosts in ogni contenitore per mappare il nome host del contenitore arbitrario ("iniziale") all’indirizzo IP che sta effettivamente eseguendo l’altro contenitore.

Bootstrap dei nodi aggiuntivi

Il contenitore iniziale di Tableau Server che viene eseguito come parte di un cluster genera un file di bootstrap che i successivi nodi aggiuntivi devono utilizzare per unirsi al cluster. Una volta che i nodi aggiuntivi sono registrati nella topologia del cluster, puoi iniziare ad assegnare i processi di Tableau Server da eseguire su di essi. Questo processo può essere completamente automatizzato. Se hai fornito un file di configurazione di Tableau Server (in genere montando un file di configurazione nel percorso di file specificato da CONFIG_FILE, percorso predefinito: /docker/config/config.json) che specifica una topologia multi-nodo, il nodo iniziale attenderà automaticamente finché tutti i nodi aggiuntivi non saranno registrati. Dopo la registrazione, la topologia multi-nodo verrà applicata a tutto il cluster.

Una volta che Tableau Server è completamente in esecuzione nel nodo iniziale in Tableau Server in un contenitore, puoi fare in modo che generi un file di bootstrap per i nodi aggiuntivi:

docker exec -it <container-name> tsm topology nodes get-bootstrap-file -f $BOOTSTRAP_FILE

Questo comando viene chiamato automaticamente se imposti il valore di ALWAYS_WRITE_BOOTSTRAP_FILE su 1.

Considerazioni sulla sicurezza

Il file di bootstrap contiene i segreti del server che consentono di stabilire una sessione TSM con il nodo iniziale. Pertanto, se un utente malintenzionato dovesse ottenere il file, potrebbe inviare comandi TSM al server per un certo periodo di tempo. Il file stesso contiene anche dati che consentirebbero la decrittografia dei segreti di configurazione del server. Questo file deve essere considerato sensibile e deve essere accessibile solo dai servizi e dai sistemi direttamente relativi alla creazione di una distribuzione multi-nodo.

Scadenza del bootstrap

I file di bootstrap consentono una sessione limitata nel tempo, con una durata di 2 ore. Durante tale periodo, i nodi aggiuntivi non dovranno fornire credenziali al nodo iniziale per unirsi come nodo aggiuntivo. È possibile utilizzare un file di bootstrap una volta che la sessione è scaduta, tuttavia significherebbe dover fornire le credenziali al nodo iniziale.

Trasferimento del file di bootstrap

Il file di bootstrap deve essere reso disponibile per e utilizzato dai nodi Worker di Tableau Server in un contenitore. Il file di bootstrap dovrà essere condiviso con Tableau Server in un contenitore in tutti gli altri nodi che desideri utilizzare come nodi Worker per questa distribuzione. Puoi eseguire questa operazione in diversi modi.

Trasferire il file tramite una rete sicura

Parte dell’automazione nel nodo iniziale può comportare l’invio del file direttamente ai nodi aggiuntivi. Tale operazione dovrebbe essere eseguita utilizzando un client/strumento per il trasferimento sicuro dei file. In genere, questo è utile negli scenari in cui possono essere generati più file di bootstrap per tutta la durata del nodo iniziale (eventualmente per aggiungere più nodi aggiuntivi in un secondo momento).

Utilizzare un montaggio di file di rete

Il montaggio di un file di rete condiviso da tutti i contenitori in una determinata distribuzione è un’altra opzione.

Altro

L’obiettivo finale è trasferire in modo sicuro un file prodotto da un contenitore in un insieme specifico di altri contenitori. Di conseguenza, è possibile utilizzare qualsiasi metodo che consenta di raggiungere questo obiettivo in modo sicuro.

Avvio dei nodi aggiuntivi

Per avviare un nodo aggiuntivo di Tableau Server in un contenitore, è sufficiente avviare il contenitore con la variabile di ambiente BOOTSTRAP_INSTALL impostata su 1.

In questo modo, viene comunicato all’istanza di Tableau Server in un contenitore di attendere finché non è presente un file di bootstrap nel percorso specificato dalla variabile di ambiente BOOTSTRAP_FILE (anch’essa configurabile). Fai riferimento alla tabella delle variabili di ambiente per visualizzare il percorso di file predefinito. Per chiarire, se esegui un’immagine di Tableau Server in un contenitore in "modalità nodo aggiuntivo", il contenitore non avvierà supervisord o qualsiasi altro processo diverso da uno script Bash in esecuzione come pid 1 che controlla ogni 5 secondi se esiste il file di bootstrap. Una volta che il file è presente, Tableau Server in un contenitore procederà all’inizializzazione come nodo aggiuntivo.

Configurazione dei nodi aggiuntivi

La configurazione dei nodi aggiuntivi per l’esecuzione di una topologia specifica funziona come in una normale distribuzione di Tableau Server. Prevede inoltre gli stessi requisiti, ovvero l’aggiunta di nuovi processi in un nodo può richiedere un riavvio a livello di cluster. Per maggiori informazioni, consulta Configurazione dei nodi.

Considerazioni sulle funzionalità di Tableau Server

Alcune funzionalità di Tableau Server funzionano in modo diverso nei contenitori. In questa sezione sono illustrate funzionalità specifiche che hanno considerazioni speciali o diverse in un ambiente con contenitori.

Active Directory

Impostare il controller di dominio AD

Se prevedi di utilizzare Active Directory come archivio identità per le pagine Web e i siti di Tableau Server, è necessaria un’ulteriore considerazione. I sistemi Tableau Server in esecuzione in ambienti Linux determinano in modo dinamico con quale controller di dominio AD comunicare esaminando la relativa subnet IP. Ai contenitori possono essere assegnati indirizzi IP arbitrari e, in questo caso, Tableau Server non sarà necessariamente in grado di utilizzare l’indirizzo IP per trovare un controller di dominio appropriato. Per questo motivo, potrebbe essere necessario configurare un controller di dominio/nome host specifico con cui Tableau Server possa comunicare. A tale scopo, procedi come segue:

  1. Determina quale controller di dominio vuoi che venga utilizzato da Tableau Server e ottieni il nome host.
  2. Imposta la chiave di configurazione wgserver.domain.ldap.hostname sul nome host utilizzando le opzioni di configurazione standard per l’amministrazione di Tableau Server:

    • Imposta il valore nel file di configurazione json CONFIG_FILE.
    • Utilizza il comando TSM configuration

      tsm configuration set -k wgserver.domain.ldap.hostname -v <hostname>

Importare il certificato AD nell’archivio delle chiavi di Tableau Server

Per impostazione predefinita, Tableau Server in un contenitore comunica con AD tramite StartTLS ogni volta che viene utilizzato il binding semplice. Pertanto, quando il contenitore viene eseguito in questa configurazione, è necessario importare il certificato del server AD nell’archivio delle chiavi di Tableau Server. In caso contrario, l’inizializzazione del server avrà esito negativo. A tale scopo, procedi come segue:

  1. Crea uno script pre-init-command (consulta la sezione Script di pre-inizializzazione). Aggiungi la seguente riga per aggiungere il certificato AD all’archivio delle chiavi di Tableau Server.

    ${INSTALL_DIR}/packages/repository.${SERVICE_VERSION}/jre/bin -importcert -noprompt -alias startTlsCert -file <mounted-certificate-path> -storetype JKS -storepass changeit -keystore ${DATA_DIR}/config/tableauservicesmanagerca.jks
  2. Monta il certificato del server AD nel percorso del file fornito per il parametro -file nello script pre-init-command.

In alternativa, è possibile disabilitare l’impostazione predefinita per la comunicazione con AD tramite StartTLS. Imposta wgserver.domain.ldap.starttls.enabled su false per disabilitare StartTLS. Tuttavia, questa operazione non è consigliata.

Esempi di configurazione della distribuzione

Docker

Utilizzo di base di Tableau Server in un contenitore
docker run \
-e LICENSE_KEY=<key>
-p 8080:8080
-d <Tableau Server in a Container image ID or tag>
Utilizzo di base di Tableau Server in un contenitore con l’utente amministratore iniziale automatizzato
docker run \
-e LICENSE_KEY=<key> \
-e TABLEAU_USERNAME=<myadmin> \
-e TABLEAU_PASSWORD_FILE=/etc/tableau-admin-secret \
-v <full-path-to-pw-file>:/etc/tableau-admin-secret \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
Modalità solo TSM
docker run \
-e TSM_ONLY=1 \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
Utilizzo di base multi-nodo
Nodo iniziale

Opzione 1: utilizza questa opzione se la configurazione del server (CONFIG_FILE) specifica una topologia multi-nodo:

docker run \
-v <network-shared-directory>:/docker/config/bootstrap \
-v <full-path-to-config-file>:/docker/config/config.json:ro \
-e LICENSE_KEY=<key> \
-p 8080:8080 -p 8800-9000:8800-9000 -p 27000-27010:27000-27010 \
--hostname=<static (internal) name of host machine> \
-d <Tableau Server in a Container image ID or tag>

Opzione 2: utilizza questa opzione se desideri una distribuzione multi-nodo anche se la configurazione del server non specifica la topologia multi-nodo:

docker run \
-v <network-shared-directory>:/docker/config/bootstrap \
-e LICENSE_KEY=<key> -e ALWAYS_WRITE_BOOTSTRAP_FILE=1 \
-p 8080:8080 -p 8800-9000:8800-9000 -p 27000-27010:27000-27010 \
--hostname=<static (internal) name of host machine> \
-d <Tableau Server in a Container image ID or tag>
Nodo aggiuntivo
docker run \
-v <network-shared-directory>:/docker/config/bootstrap \
-e BOOTSTRAP_INSTALL=1 \
-p 8080:8080 -p 8800-9000:8800-9000 \
--hostname=<static (internal) name of host machine> \
-d <Tableau Server in a Container image ID or tag>
Esternalizzare l’utilizzo dei dati
docker run \
-v <empty-data-dir>:/var/opt/tableau \
-e LICENSE_KEY=<key> \
--hostname=<static (internal) name of host machine> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
Utilizzo di base dell’inizializzazione del contenitore

Inizializzazione del contenitore

docker run \
-v <empty-data-dir>:/var/opt/tableau \
-e LICENSE_KEY=<key> \
-e INIT_CONTAINER=1 \
--hostname=<static (internal) name of host machine> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

Esecuzione del contenitore

docker run \
-v <empty-data-dir>:/var/opt/tableau \
--hostname=<static (internal) name of host machine> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
Ripristino di base da backup con nodo singolo
docker run \
-v <full-path-to-backup-file>:/docker/config/backup/backup-file.tsbak \
-v <full-path-to-config-only-file>:/docker/config/config.json:ro \
-e LICENSE_KEY=<key> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

Docker-Compose

version: '3.2'
services:
    tableau-server:
         hostname: localhost
         volumes:
              - <your-tsm-command-file>:/docker/config/tsm-commands:ro
              - <your-config-file >:/docker/config/config.json:ro
         ports:
              - "8080:8080"
         image: ${IMAGE_NAME}
         environment:
              - LICENSE_KEY=<license-key>

 

 

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