Bridge for Linux をコンテナ用にインストールする

Bridge for Linux は、コンテナ化されたワークロードのスケーラビリティと合理化された管理機能を提供します。次の手順では、Bridge for Linux を実行する簡便な方法について説明します。Docker とエコシステムで使用される主な用語の基本的な知識があることを前提としています。

Docker コンテナから Bridge をインストールして実行する

Linux で Bridge を使用するには、カスタマイズされた Docker イメージを作成し、RPM パッケージをインストールして、コンテナ イメージ内から Bridge を実行する必要があります。

インストールに関する注意事項:

前提条件

ステップ 1: Bridge コンテナ イメージを作成する

次の手順は、Bridge on Linux の基本イメージを構築するための基本的な手順です。詳細については、「Docker の概要」を参照してください。

Docker がインストールされている場合、コマンドを実行する権限を持つ唯一のユーザーは root です。Docker コマンドは、sudo または docker グループのメンバーであるユーザーによって実行されます。

重要: ベース イメージは、ドライバーやプラットフォームによって異なります。次の例は、ベース イメージをビルドするプロセスを説明することを目的としています。ご利用の環境に合わせてビルド プロセスを適応させる必要があります。

  1. Tableau Web サイトのダウンロード(新しいウィンドウでリンクが開く) ページから 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 パッケージをコピー、インストール、削除するためのコマンドを入力します。

    • オプション 1: --mount を使用します。例:
      FROM registry.access.redhat.com/ubi8/ubi:latest
      RUN --mount=type=bind,source=<your_bridge_rpm>.rpm,target=/tmp/bridge.rpm \
       set -eux; \
       yum -y update; \
       ACCEPT_EULA=y yum install -y /tmp/bridge.rpm; \
       yum -y clean all; \
       rm -rf /var/cache/yum
    • オプション 2: rpm を直接ダウンロードします。例:
      FROM registry.access.redhat.com/ubi8/ubi:latest
      RUN set -eux; \
       yum -y update; \
       curl -fsSL https://repo.example.com/bridge.rpm -o /tmp/bridge.rpm; \
       ACCEPT_EULA=y yum install -y /tmp/bridge.rpm; \
       rm -f /tmp/bridge.rpm; \
       yum -y clean all; \
       rm -rf /var/cache/yum
  7. docker ビルド コマンドを使用して、新しいコンテナ イメージをビルドします。

    たとえば、次のコマンドは、現在のディレクトリにイメージをビルドし、​"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

    注: MySQL および Amazon Aurora MySQL ドライバーの要件は、ロケールを設定し、イメージにラングパックをインストールすることです。
    例:
    RUN yum install -y glibc-langpack-en
    ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8

    例

    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/redshiftodbcx64/odbcinst.ini

  2. 新しいイメージを作成します。
  3. docker image build -t bridge_final .

    bridge_final イメージは、前の手順でキャッシュされたイメージを使用し、すべての Bridge インスタンスのドライバーのインストールを自動化します。イメージ リポジトリがある場合は、イメージをリポジトリにパブリッシュし、Bridge を実行するすべてのマシンにイメージを配布できます。

ステップ 3: Docker で言語パックをインストールし、ロケールを設定する

  1. Docker コンテナに言語パックをインストールします。

    RUN yum install -y glibc-langpack-en

  2. ENV LC_ALL en_US.UTF-8 を使用して Docker でロケールを設定します。/etc/profile ファイルに以下を追加することでロケールを設定することもできます。

    export LANG="en_US.utf8"

    export LANGUAGE="en_US.utf8"

    export LC_ALL="en_US.utf8"

注: Bridge ホストがファイルベースの抽出 (Excel、CSV) のためにリモート ネットワーク共有に接続する場合は、共有ファイルに対するファイルベースの抽出更新の構成 (オプション)を参照してください。

ステップ 4: Bridge コンテナを実行する

基本イメージが構築されたので、さまざまな方法を使用してそれをデプロイできます。基本的な手順は次のとおりです。

  1. トークンの作成
  2. Bridge コンテナのインスタンスを起動します。
  3. エージェントをプールに割り当てます。

トークンの作成

コンテナのデプロイを開始する前に、パーソナル アクセス トークン (PAT) か 統合アクセス トークン(新しいウィンドウでリンクが開く) (UAT) を作成します。エージェントにログインするには PAT か UAT が必要です。

考慮事項および要件:

  • Tableau Cloud は、ユーザーごとに 104 個の PAT をサポートします。クライアントごとに 1 つの PAT または UAT を使用することをお勧めします。

  • 次のトークン名は一致している必要があります。patTokenId または jwTokenFile (run-bridge.sh コマンドの実行時に使用)、JSON ファイル内のトークン名、トークン生成時に指定するトークン名です。

  • UAT を使用する場合は、必要な OAuth スコープ ("tableau:remote_agents:*"、"tableau: jobs:read"、"tableau:file_uploads:*"、"tableau:datasources:*") を含める必要があります。

インスタンスの開始

この手順における対話型メソッドは、ワーカーを開始するために必要なステップを示しています。終了すると、コンテナは実行を停止します。

  • このコマンドを実行し、コンテナのシェル プロンプトに root として移動します:

    docker container run -it bridge_final /bin/bash

残りのコマンドは、コンテナのこの対話型セッションのコンテキストで実行されます。

  1. PAT を JSON 形式のフラット ファイルに追加します。例: /home/jSmith/Documents/MyTokenFile.txt
  2. トークン構文の例:

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

  3. ファイルのアクセス許可を変更して、現在のユーザーにアクセスを制限します。例: chmod 600 MyTokenFile.txt
  4. run-bridge.sh コマンドを実行して、Bridge コンテナのインスタンスを開始します。プロセスは、使用しているトークンの種類によって異なります。

    PAT コマンドの例

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

    UAT コマンドの例

    /opt/tableau/tableau_bridge/bin/run-bridge.sh -e --userEmail="admin@tableau.com" --client="myBridgeAgent" --site="mySite" --jwTokenFile="jwTokenFile.txt" --poolId="1091bfe4-604d-402a-b41c-29ae4b85ec94"
    run-bridge.sh parameters
    グローバル パラメーター
    --client (必須)ワーカーに付ける名前。
    --site (必須)URI に表示されるサイト名。URI パスは含めないでください。
    --userEmail (必須) トークンに関連付けられたユーザーのメール。
    -e (オプション) 既定では、Bridge クライアント ワーカーはバックグラウンド サービスとして実行されます。ワーカーをフォアグラウンドで実行するには、-e 引数を含めます。
    --poolId (オプション) クライアントに割り当てられるプール ID。プール ID の使用を参照してください。

    PAT: 必須パラメーター
    --patTokenId PAT の ID。詳細については、「パーソナル アクセス トークン」を参照してください。
    --patTokenFile PAT テキスト ファイルのファイル名とパス。

    UAT: 必須パラメーター
    --jwTokenFile UAT テキスト ファイルのファイル名とパス。

注: Bridge for Linux の古いバージョンをインストールしている場合は、ワーカーを起動するために別のコマンドを実行する必要があります。バージョン 2024.2 以前の場合は、TabBridgeClientWorker コマンドでワーカーを起動します (run-bridge.sh コマンドではありません)。コマンドのオプションはすべて同じです。

Agent が開始されました

次のメッセージは、エージェントが開始されたことを示します。“Service started: ...”

ワーカーを停止します

Control-C を使用して、ワーカーを停止します。ワーカーを再起動するのではなく、コンテナ イメージで新しいワーカーを開始できます。

既定のプール割り当て

コマンド オプション --poolId を使用してプールを割り当てなかった場合、クライアントはデフォルトのプールに割り当てられます。特定のドメインまたは VConn でクライアントを使用する場合は、UI を使用してクライアントを名前付きプールに割り当てることができます。このメニューは Tableau Cloud では [ホーム] > [設定] > [Bridge] にあります。詳細については、「Bridge クライアント プールの構成」を参照してください。

プール ID の使用

Bridge ワーカーを run-bridge.sh コマンドで起動する場合、poolId は省略可能です。ただし、クライアントの動作は、クライアントがサイトに登録されているかどうか、およびクライアントがプールに割り当てられているかどうかによって異なります。Tableau Bridge が接続または登録できる Tableau Cloud サイトは、一度に 1 つのみです。ログオフしてログインし直すと、クライアントはサイトに登録されます。

プール ID が指定されていない場合

  • Bridge クライアントが登録されている場合、クライアントのステータスは変わりません。
    • クライアントがプールに割り当てられていると、クライアントはプールに割り当てられたままになります。名前付きプールであるか、既定のプールであるかには関係ありません。
    • クライアントがプールに割り当てられていなければ、クライアントは未割り当てのままになります。
  • 新規の Bridge クライアントである (Tableau Cloud にサインインしたことがない) 場合、クライアントは既定のプールに割り当てられます。

プール ID が指定されている場合

  • 正しいプール ID が指定されている場合、Bridge クライアントは指定されたプールに割り当てられます。
  • 間違ったプール ID が指定されている場合、
    • Bridge クライアントが登録されていれば、クライアントは既定のプールに割り当てられます。
    • Bridge クライアントが登録されていなければ、クライアントのステータスは同じままです。名前付きプールであるか、既定のプールであるか、未割り当てであるかには関係ありません。

プール ID の検索

プール ID を検索するには、[設定] の [ブリッジ] ページに移動し、プールの名前をクリックします。例:

Bridge for Linux クライアントのアップグレード

最新バージョンの Bridge との同期を維持すると、Bridge クライアントの各最新バージョンに含まれる最新機能および修正を活用できます。

コンテナのインプレース アップグレードは実行できません。代わりに、最新の Bridge バイナリ ディレクトリを使用して新しいコンテナ イメージを構築してから、Bridge クライアントを以前のバージョンのクライアントと並べてプールに追加する必要があります。機能を検証したら、以前の Bridge クライアントを削除します。次の手順に従います。

  1. 上記のセクションに記載されているように、新しい Tableau Bridge クライアントをインストールして設定します。

  2. 新しい Bridge クライアントを関連するプールに追加します。「プールの構成」を参照してください。

  3. 次のステップに進む前に、ブリッジ ジョブの健全性を監視して安定性を検証します。

  4. 以前の Bridge クライアントをプールから削除します。プールを開いて、削除するクライアント マシンを特定し、[消去] をクリックします。

  5. Bridge クライアントで抽出更新タイムアウト プロセスが完了するまで待ちます。既定のタイムアウトは 24 時間です。詳細については、dataSourceRefreshSettingsを参照してください。

  6. 更新タイムアウト期間が経過したら、Bridge クライアントの以前のインスタンスを削除できます。

共有ファイルに対するファイルベースの抽出更新の構成 (オプション)

注: Linux 上の Tableau Bridge コンテナで共有ファイルベースのデータ ソース (ネットワーク共有上にある Excel または CSV ファイルなど) からの抽出を更新する必要がある場合にのみ、これらのステップを実行してください。

この設定では、パブリッシュされたデータ ソース (PDS) と埋め込みデータ ソース (EDS) の両方を処理します。Tableau Cloud では、PDS 用のネットワーク パス (\\fileserver\share\data.xlsx) を変換するために UNC マッピング ファイルが使用されますが、Linux コンテナでは、コンテナ内に追加のディレクトリ シンボリック リンクが必要です。これは、リテラル パス (/fileserver/share/data.xlsx) としてコンテナのファイル システムに到達する、EDS の更新を処理するためです。

ステップ 1: ホスト マシンに共有をマウントする

リモート ファイル共有を /mnt/remotes にマウントします (Tableau 推奨の親ディレクトリ)。

sudo mkdir -p /mnt/remotes/<share-leaf>
sudo mount -t cifs //<fileserver>/<share> /mnt/remotes/<share-leaf> \
-o <auth-options-appropriate-to-your-file-server>

システムの再起動後に自動的に再マウントされるように、/etc/fstab でこのマウントを永続化します。ls/mnt/remotes/<share-leaf> を実行してアクセスを確認します。

ステップ 2: UNC マップ ファイルを作成する

コロンで区切られたフォワード スラッシュを使用して、/mnt/remotes/uncmap にマッピングファイルを作成します。完全修飾ホスト名と素のホスト名の両方のエントリを含めます。

//<fileserver.example.com>/<share>:/mnt/remotes/<share-leaf>

//<fileserver>/<share>:/mnt/remotes/<share-leaf>

ステップ 3: Bridge コンテナを起動する

マウント バインドと環境変数を使用してコンテナを実行します。

docker run -d \
--mount type=bind,source=/mnt/remotes,target=/mnt/remotes \
-e TABLEAU_BRIDGE_UNC_MAP_OVERRIDE=/mnt/remotes/uncmap \
... <your other Bridge flags> ... \
<bridge-image>

ステップ 4: コンテナ内にシンボリック リンクを追加する

シンボリック リンクを追加して、リテラル UNC パスが正しく解決されるようにします。これは Linux での EDS 更新に必要です。Bridge Docker ファイルを次のように拡張します。

FROM <tableau-bridge-image>:<version>

# Make the literal UNC path resolvable at the filesystem level.
# Add one symlink per case variant your workbooks embed
# (Linux is case-sensitive; Windows-authored workbooks may embed either).
RUN mkdir -p /<fileserver>/<share-parent> \
&& ln -sf /mnt/remotes/<share-leaf> /<fileserver>/<share-parent>/<share-leaf>
&& ln -sf /mnt/remotes/<share-leaf> /<fileserver>/<share-parent>/<Share-Leaf-CapCase>

注: コンテナ イメージを再構築できない場合は、コンテナを起動するたびに、docker exec を使用して実行中のコンテナ内で mkdir コマンドおよび ln -sf コマンドを実行してください。

ステップ 5: Tableau Desktop で必要なパブリッシュ ワークフローに従う

ワークブックとデータ ソースが次のパブリッシュの前提条件を満たしていることを確認してください。

  • UNC パスの使用: 常に UNC パス (たとえば、 \\<fileserver>\<share>\<file>.xlsx) を使用して接続およびパブリッシュします。マッピングされたドライブ文字 (Z:\) またはローカル パス (C:\) は使用しないでください。

  • 外部ファイルのチェックをオフにする: パブリッシュする前に、Tableau Desktop で [外部ファイルを含める] チェック ボックスをクリアします。

  • 設定されたプールへの割り当て: Bridge クライアントを設定されたクライアント プールに割り当てます。既定のプールは埋め込みデータ ソースの更新をサポートしていません。プールをファイル共有のドメインにマッピングします。

ファイル ベースの更新のトラブルシューティング

ファイルベースの更新に関する問題を解決するには、次のテーブルを参照してください。

症状 考えられる原因 推奨チェック
PDS は成功するが、EDS は NOT_FOUND により 0 ms で失敗する リテラル UNC パスがコンテナ ファイル システム内で解決できません。 コンテナ内のシンボリック リンクの作成を確認します (ステップ 4: コンテナ内にシンボリック リンクを追加するを参照してください)。
EDS が失敗し、Bridge クライアントが既定のプールにある 既定のプールは EDS をサポートしていません。 クライアントを構成済みのプールに移動します。

PDS と EDS の両方が失敗する

ホスト マウントが破損しているか、マウント ユーザーがファイルを読み取れない

ホストから ls /mnt/remotes/<share-leaf> を実行します。

トラブルシューティング

古いバージョンのインストール

Bridge for Linux の古いバージョンをインストールしている場合は、ワーカーを起動するために別のコマンドを実行する必要があります。バージョン 2024.2 以前の場合は、TabBridgeClientWorker コマンドでワーカーを起動します (run-bridge.sh コマンドではありません)。

コマンドのオプションは、すべて上記のステップ 4: 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 を生成し、上記のステップ 4: Bridge コンテナを実行するの手順に従う必要があります。

埋め込み抽出および埋め込みライブ接続のタイムアウト エラー

Linux 上の Bridge の 24.3 リリースでは、埋め込み抽出と埋め込みライブ接続のパフォーマンスが大幅に向上しました。以前のリリースでタイムアウト エラーが発生した場合は、Linux 上の Bridge の 24.3 リリースにアップグレードすることをお勧めします。それでも問題が解決しない場合は、ワークブックとは別にデータ ソースをパブリッシュします。

フィードバックをお送りいただき、ありがとうございます。フィードバックは正常に送信されました。ありがとうございます!