为容器安装 Linux 版 Bridge

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

从 Docker 容器安装并运行 Bridge

容器上的 Linux 版 Bridge 要求主机计算机具有静态 IP 地址,以保持与 Tableau Cloud 的安全连接。不支持具有动态 IP 的无服务器解决方案。您可以在一台计算机上部署多个 Linux 版 Bridge 容器。

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

先决条件

  • 安装了 Docker 引擎。对于 docker 容器的基础映像,Linux 版 Bridge 在以下操作系统上受支持:
    • Amazon Linux 2023
    • Red Hat Enterprise Linux 8
    • Red Hat Enterpirse Linux 9

    注意:不支持 CentOS。

  • 从 Tableau 网站上的下载(链接在新窗口中打开)页面下载最新的 Tableau Bridge RPM 软件包。
  • 有 Linux 操作系统经验。
  • 基本的 shell 脚本编写。
  • Docker 经验。
  • Tableau 站点管理员个人访问令牌 (PAT)。您必须为每个 Bridge 客户端使用专用的 PAT 令牌。
  • 如果您的 Bridge 主机将连接到远程共享,则需要在 Docker 文件中为 UNC 映射创建一个部分。请参见连接到平面文件和基于文件的数据提取

步骤 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

  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.el8.x86_64.rpm

    RUN yum install -y mysql-connector-odbc-8.0.26-1.el8.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-2.1.7.0.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。Tableau Cloud 支持每个用户 104 个 PAT。我们建议每个客户端使用一个 PAT 令牌。

    注意:以下令牌名称必须匹配:patTokenId(运行 run-bridge.sh 命令时使用)、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. 使用 run-bridge.sh 命令启动工作线程,并提供以下命令选项:

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

      命令示例

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

      注意:如果您正在安装旧版本的 Linux 版 Bridge,则必须运行不同的命令来启动工作线程。对于 2024.2 及更低版本,使用 TabBridgeClientWorker 命令(而不是 run-bridge.sh 命令)启动工作线程。所有命令选项都是相同的。

  5. 以下消息表明代理已启动。“Service started: ...”

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

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

使用池 ID

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

如果未提供池 ID

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

如果提供了池 ID

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

查找池 ID

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

升级 Linux 版 Bridge 客户端

与 Bridge 的最新版本保持同步可确保您可以利用 Bridge 客户端的每个新版本附带的最新功能和修复。

您不能为容器运行就地升级。相反,您必须使用最新的 Bridge 二进制文件构建新的容器映像,然后将 Bridge 客户端与以前的版本并排添加到池中。验证功能后,您随后移除了之前的 Bridge 客户端。请按以下步骤操作:

  1. 按照上文所述安装并配置新的 Tableau Bridge 客户端。

  2. 将新的 Bridge 客户端添加到相关池。请参见配置池

  3. 在继续下一步之前,请监控 Bridge 作业的运行状况以验证稳定性。

  4. 从池中移除之前的 Bridge 客户端。打开池,找到要移除的客户端计算机,然后单击“删除”

  5. 等待 Bridge 客户端上的数据提取刷新超时过程完成。默认超时为 24 小时。有关详细信息,请参见dataSourceRefreshSettings

  6. 刷新超时期限过后,您可以移除 Bridge 客户端的先前实例。

疑难解答

安装旧版本

如果您正在安装旧版本的 Linux 版 Bridge,则必须运行不同的命令来启动工作线程。对于 2024.2 及更低版本,使用 TabBridgeClientWorker 命令(而不是 run-bridge.sh 命令)启动工作线程。

所有命令选项与上面步骤 3:运行 Bridge 容器中记录的相同。

例如: 

/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"

工作线程启动错误

在某些情况下,运行 run-bridge.sh 命令后会出现以下错误:

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

在大多数情况下,使用原始选项和 -e 选项重新运行命令可修复该问题。-e 选项在前台运行 Bridge 工作线程服务。

如果在后台模式下运行 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/run-bridge.sh -e

由于个人访问令牌过期,Bridge 客户端意外停止

当个人访问令牌 (PAT) 过期时,它将导致 Bridge 客户端与 Tableau Cloud 断开连接,并可能导致容器关闭。您可以从 Bridge 客户端通过在前台执行 Start 命令来验证您的 PAT 是否已过期。如果 PAT 已过期,您将看到以下错误:

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

如果您是原始 PAT 所有者,您还可以通过访问 Tableau Cloud 中的“管理帐户设置”来验证 PAT 是否已过期。为了解决该问题,您需要生成一个新的 PAT 并按照上面的步骤 3:运行 Bridge 容器步骤操作。

嵌入式数据提取和嵌入式实时连接超时错误

Linux 版 Bridge 的 24.3 版本为嵌入式数据提取和嵌入式实时连接提供了显著的性能改进。如果您在使用以前的版本时遇到超时错误,我们建议您升级到 Linux 版 Bridge 24.3+ 版本。如果这不能解决问题,请从工作簿中单独发布数据源。

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