为容器安装 Linux 版 Bridge

Linux 版 Bridge 提供容器化工作负载的可扩展性和简化的管理功能。以下说明描述了运行适用于 Linux 版 Bridge 的轻量级方法,并假设您具有 Docker 的基本知识并了解生态系统中使用的关键术语。

从 Docker 容器安装并运行 Bridge

若要在 Linux 上使用 Bridge,您必须创建自定义 Docker 映像,安装 RPM 包,然后从容器映像内部运行 Bridge。

先决条件

  • 安装了 Docker 引擎。对于 docker 容器的基础映像,Linux 版 Bridge 在以下操作系统上受支持:
  • Tableau Bridge RPM 包。
  • 有 Linux 操作系统经验。
  • 基本的 shell 脚本编写和 Docker 经验。
  • Tableau 站点管理员个人访问令牌 (PAT)。

步骤 1:创建 Bridge 容器映像

以下步骤是构建 Linux 版 Bridge 基础映像上的基本说明。有关详细信息,请参见 Docker 概述

安装 Docker 后,唯一有权运行命令的用户是 root。您可以使用 sudo 运行 Docker 命令,也可以由 Docker 组的成员运行。

  1. 从 Tableau 网站上的下载(链接在新窗口中打开)页面下载 Bridge .rpm 包。
  2. (可选)您可以编辑配置设置以更改客户端的运行方式。有关详细信息,请参见“更改 Bridge 客户端设置”。
  3. 创建工作目录并将 .rpm 包移入目录中。

    cd ~

    $ mkdir Docker

    $ cd Docker

    $ mv <RPM_location>.rpm .

  4. 在工作目录中创建 Docker 文件。例如:

    $ touch Dockerfile

  5. 编辑 Docker 文件并添加用于运行 yum update. 的命令

    Red Hat 示例

    对于 Red Hat 8:

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

    RUN yum -y update

    对于 Red Hat 7:

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

    RUN yum -y update

    Centos 示例

    对于 CentOS 7:

    FROM centos:7

    RUN yum -y update

  6. 编辑 Docker 文件并添加命令以复制 Bridge RPM 包、安装该包,然后从映像中将其删除

    COPY <your_bridge_rpm>.rpm /<path_of_container>

    RUN ACCEPT_EULA=y yum install -y $(find . -name *.rpm) && rm -rf *.rpm

  7. 使用 docker build 命令构建新的容器映像。以下命令在当前目录中构建一个映像,并用单词 ​"bridge_base" 标记它。

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

  8. 检查您创建的基础映像是否显示在映像列表中。

    docker images | grep bridge

步骤 2:安装驱动程序

Bridge 客户端需要驱动程序来促进专用网络数据和 Tableau Cloud 之间的连接。对于驱动程序,请转至驱动程序下载,选择数据源,然后选择“Linux”作为操作系统。

  1. 可以在启动基础映像后以交互方式完成安装,也可以将单独的 Dockerfile 编写为基础映像之上的一层。

    示例

    将 MySQL 驱动程序 RPM 复制到该目录后,您可以使用以下 Dockerfile 创建一个单独的工作目录,用于对 MySQL 驱动程序进行分层:

    # Using previously built bridge_base image

    FROM bridge_base COPY mysql-connector-odbc-8.0.26-1.el7.x86_64.rpm .

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

    示例

    安装 postgres JDBC 驱动程序。此操作也可以在单独的 Dockerfile 中完成。

    # Using previously built bridge_base image

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

    示例

    安装 Amazon Redshift 驱动程序。

    # Using previously built bridge_base image

    FROM bridge_base

    yum install -y unixODBC

    yum --nogpgcheck localinstall -y

    AmazonRedshiftODBC-64-bit-1.4.59.1000-1.x86_64.rpm

    odbcinst -i -d -f /opt/amazon/redshiftodbc/Setup/odbcinst.ini

  2. 创建新映像:
  3. docker image build -t bridge_final .

    bridge_final 映像使用上一步中的缓存映像,并自动为所有 Bridge 实例安装驱动程序。如果您有映像存储库,则可以将映像发布到存储库并将映像分发到要运行 Bridge 的所有计算机。

步骤 3:运行 Bridge 容器

现在您已经构建了基础映像,可以使用多种方法部署它。基本步骤包括:

  1. 启动 Bridge 容器的实例。
  2. 登录并启动工作线程。
  3. 将代理分配到池。

注意:Linux 版 Bridge 不支持 Bridge(旧版计划)。有关详细信息,请参见从 Bridge(旧版)计划迁移到 Online 计划

  1. 在开始部署容器之前,请创建个人访问令牌 (PAT)。登录到代理需要 PAT。

    以下令牌名称必须匹配:patTokenId(运行 TabBridgeClientWorker 命令时使用)、JSON 文件中的令牌名称,以及在 Tableau Cloud 中生成 PAT 时的令牌名称。

  2. 使用 ENV LC_ALL en_US.UTF-8 在 Docker 中设置区域设置。您还可以通过将以下内容添加到 /etc/profile 文件来设置区域设置。
  3. export LANG="en_US.utf8"

    export LANGUAGE="en_US.utf8"

    export LC_ALL="en_US.utf8"

  4. 启动 Bridge 容器的实例。您可以通过多种方式设置和启动容器映像。以下交互式方法说明了启动工作线程所需的步骤。当您退出时,容器停止运行。
    1. 使用以下方法以 root 用户身份移动到容器的 shell 提示符。其余命令在容器的此交互式会话的上下文中执行。

      docker container run -it bridge_final /bin/bash

    2. 将 PAT 令牌添加到 JSON 格式的平面文件中。例如:

      /home/jSmith/Documents/MyTokenFile.txt

    3. 令牌语法示例:

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

    4. 更改文件权限以限制当前用户的访问。例如:

      chmod 600 MyTokenFile.txt

    5. 使用 TabBridgeClientWorker 命令启动工作线程,并提供以下命令选项:

      命令描述
      TabBridgeClientWorker -e启动 Bridge 客户端工作线程的命令。-e 参数是必需的,并在前台运行命令。目前,不支持后台模式。
      --patTokenIdPAT 的 ID。有关详细信息,请参见个人访问令牌
      --userEmail与 PAT 关联的用户电子邮件。
      --client您想要为工作线程指定的名称。
      --site显示在 URI 中的站点名称。不要包含 URI 路径。
      --patTokenFilePAT 文本文件的文件名和路径。
      --poolId(可选)分配给客户端的池 ID。请参见使用池 ID

      命令示例

      /opt/tableau/tableau_bridge/bin/TabBridgeClientWorker -e --patTokenId="Mytoken" --userEmail="admin@tableau.com" --client="myBridgeAgent" --site="mySite" --patTokenFile="/home/jSmith/Documents/MyTokenFile.txt" --poolId="1091bfe4-604d-402a-b41c-29ae4b85ec94"
  5. 以下消息表明代理已启动。“Service started: ...”

    使用 Control-C 停止工作线程。您可以为容器映像启动一个新的工作线程,而不是重新启动工作线程。

    如果您没有使用命令选项 --poolId 分配池,则将客户端分配到默认池。如果您想要将客户端与特定域或 VConns 一起使用,您可以使用 UI 将客户端分配到命名池。Tableau Cloud“主页”>“设置”>“Bridge”上的菜单。有关详细信息,请参见配置 Bridge 客户端池

使用池 ID

使用 TabBridgeClientWorker 命令启动 Bridge 工作线程时,poolId 是可选的。但是,客户端的行为取决于客户端是否注册到站点以及客户端是否分配到池。Tableau Bridge 在任何给定时间只能连接或注册到一个 Tableau Cloud 站点。当您注销并重新登录时,客户端将注册到站点。

如果未提供池 ID

  • 如果 Bridge 客户端已经注册,则客户端状态保持不变:
    • 如果客户端已分配给某个池,则它仍然分配给该池,无论它是指定池还是默认池。
    • 如果客户端未分配到池,它将保持未分配状态。
  • 如果 Bridge 客户端是新的(您从未登录到 Tableau Cloud),则该客户端将分配到默认池。

如果提供了池 ID

  • 如果提供了池 ID 并且正确,则将 Bridge 客户端分配给指定池。
  • 如果提供了池 ID 且不正确:
    • 如果 Bridge 客户端未注册,则会将客户端分配到默认池。
    • 如果 Bridge 客户端已注册,则客户端状态保持不变,无论是指定池、默认池还是未分配。

查找池 ID

若要查找池 ID,请转至“设置”>“Bridge”页面,然后单击池的名称。例如:

疑难解答

使用日志文件

日志文件存储在用户的 My_Tableau_Bridge_Repository/Logs文件夹中。若要在 tmp 文件夹中保存日志,请运行以下命令:

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

在此示例中,该位置由 /tmp/bridge_logs 指定。使用 docker 命令可以简化日志文件的保存,并避免手动将 Bridge 日志文件从容器复制到本地文件系统。

MySQL 驱动程序失败

如果 LC_MESSAGES 没有设置 UTF-8 区域设置,您可能会遇到读取和显示问题。您可以编辑 /etc/profile 文件,或使用以下命令重新启动工作线程

LC_ALL=en_US.UTF-8 /opt/tableau/tableau_bridge/bin/TabBridgeClientWorker -e

感谢您的反馈!您的反馈已成功提交。谢谢!