Tableau Server em um Container - Utilização de uma imagem

Introdução

O Tableau Server em um Contêiner é a primeira oferta de servidor em contêiner do Tableau. O Tableau Server em um contêiner é uma instância multifuncional do Tableau Server em execução dentro de um contêiner Docker do Linux. Em outras palavras, um Tableau Server em um Contêiner é uma imagem de docker que executa um aplicativo completo e independente do Tableau Server. O Tableau Server em um Contêiner é o primeiro de muitos passos para aceitar a execução do Tableau Server em um ambiente de contêineres. A maneira mais fácil de entender o conceito do Tableau Server em um Contêiner é imaginá-lo como uma máquina virtual (VM) com o Tableau Server pré-instalado. A imagem é baseada em uma imagem UBI 8 (CentOS 7.x para versão 2022.1 e anterior) e executa supervisord (em vez de systemd) dentro do contêiner. Quando o contêiner é iniciado, o supervisord imediatamente tenta inicializar e executar o Tableau Server. Grande parte desta documentação visa descrever como estabelecer a configuração e utilizar a automação de modo que você possa executar o Tableau Server em ambientes do Docker.

A ferramenta de configuração de Tableau Server em uma Imagem de contêiner ajuda a criar e personalizar imagens de contêiner para incluir pacotes e artefatos personalizados. Uma das funções principais da ferramenta é criar a imagem do contêiner e instalar conectores de dados personalizados.

Para testar o Tableau Server em uma imagem de contêiner rapidamente em cenários à prova de conceito, consulte Tableau Server em um Contêiner - Início Rápido .

Limitações para o Tableau Server em um Contêiner

  • O Tableau Server em um contêiner oferece suporte apenas à ativação de licença usando o Server ATR. A ativação offline usando o Server ATR é compatível com 2023.1 e versões posteriores. Esta funcionalidade está disponível em Contêineres, mas requer etapas extras e aprovação. Se você precisar executar o Tableau Server em um contêiner em um ambiente isolado ou off-line, entre em contato com o representante da sua conta para obter mais informações.
  • O Tableau Server em um Contêiner atualmente não é compatível com o agente da Resource Monitoring Tool (RMT).
  • O Kerberos não é compatível com o Tableau Server em um Contêiner.

Imagem do Tableau Server em um Contêiner

A imagem do Tableau Server em um Contêiner é uma imagem do docker que contém todo o Tableau Server. A imagem é criada usando o Tableau Server em uma Ferramenta de configuração de contêiner. Quando criada, a imagem inclui o Tableau Server, mas ainda não foi inicializado. O usuário padrão em uma imagem do Tableau Server em um Contêiner é um usuário sem privilégios não raiz.

Pré-requisitos

Executar o script configure-container-host

Quando o Tableau Server é instalado sem um contêiner, certos limites de recursos e propriedades de coredump são alterados como parte do processo de instalação. Isso é feito para ajudar a otimizar o desempenho do Tableau Server. Uma imagem do Tableau Server em um Contêiner não tem a capacidade de fazer essas alterações na máquina host, portanto, recomendamos executar o script configure-container-host que é fornecido no Tableau Server em uma ferramenta de configuração de contêiner, em qualquer máquina que executará as imagens do Tableau Server em um Contêiner. Isso ajudará a garantir que o desempenho do Tableau Server em uma imagem de contêiner seja equivalente ao de sua contraparte sem contêiner.

Para executar o script configure-container-host:

  1. Localize o script (configure-container-host) no diretório de nível superior do Tableau Server em uma Ferramenta de configuração de contêiner.
  2. Copie-o para os ambientes nos quais você planeja executar o Tableau Server.

  3. Determine a conta de usuário/uid sem privilégios que será executada como o usuário padrão do Tableau Server em uma imagem de contêiner. Este usuário deve existir na máquina host e corresponder ao UID definido na variável de ambiente UNPRIVILEGED_TABLEAU_UID do contêiner do Tableau Server. Se você não definiu isso ao criar a imagem Docker, o ID de usuário sem privilégios padrão dentro do contêiner é 999. Se você estiver usando o mapeamento de usuário Docker, este UID deve corresponder ao usuário que existe na máquina host.

  4. Execute o script como raiz:

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

Execução da imagem

Para executar uma imagem de docker do Tableau Server em um Contêiner, o comando mais simples para executar uma imagem de contêiner do Tableau Server é o seguinte:

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

Isso executará o docker em segundo plano e, depois de algum tempo, resultará em uma instância totalmente instalada do Tableau Server. O Tableau Server pode levar de 10 a 20 minutos para inicializar totalmente, dependendo do hardware do computador que executa a imagem. Você pode confirmar se o contêiner está em execução digitando o comando docker ps. Depois que o Tableau Server estiver operacional, a conta inicial do administrador do Tableau Server precisará ser criada. Esta etapa pode ser automatizada. Para obter mais informações, consulte Automatizar o administrador do Tableau Server inicial

Resumo dos argumentos básicos de execução

Todas as opções usadas no comando docker run são necessárias. Muitas vezes, mais opções são fornecidas para aproveitar diferentes funcionalidades na imagem. Por enquanto, vamos dar uma olhada mais de perto apenas nos argumentos usados no comando docker run mais simples para o Tableau Server em um Contêiner:

ArgumentoDescrição
-e LICENSE_KEY=<key>O Tableau Server deve ser licenciado. Esta variável de ambiente armazena a chave que será usada para licenciar o servidor. É um componente obrigatório do processo de inicialização. É possível fornecer várias licenças separadas por vírgulas.
-p 8080:8080Isso informa ao docker para expor a porta 8080 dentro do contêiner e vinculá-lo à porta 8080 na máquina de host. O primeiro valor 8080 é configurável, alterá-lo modificará a porta mapeada no host. Por padrão, o Tableau Server espera receber o tráfego do usuário na porta 8080 dentro do contêiner. É possível escolher se você deseja expor essa porta em uma porta de host diferente ou se não deseja expor de forma alguma.

 

Automatizar o administrador do Tableau Server inicial

Quando o Tableau Server é iniciado pela primeira vez, um usuário administrativo inicial deve ser criado antes que sejam permitidas conexões de rede remotas com o Tableau Server. Essa ação pode ser realizada executando o comando tabcmd initialuser -s localhost:8080 -u <username> -p <password> dentro do contêiner. Você também pode definir credenciais de administrador por meio de variáveis de ambiente. TABLEAU_USERNAME e TABLEAU_PASSWORD ou TABLEAU_PASSWORD_FILE (preferencial) são as variáveis de ambiente que podem ser definidas para transmitir as credenciais de administrador inicial. Para obter mais informações sobre gerenciamento de senhas, consulte Gerenciamento de senhas.

Para obter mais informações sobre o comando tabcmd initialuser, consulte initialuser.

Exemplo

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>

Licenciamento

Licenciamento em contêineres

O licenciamento do Tableau Server em um contêiner usa o serviço Autorização para execução (ATR) para ativar o Tableau Server implantado na nuvem, contêineres ou ambientes virtuais sem esgotar as ativações de licença. O serviço ATR consegue isso fornecendo concessões de curto prazo de duração configurável (duração ATR) até que a data de expiração da chave do produto seja cumprida. O ATR abstrai o licenciamento do Tableau das alterações de hardware subjacentes, que é um aspecto fundamental das implantações de contêiner. Como o servidor ATR requer que o contêiner seja capaz de acessar o serviço ATR hospedado pelo Tableau, os contêineres requerem acesso à Internet. O Tableau Server em um Contêiner não é compatível com a ativação offline ou manual. Consulte Ativar o Tableau Server usando o serviço ATR (Autorização para execução) para obter mais detalhes.

Importante: você deve fornecer as variáveis de ambiente LICENSE_KEY ou LICENSE_KEY_FILE (defina apenas uma).

Ao atualizar o Tableau Server em um contêiner, se você usou o número máximo de ativações para sua licença, o Tableau Server não pode iniciar até que a duração do ATR tenha decorrido (4 horas/14.400 segundos por padrão). Para obter mais informações sobre como definir ou alterar a duração do ATR, consulte Ativar o Tableau Server usando o serviço ATR (Autorização para execução)(O link abre em nova janela).

Variável de ambiente da licença

O Tableau Server em um Contêiner aceita a definição de chaves do produto usando uma variável de ambiente: LICENSE_KEY pode conter uma ou mais chaves (-e LICENSE_KEY="<key1> , <key2>") uma lista separada por vírgula.

Exemplo

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

Arquivo de licença

O Tableau Server em um Contêiner aceita as configurações das chaves do produto usando um arquivo. Monte um arquivo para o local padrão do arquivo da chave do produto no contêiner (/docker/config/license_file) ou conforme especificado de outra forma pela variável de ambiente LICENSE_KEY_FILE.

Exemplo

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 de concessão de licença solicitado

Você pode especificar o tempo de concessão da licença ATR em um contêiner do Tableau Server definindo a variável de ambiente REQUESTED_LEASE_TIME . Forneça o tempo de concessão em segundos, com a duração mínima sendo 3.600 segundos (ou 4 horas). É recomendável diminuir o tempo de concessão ao experimentar e testar o Tableau Server para reduzir a probabilidade de atingir o limite máximo de concessão ativado. Para implantações de produção, é altamente recomendável não definir REQUESTED_LEASE_TIME (usando, portanto, o valor padrão), para que o Tableau possa determinar o tempo de concessão ideal.

Exemplo

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

Execução de uma imagem não inicializada

O Tableau Server tem duas fases de instalação; inicialmente, os serviços do Tableau Service Manager (TSM) são instalados. Em uma instalação normal no local, esta etapa é o momento em que os administradores do servidor registram o servidor, ativam as licenças e configuram o servidor para que se comportem da maneira que eles desejam. A segunda fase de instalação é a configuração e o início dos processos do Tableau Server, que lidará com a lógica comercial relacionada e o tráfego de usuário final.

O comportamento padrão de imagens do Tableau Server em um Contêiner é automatizar todas as etapas de instalação para que o comando docker run resulte em um servidor totalmente funcional. No entanto, se você deseja iniciar uma imagem do Tableau Server em um Contêiner e fazer com que ela execute somente os serviços do TSM (o que um administrador do servidor esperaria se executasse apenas initialize-tsm), pode fazê-lo passando o sinalizador TSM_ONLY como uma variável de ambiente.

Por exemplo:

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

Interação com a imagem

Quando você tiver uma imagem do Tableau Server em um Contêiner em execução, poderá chamar os comandos TSM e tabcmd diretamente. Essas ferramentas são adicionadas diretamente ao caminho do ambiente do usuário pid 1 (que é a raiz neste momento). O que significa que você pode chamar os comandos TSM e tabcmd da seguinte maneira:

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

Além disso, é possível abrir uma divisória no contêiner para realizar operações mais gerais. Geralmente, isso não é recomendado, exceto para fins de depuração:

docker exec -it <container> bash

Interface do usuário na Web do TSM e interface de linha de comandos remota

A interface do usuário na Web do TSM e a interface de linha de comandos remota não são acessíveis por padrão. Isso ocorre porque requer um nome de usuário e uma senha para autenticar e, por padrão, o usuário que executa os processos do Tableau Server no contêiner não recebe uma senha. Isso é feito por motivos de segurança (não recomendamos o envio de imagens com uma senha padrão dentro delas, pois isso permitiria o acesso remoto). Em alguns casos, a interface de usuário da Web do TSM e fazer chamadas de acesso remoto usando a CLI do TSM podem ser úteis. Se quiser usar esses recursos, você precisará seguir as etapas descritas abaixo para criar uma conta de usuário de acesso remoto.

Para obter informações mais detalhadas sobre a interface do usuário da Web do TSM e a CLI, consulte Fazer logon na interface do usuário na Web do Tableau Services Manager.

Criar um usuário remoto do TSM

Especifique as variáveis de ambiente TSM_REMOTE_UID eTSM_REMOTE_USERNAME ao criar o Tableau Server em uma imagem de contêiner usando a ferramenta de configuração. A criação de uma conta habilitada para TSM na imagem requer acesso privilegiado à imagem que não está disponível em tempo de execução e, portanto, só pode ser feita quando a imagem Docker está sendo criada pelo Tableau Server em uma ferramenta de configuração de contêiner (build-image).

Exemplo de arquivo de Ferramenta de Configuração do Tableau Server em um Contêiner environment:

TSM_REMOTE_UID=1010
TSM_REMOTE_USERNAME=myuser

Definir a senha para o usuário remoto do TSM

A imagem do Tableau Server em um Contêiner exige uma senha para a conta quando a imagem é executada. Existem duas maneiras de definir a senha para essa conta.

Arquivo de segredos (recomendado)

Crie um arquivo chamado remote-user-secret, grave a senha no arquivo e monte-a no contêiner no tempo de execução. TSM_REMOTE_PASSWORD_FILE determina a localização esperada (a localização padrão é/docker/config/remote-user-secret) do arquivo de segredos no contêiner.

Exemplo de arquivo remote-user-secret:

mypassword

Exemplo de 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>
Variáveis de ambiente

Você também pode simplesmente definir a variáveis de ambiente TSM_REMOTE_PASSWORD ao iniciar a imagem docker.

Exemplo de 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>

Notas de segurança

  • A porta 8850 deve ser exposta para receber o tráfego de solicitação do TSM.
  • Se a senha não for definida corretamente na imagem no tempo de execução, o contêiner será encerrado imediatamente.
  • O TSM depende do sistema de conta de usuário Linux da imagem. Neste caso, a conta é restrita dentro da imagem. Isso significa que a conta terá um shell restrito e está limitada à execução de dois comandos: /bin/true epasswd.

Como rotacionar a senha do usuário remoto do TSM

Se quiser rotacionar a senha da conta do usuário remoto do TSM, você poderá fazer isso usando uma destas opções:

Inicie um novo Tableau Server em um Contêiner

A senha da conta é definida sempre que o contêiner é inicializado. Se você persistir os dados do Tableau fora do contêiner, iniciar uma imagem nova com uma nova senha fará com que a senha seja rotacionada de maneira eficaz.

  1. Desligar e remover a imagem em execução
  2. Defina um novo valor de senha em qualquer variável de ambiente TSM_REMOTE_PASSWORD ou TSM_REMOTE_PASSWORD_FILE (veja acima) em sua configuração de imagem.
  3. Inicie a imagem novamente.
Rotacione a senha manualmente dentro de um contêiner em execução

Se você não quiser desligar a imagem, ainda pode rotacionar a senha manualmente.

  1. Abra um shell no contêiner em execução
  2. Faça login como a conta de usuário remoto usando o comando su
  3. Execute o comando passwd para alterar a senha.

    Aviso: essas rotações manuais persistem apenas enquanto houver a camada de gravação da instância do contêiner. Se você excluir o contêiner, as alterações manuais não serão aplicadas quando um novo contêiner for iniciado.

 

Opções de configuração inicial

A configuração do Tableau Server em um Contêiner é essencial para obter o comportamento do Tableau Server que você deseja. O Tableau Server em um Contêiner é uma instalação limpa do Tableau Server, portanto, você precisa fornecer as mesmas informações ao contêiner de quando configurar o Tableau Server fora de um contêiner.

Variável de ambiente em tempo de execução

As variáveis de ambiente de tempo de execução abaixo informam à imagem do Tableau Server em um Contêiner como implantar o Tableau Server. Um subconjunto dessas variáveis será descrito mais detalhadamente.

Todos esses valores são projetados para serem substituídos a fim de conferir mais flexibilidade para configuração.

Nome do ambientePadrãoDescrição
ACCEPTEULA0Definido automaticamente como 1 quando uma imagem é criada usando o Tableau Server em uma Ferramenta de configuração de contêiner.
LICENSE_KEY Definido como a chave do produto que será usada para licenciar o servidor. Aceite várias licenças separadas por vírgula.
LICENSE_KEY_FILE/docker/config/license_file Caminho do arquivo para o arquivo de licença. O formato do arquivo de licença deve ser uma chave do produto por linha.
REGISTRATION_FILE/docker/config/tableau_reg.jsonCaminho do arquivo para o arquivo de registro dentro da imagem. Por padrão, contém as informações de registro fornecidas quando uma imagem do Tableau Server em um Contêiner foi criada. Isso pode ser substituído em tempo de execução. Para obter mais informações, consulte Ativar e registrar o Tableau Server.
REGISTRATION_DATA Uma maneira alternativa de sobregravar informações de registro em tempo de execução. Esta variável de ambiente deve ser definida como uma string JSON serializada contendo as mesmas informações de registro que seriam encontradas em um arquivo de registro do Tableau Server. Para obter mais informações, consulte Ativar e registrar o Tableau Server.
TABLEAU_USERNAME Refere-se à conta de administrador inicial no Tableau Server. Isso é recomendado, mas opcional. Se este usuário não estiver definido, a conta de administrador inicial do Tableau Server precisará ser definida usando tabcmd. Se essa variável for definida como um valor, uma senha também será necessária. Isso é usado somente quando o Tableau Server é inicializado pela primeira vez. A definição desse valor informa ao Tableau Server em um Contêiner para tentar inicializar o usuário automaticamente. Para obter mais informações, consulte Adicionar uma conta de administrador.
TABLEAU_PASSWORD Uma senha de texto simples para o usuário do Tableau. Refere-se à conta de administrador inicial no Tableau Server. Isso é necessário se TABLEAU_USERNAME é especificado. Para obter mais informações, consulte Adicionar uma conta de administrador.
TABLEAU_PASSWORD_FILE Um caminho de arquivo para um arquivo que contém apenas o texto de senha para o usuário do Tableau. Refere-se à conta de administrador inicial no Tableau Server. Isso é necessário se TABLEAU_USERNAME é especificado. Para obter mais informações, consulte Adicionar uma conta de administrador.
CONFIG_FILE/docker/config/config.json

Caminho de arquivo para o arquivo de configuração padrão do TSM. O arquivo será usado para configurar o Tableau Server. Para obter mais informações, consulte Exemplo de arquivo de configuração.

Não defina CONFIG_DATA se CONFIG_FILE for usado

CONFIG_DATA Isso pode ser usado como um substituto paraCONFIG_FILE. Se você deseja fornecer configuração ao servidor sem montar um arquivo externo, defina esta variável de ambiente para o conteúdo serializado equivalente de um arquivo de configuração do TSM.

Exemplo CONFIG_DATA="{\"configEntities\":{\"identityStore\":{\"_type\":\"identityStoreType\",\"type\":\"local\"}}}". Para obter mais informações, consulte Exemplo de arquivo de configuração

Não defina CONFIG_FILE se CONFIG_DATA é usado

IGNORE_TOPOLOGY_CONFIG00 ou 1. Se definido como 1, o contêiner irá ignorar qualquer configuração relacionada à topologia presente no arquivo de configuração designado por CONFIG_FILE.
BACKUP_FILE/docker/config/backup/backup-file.tsbakUm caminho do arquivo para um arquivo de backup do Tableau Server (.tsbak). Se fornecido durante a inicialização, o servidor tentará uma restauração.
INIT_CONTAINER00 ou 1. Se definido como 1, o Tableau Server só tentará inicializar o TSM e o Tableau Server, o contêiner será fechado após a conclusão.
TSM_ONLY00 ou 1. Equivalente à instalação do rpm do Tableau Server e execução do inicialize-tsm. Apenas os serviços do TSM (Tableau Service Manager) serão iniciados. Funcionará SOMENTE se o contêiner for inicializado pela primeira vez (não funcionará se o Tableau Server em um Contêiner for iniciado com um diretório de servidor inicializado anteriormente).
BOOTSTRAP_INSTALL00 ou 1. Indica se o servidor é ou não um nó inicial ou adicional. Se definido como 1, o contêiner aguardará indefinidamente até que haja um arquivo bootstrap no local especificado por $BOOTSTRAP_FILE
ALWAYS_WRITE_BOOTSTRAP_FILE0 0 ou 1. Se definido como 1, o contêiner gravará um arquivo bootstrap para o local determinado em BOOTSTRAP_FILE.
WAIT_FOR_BOOTSTRAP_FILE10 ou 1. Se definido como 1 (padrão), se o contêiner detectou que é uma instalação de trabalho (BOOTSTRAP_INSTALL=1) O contêiner irá aguardar indefinidamente até que um arquivo seja detectado no caminho definido em BOOTSTRAP_FILE . Se definido como 0 quando o processo de inicialização for executado, essa espera será ignorada. Isso pode ser útil em alguns casos de depuração.
BOOTSTRAP_FILE/docker/config/bootstrap/bootstrap.jsonCaminho do arquivo para o arquivo bootstrap. Aplica-se apenas a contêineres trabalhadores. Esse arquivo deve apontar somente para um arquivo bootstrap. O uso normal seria para montagem do diretório do arquivo de destino (o padrão seria /docker/config/bootstrap) para o host.
BOOTSTRAP_DATAIsso pode ser usado como um substituto para BOOTSTRAP_FILE. Se você deseja fornecer um arquivo bootstrap sem montar um arquivo externo, defina esta variável de ambiente para o conteúdo serializado equivalente de um arquivo bootstrap do TSM. Não defina BOOTSTRAP_DATA se estiver usando BOOTSTRAP_FILE.
PORT_RANGE_MIN8800 Por razões de desempenho, recomendamos expor apenas 200 portas (8800-9000), em vez do intervalo de portas padrão local do Tableau Server 8000-9000, pois a exposição de 1000 portas no docker pode impactar negativamente o tempo de iniciar da imagem do docker. Consulte Exposição das portas de licenciamento e TSM abaixo para obter mais informações.
PORT_RANGE_MAX9000Recomendamos expor apenas 200 portas (8800-9000), em vez do intervalo de portas padrão local do Tableau Server 8000-9000, pois a exposição de 1000 portas no docker pode impactar negativamente o tempo de iniciar da imagem do docker. Consulte Exposição das portas de licenciamento e TSM abaixo para obter mais informações.
HTTP_PROXY Para encaminhar solicitações http para o servidor proxy, defina essa variável de ambiente para apontar o host proxy. Por exemplo, para definir o proxy como example-host para a porta 8080, HTTP_PROXY=http://example-host:8080/
HTTPS_PROXY Para encaminhar solicitações https para o servidor proxy, defina essa variável de ambiente para apontar o host proxy. Por exemplo, para definir o proxy para example-host para a porta 443, HTTPS_PROXY=http://example-host:443/ certifique-se de usar ‘http’ ao especificar a URL para a variável ambiental HTTPS_PROXY.
NO_PROXY Para ignorar o servidor proxy, especifique as exceções na variável no_proxy. Use esta variável se seu servidor proxy não rotear endereços internos. Além disso, adicione exceções a esta configuração de proxy para garantir que toda a comunicação em um cluster do Tableau Server (se tiver um agora ou se tiver um posteriormente) não seja roteada para o servidor proxy. Digite o nome do host e o endereço IP de cada computador e adicione o nome de host do contêiner. Além disso, inclua o nome canônico do host (localhost) e o endereço IP (127.0.0.1) para o computador local. Por exemplo, para especificar as exceções de um cluster de três nós: NO_PROXY="localhost,127.0.0.1,hostname1,hostname2,hostname3,IP1,IP2,IP3"
COORDINATION_SERVICE_CLIENT_PORTQualquer porta entre PORT_RANGE_MIN e PORT_RANGE_MAX Porta do cliente para o serviço de coordenação.
COORDINATION_SERVICE_PEER_PORTQualquer porta entre PORT_RANGE_MIN e PORT_RANGE_MAX Porta com par para o serviço de coordenação.
COORDINATION_SERVICE_LEADER_PORTQualquer porta entre PORT_RANGE_MIN e PORT_RANGE_MAX Porta líder para o serviço de coordenação.
LICENSE_SERVICE_VENDOR_DAEMON_PORTQualquer porta entre PORT_RANGE_MIN e PORT_RANGE_MAX Porta daemon do fornecedor para o serviço de licenciamento.
AGENT_FILE_TRANSFER_PORTQualquer porta entre PORT_RANGE_MIN e PORT_RANGE_MAX Porta de transferência de arquivo para o serviço de agente.
CONTROLLER_PORTQualquer porta entre PORT_RANGE_MIN e PORT_RANGE_MAX Porta https para o serviço de controlador.
REQUESTED_LEASE_TIMEO padrão está definido atualmente para 4 horas.Defina o tempo de concessão solicitado para as ativações do servidor ATR. Você precisa fornecer o valor de tempo em segundos, e a duração mínima é 14.400 segundos (ou 4 horas). Alterar esse valor geralmente não é recomendado para implantações de produção. No entanto, ao desenvolver ou criar um protótipo com o Tableau Server em um contêiner, você pode definir o valor mínimo para minimizar a perda de ativações.

Variáveis de ambiente somente leitura

São propriedades de ambiente que descrevem algumas das propriedades básicas da imagem do Tableau Server em um Contêiner. Não é recomendado substituir esses valores.

Nome do ambientePadrãoDescrição
PRE_INIT_COMMAND_SCRIPT${DOCKER_CONFIG}/customer-files/pre_init_commandCaminho para um arquivo bash/executável personalizado do usuário a ser executado no Tableau Server antes da inicialização do Tableau Server. Observação: certifique-se de que o arquivo tenha permissão de execução para todos os usuários, caso contrário execute chmod +rx <path-to-pre-init-command-file>
POST_INIT_COMMAND_SCRIPT${DOCKER_CONFIG}/customer-files/post_init_commandCaminho para um arquivo bash/executável personalizado do usuário a ser executado no Tableau Server depois que o servidor estiver totalmente funcional e em execução. Observação: certifique-se de que o arquivo tenha permissão de execução para todos os usuários, caso contrário execute chmod +rx <path-to-post-init-command-file>
DATA_DIR/var/opt/tableau/tableau_serverO diretório de dados em que os bits do Tableau Server devem ser gravados.
INSTALL_DIR/opt/tableau/tableau_serverO diretório de instalação em que os bits de instalação do Tableau Server são gravados.
SERVICE_NAMETableau ServerNome do aplicativo em execução no contêiner.
SERVICE_VERSIONN/AVersão do Tableau Server instalado no contêiner.
DOCKER_CONFIG/dockerDiretório que armazena a configuração do docker específica do Tableau.
ENV_FILE${DOCKER_CONFIG}/customer-files/environmentArquivo que contém todas as substituições de ambiente do usuário.

Variáveis de ambiente de tempo de criação

   
BASE_IMAGE_URLUse o comando da ferramenta de criação:build-image -bA imagem padrão especificada na ferramenta de imagem de criação e Dockerfile é a única imagem base oficialmente compatível. Este parâmetro pode ser usado para extrair uma cópia desta imagem de base específica de um repositório de imagens docker personalizado ou definir uma imagem de base personalizada. Se você optar por usar uma imagem de base definida de forma personalizada, é sua responsabilidade garantir que ela seja baseada em UBI 8 (CentOS 7 ou RHEL 7 para versão 2022.1 e anterior) e contenha os recursos necessários para executar o Tableau Server corretamente. Para obter mais informações sobre imagens de base personalizadas, consulte Tableau Server em um Container - Utilização de uma imagem.
PRIVILEGED_TABLEAU_GID997 A GID do grupo com privilégios do Tableau.
UNPRIVILEGED_TABLEAU_GID998 A GID do grupo sem privilégios do Tableau.
UNPRIVILEGED_TABLEAU_UID999 A UID do usuário que executa processos do Tableau (implantação de um único usuário).
UNPRIVILEGED_USERNAMEtableau O nome da cadeia de caracteres do usuário sem privilégios.
UNPRIVILEGED_GROUP_NAMEtableau O nome da cadeia de caracteres do grupo sem privilégios.
PRIVILEGED_GROUP_NAMEtsmadmin O nome da cadeia de caracteres do grupo com privilégios.
LANGen_US.UTF-8Configuração de localidade

 

Substituições de configuração do Tableau Server

Estas variáveis de ambiente podem ser substituídas pelo Docker para apontar qualquer arquivo no contêiner. Então, se você quiser especificar um ponto de montagem diferente, poderá fazê-lo sem problemas.

O Tableau Server precisa de um arquivo de configuração para iniciar e executar:

CONFIG_FILE=/docker/config/config.json

CONFIG_FILE refere-se a um arquivo de configuração TSM. O formato e o uso são idênticos ao arquivo de configuração descrito no Exemplo de arquivo de configuração.

Comandos de pré-inicialização e pós-inicialização

O Tableau Server executa um script de instalação automatizado projetado para levar o servidor de um estado pré-inicializado para totalmente em execução. No entanto, às vezes você pode querer adicionar seu próprio código de automação no processo de inicialização. Oferecemos dois ganchos para fazer isso, o script de pré-inicialização e o script de pós-inicialização.

Script de pré-inicialização

Esse script será executado imediatamente após os processos básicos do TSM serem inicializados e antes de quaisquer outras etapas de configuração do TSM serem executadas. Isso é útil para executar comandos de configuração do TSM, antes da execução do Tableau Server. Para alterações de configuração feitas nesse ponto, você não precisa aplicar as alterações porque a automação normal do Tableau Server faz isso após a conclusão do script.

Script de pós-inicialização

Esse script será executado depois que todas as outras inicializações do Tableau Server e automação de inicialização forem concluídas. O Tableau Server estará totalmente funcional e em execução quando este script for executado. As alterações de configuração feitas nesse ponto devem ser aplicadas.

Instruções

Para adicionar um script personalizado a um desses ganchos em sua imagem, siga estas etapas:

  1. Grave seu script personalizado
  2. Copie o script personalizado para customer-files do Tableau Server na ferramenta Imagem de criação de contêiners.
  3. Renomeie o script para ser pre_init_command ou post_init_command dependendo de quando você deseja que o script seja executado (você pode usar os dois ganchos independentemente um do outro).
  4. Certifique-se de que as permissões do script sejam executáveis por outro (chmod +rx <command-file> ), ou as permissões de propriedade correspondem ao usuário sem privilégios no contêiner.

Configuração do usuário

O Tableau Server usa um usuário sem privilégios para executar os processos de servidor. Esse usuário é criado dentro do contêiner quando o Tableau Server em um Contêiner está inicializando. Por padrão, o usuário é chamado de tableau com uma UID de 999. Se estiver implantando o Tableau Server em um Contêiner que usa montagens para armazenar dados externamente na máquina de host, talvez prefira alterar a UID para mapear uma UID na máquina de host. O uso de namespaces de usuários do docker é outra maneira de alcançar o mesmo resultado.

Utilitários e ferramentas do Tableau Server em um Contêiner

Todas as funções de utilitários e ferramentas do Tableau Server em um Contêiner são colocadas neste diretório:

/docker/

Gerenciamento de permissões de arquivo

Ao passar qualquer arquivo de configuração para o contêiner, verifique se o usuário que está executando o processo do Tableau Server dentro do contêiner tem permissão para acessar os arquivos. Para evitar a concessão de acesso a todos os usuários dos arquivos que estão sendo montados no contêiner, você pode alterar a UID e/ou o GID do usuário que executa o Tableau Server dentro do contêiner para corresponder ao usuário/proprietário do grupo no host. O usuário do contêiner terá uma UID determinada pela variável de ambiente UNPRIVILEGED_TABLEAU_UID (padrão: 999) e uma GID determinada pela UNPRIVILEGED_TABLEAU_GID (padrão: 998). Esses valores podem ser alterados substituindo a variável de ambiente ou você pode usar um mapeamento de namepace de usuário do Docker para associar a UID/GID no contêiner a uma UID/GID diferente no host.

Gerenciamento de senhas

Certos recursos e opções exigem que as credenciais do usuário sejam fornecidas como configuração no contêiner. As credenciais de administrador inicial do Tableau são exemplos de credenciais opcionais que ativam recursos adicionais. Nesses casos, sempre fornecemos dois métodos de definição de senha. Primeiro, você pode fornecer um arquivo com a senha e um caminho do arquivo para uma variável de ambiente. Como alternativa, você pode definir uma variável de ambiente para armazenar a senha diretamente.

A opção mais segura e recomendada é fornecer a senha como caminho do arquivo para o contêiner. Fornecer um segredo em um arquivo é um padrão bem aceito no Docker, no Docker Swarm, no Kubernetes e em outros sistemas de orquestração de contêineres. O armazenamento de senhas diretamente nas variáveis de ambiente é um padrão comum, portanto, aceitável, porém normalmente significa que a senha fica menos segura.

Exemplos

Vamos dar uma olhada na credencial TABLEAU_USERNAME. Você pode fornecer a senha para o usuário como TABLEAU_PASSWORD ou TABLEAU_PASSWORD_FILE. Ao executar uma imagem do Tableau Server em um Contêiner, você pode fornecer uma variável de ambiente para fornecer a senha.

A variável de ambiente do arquivo de senha espera um caminho do arquivo dentro do contêiner para um arquivo de segredos válido. O arquivo de segredos deve ser uma única linha com o segredo.

Exemplo de uso de um arquivo de segredos
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>
Exemplo de conteúdo de um arquivo de segredos
mypassword23879172

Como alternativa, é possível o armazenamento direto da senha em em texto simples sem formatação na variável de ambiente da senha. Essa abordagem é considerada menos segura, porém é mais conveniente e um padrão comum com contêineres.

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

Configurar o Tableau Server depois de ele estar em execução

Depois que o Tableau Server foi inicializado e está em execução, a melhor maneira de interagir com o servidor é usar a ferramenta CLI do TSM. Essa é a ferramenta clássica do Tableau Server para executar tarefas administrativas. No futuro, ofereceremos suporte ao Tableau Server reagindo às alterações na configuração estática fornecida na variável de ambiente CONFIG_FILE entre as execuções. Mas, por enquanto, após a inicialização do Tableau Server, você deve interagir com o servidor usando as ferramentas clássicas.

Para obter informações sobre a linha de comando do TSM, consulte Referência da linha de comando tsm.

Status

Existem duas verificações básicas de status para o Tableau Server fornecidas na imagem. Elas podem ser usadas para verificar a atividade e a disponibilidade do servidor.

Verificação de atividade

A verificação de atividade indica se os serviços do TSM estão ou não em execução. Significa que ela indica se os serviços orquestrados do Tableau Server estão funcionando corretamente. Essa verificação pode ser encontrada aqui:

/docker/alive-check

Outra opção é expor a porta 8850 que o serviço Tableau Controller executa para fornecer funções administrativas por meio de um navegador da Web. É possível verificar a integridade do serviço periodicamente por meio de verificações de integridade do tcp.

Verificação de disponibilidade

A verificação de disponibilidade indica se o Tableau Server está funcionando e se os serviços da empresa estão prontos para receber o tráfego. Isso pode ser determinado usando o script a seguir:

/docker/server-ready-check

Outra opção é usar as verificações de integridade do tcp na porta 8080 (ou em qualquer outra porta de que o Tableau Server esteja destinado a receber o tráfego). Às vezes, esse tipo de verificação de integridade do tcp é mais confiável que a verificação pronta para servidor, pois a verificação pronta para servidor é baseada no status do serviço relatado ao TSM, que às vezes pode ser atrasado à medida que o estado do serviço é atualizado.

Dados persistentes

Muitas vezes, com os contêineres, queremos poder desligá-los e em seguida ligá-los novamente sem perder nenhuma informação importante. As imagens do Tableau Server em um Contêiner aceitam essa ação, pois você pode montar determinados diretórios fora do contêiner para destruir ou remover completamente as instâncias do contêiner e ainda preservam seus dados. Esses dados podem ser usados para iniciar outra instância do contêiner e retomar de onde o contêiner anterior parou.

As seções a seguir cobrem os diferentes tipos de estado gerenciado.

Dados do Tableau Server

Os dados do Server são todos armazenados no diretório de dados. O diretório de dados é onde todos os dados relacionados ao usuário e os metadados do tempo de execução do serviço são armazenados. Externalizar esses dados significa que os dados do usuário podem persistir mesmo após a remoção completa do Tableau Server em um Contêiner.

Esses dados são transferíveis e podem ser usados com o sistema de armazenamento em bloco gerenciado em nuvem, como volumes EBS da AWS.

Quando o Tableau Server em um contêiner é usado em conjunto com o Armazenamento de arquivos externo, o diretório de dados deve estar no EBS. Não use um sistema de arquivos de rede (por exemplo, NFS) para o diretório de dados. O diretório do Armazenamento de arquivo externo pode estar em um volume NFS.

Hostnames estáticos

O Tableau Server não lida bem com alterações de hostnames dinâmicos, por isso é importante especificar o hostname interno do contêiner para que ele seja coerente entre as execuções do contêiner. O hostname dentro de um contêiner é arbitrário e pode ser definido como qualquer valor. O uso da opção --hostname permite especificar o hostname interno do contêiner. Os contêineres subsequentes que usam os mesmos dados persistentes devem ser executados usando o mesmo valor de hostname.

Isso não deve ser confundido com instalações de servidor de vários nós. Nesses, cada um dos nós adicionais deve receber um nome de host diferente. O que importa é que, quando um único contêiner for reiniciado, o contêiner substituto que usará os mesmos dados persistentes para esse caso deve ter um hostname correspondente.

Exemplo completo

Aqui está um exemplo em que o diretório de dados é montado fora do contêiner.

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 restauração

O Tableau Server em um Contêiner aceita a criar backups restauração do Tableau Server com base em um arquivo de backup (.tsbak). O primeiro passo é colocar uma imagem do Tableau Server em um Contêiner em execução, montar o arquivo de backup (.tsbak) na imagem e definir a variável de ambiente BACKUP_FILE com o caminho do arquivo para o arquivo de backup. Além disso, você deve fornecer o arquivo de configuração json de backup na variável de ambiente CONFIG_FILE. O Tableau Server em um Contêiner automatiza o processo de restauração, mesmo para implantações de vários nós. Se em algum ponto essa automação falhar em restaurar totalmente o sistema, você sempre pode recorrer às ferramentas e processos clássicos do Tableau Server, como comandos do TSM, para interagir com o Tableau Server da mesma forma que faria com uma implantação sem contêiner.

Para obter mais informações sobre como executar um backup e uma restauração de uma instância padrão do Tableau Server consulte Executar um backup e uma restauração completos do Tableau Server.

Backup no contêiner do Tableau Server

  1. Abra o shell dentro do Tableau Server em uma versão de contêiner A. Crie backup de repositório e arquivos de backup de topologia e configuração.

    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. Copie os arquivos criados na etapa anterior para a máquina host. Altere a permissão do arquivo para ter permissão de leitura total definida para ambos os arquivos.

    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. Armazene artefatos de backup em um local seguro. Siga as etapas de restauração abaixo quando necessário.

Restaurar dentro do contêiner do Tableau Server

Os backups de qualquer versão compatível do Tableau Server (contêiner e não contêiner) podem ser restaurados dentro do contêiner do Tableau Server.

Pré-requisitos
  • Arquivo de backup do Tableau Server.
  • Arquivo json de configuração contendo informações de configuração e topologia.
  • Arquivo json de configuração contendo informações de armazenamento de identidade.
  • Observação: provavelmente você precisará alterar os arquivos de backup para ter o conjunto de permissões de leitura. Os arquivos de backup normalmente são bloqueados para o usuário que criou o arquivo, e ele será diferente do usuário do Tableau em execução no contêiner.
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>

Observações:

  • Se estiver restaurando um sistema de vários nós, você também deve iniciar os outros nós para que a automação de restauração funcione. Consulte a seção Tableau Server em um Contêiner de vários nós deste documento para obter mais informações. Apenas o nó inicial requer o arquivo de backup, arquivo de configuração de backup e licença.
  • Os arquivos de backup só precisam ser fornecidos na primeira execução do contêiner. Assim que o servidor for inicializado, você não precisará continuar montando os arquivos de backup.

 

Migrar do Tableau Server para o Tableau Server em um Contêiner

Para migrar de uma instalação padrão do Tableau Server para o Tableau Server em um Contêiner, você deve usar a técnica de backup e restauração. Os backups de qualquer versão compatível do Tableau Server (contêiner e não contêiner) podem ser restaurados dentro do contêiner do Tableau Server. Consulte a seção Restaurar dentro do contêiner do Tableau Server acima para obter mais informações.

Atualização das versões do Tableau Server

Há duas maneiras de fazer a atualização do Tableau Server. O método Upgrade-Image listado nesta seção é a solução recomendada. No entanto, como alternativa, também é possível atualizar o Tableau Server usando Backup/Restaurar.

Atualização através do método Upgrade-Image

A imagem de atualização é uma imagem Docker que pode ser criada usando o script build-upgrade-image da ferramenta de configuração Tableau Server em um Contêiner. O objetivo da imagem é apenas atualizar o Tableau Server em um contêiner atualmente em execução.

Siga as etapas abaixo para fazer a atualização.

  1. Crie uma imagem de atualização usando o script build-upgrade-image. O rpm do tableau server da nova versão é necessário para criar este contêiner.
  2. Desligue o contêiner que está executando o Tableau Server.
  3. Inicie a imagem de atualização, montando o mesmo diretório de dados do encerramento do contêiner na etapa anterior.
  4. O processo de atualização demora um pouco, mas o servidor Tableau será atualizado, verifique os registros do docker para a atualização do processo de atualização. O contêiner será encerrado após o processo de atualização.
  5. Inicie um novo Tableau Server em um Contêiner de versão mais recente. Monte o mesmo diretório das etapas anteriores.

Exemplo:

Digamos que temos um Tableau Server em um contêiner executando o Tableau Server. Estas são algumas suposições feitas neste exemplo:

  • Tenho dados valiosos e não quero perdê-los durante o processo de atualização. O diretório de dados precisa ser mantido fora do contêiner.
  • O contêiner é denominado my-server. A imagem docker é nomeada como tableau-server: versionA.
  • A versão do servidor my-server está usando atualmente a versão A.
  • A versão do servidor que desejo atualizar é a versão B.
  1. Obtenha o rpm do servidor Tableau para a versão B. Crie upgrade-image.

    # 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. Pare o contêiner my-server.

    docker stop my-server -t 120
  3. Inicie a imagem recém-criada tableau-server-upgrade: versionAB. Monte o mesmo diretório de dados do contêiner interrompido anteriormente. O contêiner inicia o processo de atualização para a versão B.

    docker run --name my-upgrade-server \
    -v <data-dir mount from previous step>:/var/opt/tableau \
    ...
    tableau-server-upgrade:versionAB
  4. O contêiner irá parar assim que a atualização for concluída. Verifique os registros do docker para obter os registros do processo de atualização e certifique-se de que o processo de atualização seja um sucesso. Você também pode verificar o código de saída do contêiner do docker para garantir que o processo de atualização seja concluído com êxito.

    # 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. Pare o contêiner my-upgrade-server. Inicie a nova versão B da imagem do Tableau Server em um Contêiner e monte o diretório de dados do contêiner my-upgrade-server interrompido

    # 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

Atualização pelo método Backup-Restore

Siga as etapas na seção Backup e restauração deste documento. O único ajuste necessário para transformar uma operação de backup-restore em uma operação de atualização é restaurar o backup em uma nova versão do Tableau Server.

Tableau Server em um Contêiner de vários nós

O Tableau Server em um Contêiner de vários nós refere-se a para uma única implantação do Tableau Server distribuída em vários nós. Os vários nós nesse contexto são os mesmos nós do Tableau Server, onde determinados processos podem ser executados em outros nós para aumentar a capacidade, a força de cálculo etc. Isso é diferente de iniciar vários Tableau Servers em um Contêiner individuais, em que cada contêiner é um servidor independente com os próprios dados distintos.

O Tableau Server de vários nós em um contêiner funciona como uma instalação de vários nós do Tableau Server sem contêiner e usa o mesmo mecanismo subjacente. Para obter uma visão geral da configuração de uma instalação de vários nós do Tableau Server sem contêiner, consulte Instalações distribuída e de alta disponibilidade do Tableau Server.

Vejamos um exemplo:

Uso básico de vários nós

Nó inicial

Opção 1: use se a configuração do servidor (CONFIG_FILE ) especifica uma topologia de vários nós:

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>

Opção 2: use se desejar uma implantação de vários nós, mesmo se a configuração do servidor não especificar a topologia de vários nós:

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>
Nó adicional
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>

Exposição das portas de licenciamento e TSM

Para que os nós de trabalho se comuniquem com a instância principal, precisamos abrir portas adicionais. É necessário permitir o tráfego de outros nós na instância principal do Tableau Server em um Contêiner nos seguintes intervalos de porta:

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

Tenha cuidado com a quantidade de portas que você abre: recomendamos expor apenas 200 portas, 8800-9000, em vez do intervalo de portas padrão do Tableau Server de 8000-9000, porque expor 1000 portas no Docker pode prejudicar o desempenho e o tempo de inicialização da imagem Docker. Você pode usar um intervalo de portas menor ou maior, dependendo da complexidade do topologia do Tableau Server. Geralmente, não recomendamos expor menos de 100 portas, caso contrário, você corre o risco de os serviços em um cluster não conseguirem se comunicar com determinados serviços. Se você especificar seu próprio intervalo de portas, exponha a porta 8850 (ela está implicitamente incluída em 8800-9000). O intervalo de portas é especificado ao definir as variáveis de ambiente PORT_RANGE_MIN e PORT_RANGE_MAX.

Nós adicionais também precisam expor o intervalo de Portas de serviço (8800-9000), mas não o intervalo de Portas de licenciamento. É importante observar que esses intervalos de portas são apenas para viabilizar a comunicação entre processos do Tableau Server. Essas portas não devem ser expostas a usuários ou outras máquinas que não sejam computadores que executam o Tableau Server em um Contêiner no mesmo cluster de vários nós.

Essas regras de porta são coerentes com a documentação do firewall do Tableau Server. Para obter mais informações, consulte Configurar o firewall local.

Resolução de hostnames

Os vários nós do Tableau Server em um Contêiner precisam ser executados com nomes de host consistentes porque o Tableau Server não lida com alterações dinâmicas de nome de host. Ao executar os vários nós do Tableau Server, esses nós vão se comunicar. Os nós do Tableau Server tentarão se comunicar usando os nomes de host que o Tableau Server em um Contêiner de vários nós está configurado para usar. Por exemplo, se você executar seu nó inicial com um nome de host "inicial", nós adicionais tentarão enviar tráfego para um host chamado "inicial". Existem várias maneiras de configurar imagens para resolver nomes de host para outras imagens. O arquivo /etc/hosts em cada contêiner para mapear o nome do host do contêiner arbitrário (ou seja, "inicial") para o endereço IP que está realmente executando o outro contêiner.

Nós adicionais do bootstrap

O contêiner inicial do Tableau Server que é executado como parte de um cluster gera um arquivo de bootstrap que os nós adicionais subsequentes precisam usar para ingressar no cluster. Depois que nós adicionais são registrados na topologia do cluster, você pode começar a atribuir processos do Tableau Server para execução neles. Este processo pode ser totalmente automatizado. Se você forneceu um arquivo de configuração do Tableau Server (normalmente fornecido pela montagem de um arquivo de configuração no caminho de arquivo especificado porCONFIG_FILE, caminho padrão: /docker/config/config.json) que especifica uma topologia de vários nós, o nó inicial aguardará automaticamente até que todos os nós adicionais tenham sido registrados. Depois de registrada, a topologia de vários nós será aplicada em todo o cluster.

Depois que o nó inicial no Tableau Server em um Contêiner estiver executando totalmente o Tableau Server, você poderá fazer com que ele gere um arquivo de bootstrap para nós adicionais:

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

Este comando é chamado automaticamente para você, se definir o valor de ALWAYS_WRITE_BOOTSTRAP_FILE como 1.

Considerações de segurança

O arquivo bootstrap contém segredos de servidor que permitem estabelecer uma sessão do TSM com o nó inicial. Isso significa que, se um usuário mal-intencionado obtiver o arquivo, poderá enviar comandos do TSM para o servidor durante um período. O próprio arquivo também contém dados que permitiriam a descriptografia de segredos de configuração do servidor. Esse arquivo deve ser tratado como confidencial e deve ser acessível apenas por serviços e sistemas diretamente relacionados ao estabelecimento de uma implantação de vários nós.

Expiração do bootstrap

Os arquivos bootstrap carregam uma sessão de tempo limitado que dura 2 horas. Nessa janela, os nós adicionais não precisarão fornecer credenciais ao nó inicial para se juntarem como um nó adicional. É possível usar um arquivo bootstrap, depois que a sessão expirar, no entanto, isso significaria a necessidade de fornecer credenciais ao nó inicial.

Transferência do arquivo bootstrap

O arquivo bootstrap precisa ser disponibilizado para e consumido pelo Tableau Server em um Contêiner dos nós de trabalho. O arquivo bootstrap precisa ser compartilhado com todos os outros Tableau Server em um Contêiner dos nós que você deseja como nós de trabalho para esta implantação. Isso pode ser feito de diferentes maneiras.

Transferir o arquivo por uma rede segura

Parte da automação no nó inicial pode envolver o envio do arquivo diretamente para nós adicionais. Isso deve ser feito usando um cliente/ferramenta de transferência de arquivos seguro. Provavelmente, isso é mais útil nos cenários em que vários arquivos bootstrap podem ser gerados ao longo da vida do nó inicial (talvez para adicionar mais nós adicionais posteriormente).

Usar uma montagem de arquivo de rede

Uma montagem de arquivo de rede compartilhada por todos os contêineres em determinada implantação é outra opção.

Outro

O objetivo final é transferir com segurança um arquivo produzido por um contêiner e transferi-lo para um conjunto específico de outros contêineres. Portanto, qualquer método que faça isso e seja seguro é suficiente.

Inicialização de nós adicionais

Para criar um nó adicional do Tableau Server em um Contêiner, basta iniciar o contêiner com a variável de ambiente BOOTSTRAP_INSTALL definida como 1.

Isso informa à instância do contêiner do Tableau Server em um Contêiner para esperar até que haja um arquivo bootstrap no caminho especificado pela variável de ambiente BOOTSTRAP_FILE (que também é configurável). Consulte a tabela de variáveis de ambiente para exibir o caminho do arquivo padrão. Para esclarecer, se você executar uma imagem de contêiner do Tableau Server no “modo de nó adicional”, o contêiner não iniciará supervisord ou qualquer outro processo que não seja um script de bash executado como pid 1, que verifica a cada 5 segundos se o arquivo bootstrap existe. Uma vez que o arquivo esteja presente, o Tableau Server em um Contêiner passará a ser inicializado como nó adicional.

Configuração de nós adicionais

A configuração de nós adicionais para executar uma topologia específica funciona da mesma forma a implantação do Tableau Server normal. Também vem com os mesmos requisitos, o que significa que adicionar novos processos em um nó pode exigir uma reinicialização em todo o cluster. Para obter mais informações, consulte Configurar nós.

Considerações sobre os recursos do Tableau Server

Alguns recursos do Tableau Server funcionam de maneira diferente em contêineres. Esta seção cobre recursos específicos que têm considerações especiais ou diferentes em um ambiente de contêiner.

Active Directory

Definir controlador de domínio AD

Se você planeja usar o Active Directory como um armazenamento de identidade para páginas e sites do Tableau Server, há uma consideração adicional a ser considerada. Os Tableau Servers em execução em ambientes Linux determinam dinamicamente com qual controlador de domínio AD se comunicar examinando sua sub-rede IP. Os contêineres podem ser atribuídos a endereços IP arbitrários e, neste caso, o Tableau Server não será necessariamente capaz de usar seu endereço IP para encontrar um controlador de domínio apropriado. Por esse motivo, pode ser necessário configurar um controlador de domínio/nome de host específico com o qual o Tableau Server se comunique. Para resolver isso, siga essas etapas:

  1. Determine qual controlador de domínio você deseja que o Tableau Server use e obtenha o nome do host.
  2. Defina a chave de configuraçãowgserver.domain.ldap.hostname ao nome do host usando as opções de configuração padrão do administrador do Tableau Server:

    • Defina o valor no arquivo de configuração jsonCONFIG_FILE .
    • Use o comando configuração do TSM

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

Importar certificado AD para o reposistório de chaves do Tableau Server

Por padrão, o Tableau Server em um contêiner se comunica com o AD via StartTLS, sempre que o vínculo simples é usado. Portanto, quando o contêiner é executado nesta configuração, é necessário importar o certificado do servidor AD para o repositório de chaves do Tableau Server Keystore, caso contrário, a inicialização do servidor falhará. Para resolver isso, siga essas etapas:

  1. Crie um script pre-init-command (verifique a seção Script de pré-inicialização). Adicione a seguinte linha para acrescentar o certificado AD ao repositório de chaves do 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. Monte o certificado do servidor AD no caminho de arquivo fornecido para o parâmetro -file no script pre-init-command.

Como alternativa, a configuração padrão para se comunicar com o AD via StartTLS pode ser desabilitada. Defina wgserver.domain.ldap.starttls.enabled para false para desativar o StartTLS. Mas não é recomendado.

Exemplos de configuração de implantação

Docker

Uso básico do Tableau Server em um Contêiner
docker run \
-e LICENSE_KEY=<key>
-p 8080:8080
-d <Tableau Server in a Container image ID or tag>
Uso básico do Tableau Server em um Contêiner com Usuário administrador inicial automatizado
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>
Único modo do TSM
docker run \
-e TSM_ONLY=1 \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
Uso básico de vários nós
Nó inicial

Opção 1: use se a configuração do servidor (CONFIG_FILE ) especifica uma topologia de vários nós:

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>

Opção 2: use se desejar uma implantação de vários nós, mesmo se a configuração do servidor não especificar a topologia de vários nós:

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>
Nó adicional
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>
Externalizar o uso de dados
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>
Uso básico do init-container

Contêiner Init

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>

Contêiner de execução

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>
Restauração básica do nó único de backup
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>

 

 

Agradecemos seu feedback!Seu feedback foi enviado. Obrigado!