為容器安裝針對 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 站台的下載(連結在新視窗開啟)頁面下載 .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(舊版)移轉到線上排程

  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要為背景工作指定的名稱。
      --siteURI 中顯示的站台名稱。不要包含 URI 路徑。
      --patTokenFilePAT 文字檔案的檔案名稱和路徑。
      --poolId(可選)指派給用戶端的集區 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 用戶端集區

使用集區識別碼

使用 TabBridgeClientWorker 命令啟動 Bridge Worker 時,poolId 是可選的。但是,用戶端的行為取決於用戶端是否註冊到站台以及用戶端是否指派到集區。Tableau Bridge 在任何給定時間只能連線或註冊到一個 Tableau Cloud 站台。登出並重新登入時,用戶端將註冊到站台。

如果未提供集區識別碼

  • 如果Bridge用戶端已經註冊,則用戶端狀態保持不變:
    • 如果用戶端已指派給某個集區,則它仍然指派給該集區,無論它是命名集區還是預設集區。
    • 如果用戶端未指派到集區,它將保持未指派狀態。
  • 如果 Bridge 用戶端是新的(您從未登入 Tableau Cloud),則該用戶端將會指派到預設集區。

如果提供集區識別碼

  • 如果提供了集區識別碼並且正確,則將 Bridge 用戶端指派給指定集區。
  • 如果提供的集區識別碼不正確:
    • 如果 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 驅動程式失敗

若未使用 UTF-8 地區設定設定 LC_MESSAGES,可能會遇到讀取和顯示問題。可以編輯 /etc/profile 檔案,或使用下列命令重新啟動背景工作

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

感謝您的意見反應!已成功提交您的意見回饋。謝謝!