Tableau Server in a Container - イメージの使用

概要

Tableau Server in a Container は、Tableau 初のコンテナーベースのサーバー製品です。Tableau Server in a Container は、Linux Docker コンテナ内で実行されるオールインワンの Tableau Server インスタンスです。つまり、Tableau Server in a Container のイメージは、自己完結型の Tableau Server アプリケーション全体を実行する Docker イメージです。Tableau Server in a Container は、コンテナーベースの環境で Tableau Server の実行をサポートする数多くのステップの中の最初のステップとなります。Tableau Server in a Container の概念は、Tableau Server が事前にインストールされた仮想マシン (VM) のようなものと考えると、簡単に理解することができます。イメージは UBI 8 イメージ (バージョン 2022.1 以前は CentOS 7.x) に基づいており、コンテナー内で (systemd ではなく) supervisord を実行します。コンテナーが supervisord を開始すると、直ちに Tableau Server を初期化して起動しようとします。ここにあるドキュメントの多くは、Docker 環境に合わせて Tableau Server を実行できるように、構成を提供して自動化の活用方法を説明するためのものです。

Tableau Server in a Container のイメージのセットアップ ツールを使用すると、カスタム パッケージとアーティファクトを含むようにコンテナー イメージを作成してカスタマイズすることができます。このツールの主な機能の 1 つは、コンテナー イメージを構築し、カスタム データ コネクタをインストールすることです。

概念実証シナリオで Tableau Server in a Container のイメージをすばやくテストするには、Tableau Server in a Container のクイック スタートを参照してください。

Tableau Server in a Container に関する制限事項

  • Tableau Server in a Container では、サーバー ATR を使用したライセンス認証のみをサポートします。Server ATR を使用したオフライン アクティベーションは、2023.1 以降でサポートされています。この機能はコンテナで利用できますが、追加の手順と承認が必要です。エアギャップ環境またはオフライン環境のコンテナで Tableau Server を実行する必要がある場合、詳細についてはアカウント担当者にお問い合わせください。
  • Tableau Server in a Container では現在、Resource Monitoring Tool (RMT) エージェントはサポートされていません。
  • Kerberos は、Tableau Server in a Container ではサポートされていません。

Tableau Server in a Container のイメージ

Tableau Server in a Container のイメージは、すべての Tableau Server を含む Docker イメージです。イメージは、Tableau Server in a Container のセットアップ ツールを使用して作成されます。作成時、イメージには Tableau Server が含まれていますが、まだ初期化されていません。Tableau Server in a Container のイメージの既定のユーザーは、ルート権限のないユーザーです。

前提条件

configure-container-host スクリプトを実行する

Tableau Server をコンテナーなしでインストールすると、インストール プロセスの一部として特定のリソース制限とコア ダンプ プロパティが変更されます。これにより、Tableau Server のパフォーマンスを最適化しやすくなります。Tableau Server in a Container のイメージには、ホスト マシンでこれらの変更を行う機能がないため、Tableau Server コンテナーのセットアップ ツールで提供される configure-container-host スクリプトを、コンテナー内の Tableau Server in a Container のイメージを実行する任意のマシンで実行することをお勧めします。これにより、Tableau Server in a Container のイメージのパフォーマンスがコンテナー外部のイメージのパフォーマンスと同等になります。

configure-container-host スクリプトを実行するには:

  1. Tableau Server in a Container のセットアップ ツールの最上位ディレクトリで、スクリプト configure-container-host を見つけます。
  2. それを Tableau Server の実行を計画している環境にコピーします。

  3. Tableau Server in a Container のイメージの既定ユーザーとして実行される特権のないユーザー アカウント/uid を決定します。このユーザーはホスト マシンに存在していて、Tableau Server コンテナー内の環境変数 UNPRIVILEGED_TABLEAU_UID に設定されている UID と一致している必要があります。Docker イメージの作成時にこれを設定しなかった場合、コンテナー内の権限のない既定ユーザー ID は 999 です。Docker ユーザー マッピングを使用している場合、この UID はホスト マシンに存在するユーザーに対応している必要があります。

  4. 次のスクリプトを root として実行します。

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

イメージを実行する

Tableau Server in a Container の Docker イメージを実行するために、Tableau Server in a Container のイメージを実行させる最も簡単なコマンドは次のとおりです。

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

これにより、ドッカーがバックグラウンドで実行され、しばらくすると、Tableau Server のインスタンスが完全にインストールされます。Tableau Server は、イメージを実行しているコンピューターのハードウェアに応じて、完全に起動するまでに 10 分から 20 分かかります。docker ps コマンドを入力すると、コンテナが実行されていることを確認できます。Tableau Server が操作可能になったら、最初の Tableau Server の管理者アカウントを作成する必要があります。このステップは自動化できます。詳細については、Tableau Server 初期管理者の作成の自動化を参照してください。

基本的な実行引数の概要

docker run コマンドで使用されるオプションはすべて必要なものであり、多くの場合、イメージ内のさまざまな機能を利用できるように、さらに多くのオプションが提供されます。ここでは、Tableau Server in a Container の最も単純な docker run コマンドで使用される引数だけを詳しく見てみましょう。

引数説明
-e LICENSE_KEY=<key>Tableau Server はライセンスを取得する必要があります。この環境変数には、サーバーのライセンス認証に使用されるキーが格納されます。これは初期化プロセスの必須コンポーネントです。コンマで区切った複数のライセンス名を入力できます。
-p 8080:8080これにより、Docker は、コンテナー内のポート 8080 を公開し、それをホスト マシン上のポート 8080 にバインドするように指示されます。最初の 8080 値は構成可能です。これを変更すると、ホストにマッピングされているポートが変更されます。Tableau Server では既定で、コンテナー内のポート 8080 でユーザー トラフィックを受信することが想定されていますが、このポートを別のホスト ポートで公開するか、公開しないかを選択することができます。

 

Tableau Server 初期管理者の作成の自動化

Tableau Server を初めて起動する場合は、Tableau Server へのリモート ネットワーク接続が許可される前に、初期管理者ユーザーを作成する必要があります。これを行うには、コンテナー内で tabcmd initialuser -s localhost:8080 -u <username> -p <password> コマンドを実行します。環境変数を介して管理者の認証資格情報を設定することもできます。TABLEAU_USERNAME および TABLEAU_PASSWORD または TABLEAU_PASSWORD_FILE (推奨) は、初期管理者の認証資格情報を渡すために設定できる環境変数です。パスワード管理の詳細については、パスワード管理を参照してください。

tabcmd initialuser コマンドの詳細については、initialuserを参照してください。

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>

ライセンス発行

コンテナーでのライセンス発行

Tableau Server in a Container のライセンス発行では、実行承認 (ATR) サービスを使用し、ライセンス契約を途切れさせることなく、クラウド、コンテナ、仮想環境などに展開された Tableau Server をライセンス認証できます。ATR サービスでは、プロダクト キーの有効期限が切れるまで、構成可能な期間 (ATR 期間) 中に短期リースが提供されます。ATR はハードウェア基盤の変更から Tableau のライセンス発行を抽象化します。これはコンテナー展開の基本的な側面です。サーバー ATR では、コンテナーが Tableau によってホストされている ATR サービスに到達できる必要があるため、コンテナーにはインターネット アクセスが必要です。Tableau Server in a Container は、オフラインまたは手動によるライセンス認証はサポートされていません。詳細については、実行承認 (ATR) サービスを使用して Tableau Server をライセンス認証するを参照してください。

重要: 環境変数は LICENSE_KEY または LICENSE_KEY_FILE のいずれかを入力する必要があります (1 つのみを設定)。

Tableau Server in a container をアップグレードするとき、ライセンス数をすでに最大限使用している場合は、ATR 期間 (既定では 4 時間/14,400 秒) が経過するまで Tableau Server を開始できません。ATR 期間の設定や変更の詳細については、実行承認 (ATR) サービスを使用して Tableau Server をライセンス認証する(新しいウィンドウでリンクが開く)を参照してください。

ライセンス環境変数

Tableau Server in a Container は、環境変数を使用したライセンス キーの設定をサポートしています。LICENSE_KEY には、コンマ区切りリストから 1 つ以上のキー (-e LICENSE_KEY="<key1>、<key2>") を含めることができます。

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

ライセンス ファイル

Tableau Server in a Container では、ファイルを使用した設定プロダクト キーがサポートされています。ファイルをコンテナー内の既定のプロダクト キー ファイルの場所 (/docker/config/license_file) にマウントするか、環境変数 LICENSE_KEY_FILE で指定された場所にマウントします。

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>

要求されたライセンスのリース期間

環境変数 REQUESTED_LEASE_TIME を設定すると、Tableau Server コンテナー内の ATR ライセンスのリース期間を指定できます。リース期間は秒単位で指定する必要があり、最小期間は 3,600 秒 (または 1 時間) です。Tableau Server を実験およびテストするときは、ライセンス承認の最大リース制限に達する可能性を低減するために、リース期間を短くすることをお勧めします。本番環境の展開では、REQUESTED_LEASE_TIME パラメーターを設定しないことを強くお勧めします (既定値を使用)。これにより、Tableau で理想的なリース期間が決定されるようになります。

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

初期化されていないイメージを実行する

Tableau Server には 2 つのフェーズのインストールがあり、最初に Tableau サービス マネージャー (TSM) サービスがインストールされます。一般的なオンプレミスインストールでは、この手順は、サーバー管理者がサーバーを登録し、ライセンスをアクティブ化し、サーバーが望む動作をするように構成する時間です。インストールの 2 番目のフェーズでは、Tableau Server プロセスを設定および開始します。このプロセスでは、エンドユーザー トラフィックおよび関連するビジネス ロジックが処理されます。

Tableau Server in a Container のイメージの既定の動作では、すべてのインストール ステップが自動化され、docker run コマンドによって最終的に完全に機能するサーバーになります。ただし、Tableau Server in a Container のイメージを起動し、TSM サービスのみ (サーバー管理者が initialize-tsm のみを実行した場合に期待する内容) を実行する場合、環境変数として TSM_ONLY フラグを渡すことで、これを行うことができます。

例:

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

イメージを操作する

Tableau Server in a Container のイメージを実行している場合は、TSM コマンドと tabcmd コマンドを直接呼び出すことができます。これらのツールは、pid 1 ユーザー (この時点ではルート) の環境パスに直接追加されます。つまり、TSM コマンドと tabcmd コマンドを次のように呼び出すことができます。

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

さらに、コンテナ内でシェルを開いて、より一般的な操作を実行することもできます。これは通常、デバッグの目的以外は推奨されません。

docker exec -it <container> bash

TSM Web UI とリモート CLI

既定では、TSM Web UI とリモート CLI にはアクセスできません。これは、認証にはユーザー名とパスワードが必要であり、デフォルトではコンテナーで tableau Server プロセスを実行しているユーザーにはパスワードが提供されないためです。これはセキュリティ上の理由によります。(イメージに既定のパスワードを同梱することは、リモート アクセスが許可されてしまうため、推奨されていません。)場合によっては、TSM Web UIと、TSM CLI を使用したリモート アクセスの呼び出しが役立つことがあります。これらの機能を使用する場合は、以下に概説するステップに従って、リモート アクセス ユーザーアカウントを作成する必要があります。

TSM Web UI および CLI の詳細については、Tableau サービス マネージャーの Web UI へのサインインを参照してください。

TSM リモート ユーザーを作成する

セットアップ ツールを使用して Tableau Server in a Container のイメージを構築するときの環境変数 TSM_REMOTE_UID および TSM_REMOTE_USERNAME を指定します。イメージに TSM 対応アカウントを作成するには、実行時に使用できないイメージのアクセス権限が必要です。そのため、これは、Docker イメージが Tableau Server in a Container のセットアップ ツール (build-image) で構築されている場合にのみ実行できます。

Tableau Server in a Container のセットアップ ツール environment ファイルの例:

TSM_REMOTE_UID=1010
TSM_REMOTE_USERNAME=myuser

TSM リモート ユーザーのパスワードを設定する

Tableau Server in a Container のイメージの実行時には、アカウントのパスワードが必要です。このアカウントのパスワードを設定する方法は 2 つあります。

シークレット ファイル (推奨)

remote-user-secret という名前の付いたファイルを作成します。パスワードをファイルに書き込み、実行時にそれをコンテナーにマウントします。TSM_REMOTE_PASSWORD_FILE は、期待される場所を決定します (既定の場所は、コンテナー内のシークレット ファイルの /docker/config/remote-user-secret) です。

remote-user-secret ファイルの例:

mypassword

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>
環境変数

Docker イメージを開始するときは、環境変数 TSM_REMOTE_PASSWORD を設定することもできます。

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>

セキュリティに関する注意事項

  • TSM 要求トラフィックを受信するには、ポート 8850 を公開する必要があります。
  • 実行時にパスワードがイメージで適切に設定されていない場合、コンテナーはすぐに終了します。
  • TSM は、イメージの Linux ユーザー アカウント システムに依存しています。この場合、イメージ内のアカウントには制限が設けられています。つまり、アカウントのシェルが制限され、実行できるのは、次の 2 つのコマンド /bin/true および passwd に限定されます。

TSM リモート ユーザーのパスワードをローテーションする方法

TSM リモート ユーザーのアカウントのパスワードをローテーションする場合は、以下のオプションのいずれかを使用します。

Tableau Server in a Container を新たに起動する

アカウントのパスワードは、コンテナーが起動するたびに設定されます。コンテナーの外部で Tableau データを永続化する場合は、新しいパスワードを使用して新しいイメージを開始すると、パスワードが効果的にローテーションされます。

  1. 実行中のイメージをシャット ダウンして削除する
  2. イメージ構成の環境変数 (上記参照) TSM_REMOTE_PASSWORD または TSM_REMOTE_PASSWORD_FILE のどちらかに新しいパスワード値を設定します。
  3. イメージを再起動する
実行中のコンテナー内でパスワードを手動でローテーションする

イメージをシャット ダウンしたくない場合は、パスワードを手動でローテーションすることができます。

  1. コンテナー内でシェルを開く
  2. su コマンドを使用して、リモート ユーザー アカウントとしてログインします。
  3. passwd コマンドを実行して、パスワードを変更します。

    警告: これらの手動ローテーションは、コンテナー インスタンスの書き込みレイヤーが残されている間は保持されます。コンテナーを削除すると、新しいコンテナーを起動したときに、この手動による変更は適用されません。

 

初期構成のオプション

必要な Tableau Server の動作を取得するには、Tableau Server in a Container を構成することが不可欠です。Tableau Server in a Container は Tableau Server のクリーン インストールであるため、コンテナーの外部で Tableau Server を構成する場合と同じ情報をコンテナーに提供する必要があります。

ランタイム環境変数

以下のランタイム環境変数を設定すると、Tableau Server in a Containerr に Tableau Server の展開方法を指示することができます。これらのサブセットについて詳しく説明します。

これらの値はすべて上書きが可能なため、より柔軟に構成することができます。

環境名既定説明
ACCEPTEULA0Tableau Server in a Container のセットアップ ツールを使用してイメージを構築すると、自動的に 1 に設定されます。
LICENSE_KEY サーバーのライセンス認証に使用するプロダクト キーに設定します。コンマで区切られた複数のライセンスを使用できます。
LICENSE_KEY_FILE/docker/config/license_file ライセンス ファイルへのファイル パス。ライセンス ファイルの形式は、1 行につき 1 つのライセンス キーにする必要があります。
REGISTRATION_FILE/docker/config/tableau_reg.jsonイメージ内の登録ファイルへのファイル パス。既定では、これには、Tableau Server in a Container が構築されたときに提供された登録情報が含まれます。これは実行時に上書きできます。詳細については、Tableau Server のライセンス認証と登録を参照してください。
REGISTRATION_DATA 登録情報は、別の方法で実行時に上書きすることもできます。この環境変数は、Tableau Server 登録ファイルにあるものと同じ登録情報を含むシリアル化された JSON 文字列に設定する必要があります。詳細については、Tableau Server のライセンス認証と登録を参照してください。
TABLEAU_USERNAME これは Tableau Server の初期管理者アカウントを指します。これは推奨されていますが、使用は任意です。このユーザーが設定されていない場合、Tableau Server の初期管理者アカウントは tabcmd を使用して設定する必要があります。この変数を値に設定する場合は、パスワードも必要です。これは、Tableau Server が初めて初期化されるときにのみ使用されます。この値を設定すると、Tableau Server in a Container は自動的にユーザーの初期化を試みるように指示されます。詳細については、管理者アカウントの追加を参照してください。
TABLEAU_PASSWORD tableau ユーザーのプレーン テキスト パスワード。これは Tableau Server の初期管理者アカウントを指します。これは、TABLEAU_USERNAME が指定されている場合に必要です。詳細については、管理者アカウントの追加を参照してください。
TABLEAU_PASSWORD_FILE Tableau ユーザーのパスワード テキストのみを含むファイルへのファイル パス。これは Tableau Server の初期管理者アカウントを指します。これは、TABLEAU_USERNAME が指定されている場合に必要です。詳細については、管理者アカウントの追加を参照してください。
CONFIG_FILE/docker/config/config.json

既定の TSM 構成ファイルへのファイルパス。このファイルは、Tableau Server の構成に使用されます。詳細については、構成ファイルの例を参照してください。

CONFIG_FILE を使用している場合は、CONFIG_DATA を設定しないでください

CONFIG_DATA これは、CONFIG_FILE の代わりに使用できます。外部ファイルをマウントせずにサーバーに構成を提供する場合は、この環境変数を TSM 構成ファイルのシリアル化された同等の内容に設定します。

例: CONFIG_DATA="{\"configEntities\":{\"identityStore\":{\"_type\":\"identityStoreType\",\"type\":\"local\"}}}" 詳細については、構成ファイルの例を参照してください。

CONFIG_DATA を使用している場合は、CONFIG_FILE を設定しないでください

IGNORE_TOPOLOGY_CONFIG00 または 1。1 に設定されている場合、コンテナーは、CONFIG_FILE で指定された構成ファイルに存在するトポロジ関連の構成をすべて無視します。
BACKUP_FILE/docker/config/backup/backup-file.tsbakTableau Server バックアップ ファイル (.tsbak) へのファイル パス。初期化中に指定された場合、サーバーは復元を試みます。
INIT_CONTAINER00 または 1。1 に設定されている場合、Tableau Server は TSM と Tableau Server の初期化のみを試み、初期化が完了するとコンテナーは終了します。
TSM_ONLY00 または 1。Tableau Server rpm をインストールし、初期化-tsm を実行することと同等です。TSM (Tableau サービス マネージャー) サービスのみが開始されます。コンテナーを初めて初期化する場合にのみ機能します (以前に初期化したサーバー ディレクトリで Tableau Server in a Container を起動している場合は機能しません)。
BOOTSTRAP_INSTALL00 または 1。サーバーが最初のノードか追加ノードかを示します。1 に設定されている場合、コンテナーは、bootstrap ファイルが $BOOTSTRAP_FILE で指定された場所に存在するまで無期限に待機します。
ALWAYS_WRITE_BOOTSTRAP_FILE0 0 または 1。1 に設定すると、コンテナーは BOOTSTRAP_FILE で指定された場所に bootstrap ファイルを書き込みます 。
WAIT_FOR_BOOTSTRAP_FILE10 または 1。1 (既定) に設定されていて、それがワーカー インストール (BOOTSTRAP_INSTALL=1 ) であることをコンテナーが検出した場合、コンテナーは、BOOTSTRAP_FILE で設定されたパスに存在するファイルが検出されるまで無期限に待機します。起動プロセスの実行時に 0 に設定すると、この待機はスキップされます。これは、デバッグの一部のケースで役立ちます。
BOOTSTRAP_FILE/docker/config/bootstrap/bootstrap.jsonbootstrap ファイルへのファイル パス。ワーカーコンテナにのみ適用されます。このファイルはブートストラップファイルのみを指します。この一般的な使用方法として、ターゲット ファイルのディレクトリ (既定は/docker/config/bootstrap) をホストにマウントします。
BOOTSTRAP_DATAこれを BOOTSTRAP_FILE の代わりに使用できます。外部ファイルをマウントせずに bootstrap ファイルを提供する場合は、この環境変数をシリアル化された TSM bootstrap ファイルと同じ内容に設定します。BOOTSTRAP_FILE を使用する場合は、BOOTSTRAP_DATA を設定しないでください。
PORT_RANGE_MIN8800 パフォーマンス上の理由から、Docker で 1000 ポートを公開すると Docker イメージの起動時間に悪影響を与える可能性があるため、Tableau Server オンプレミスの既定の 8000 ~ 9000 ポート範囲ではなく、200 ポートのみ (8800 ~ 9000) を公開することをお勧めします。詳細については、以下のライセンス発行ポートと TSM ポートの公開参照してください。
PORT_RANGE_MAX9000Docker で 1000 ポートを公開すると Docker イメージの起動時間に悪影響を与える可能性があるため、Tableau Server オンプレミスの既定の 8000 ~ 9000 ポート範囲ではなく、200 ポートのみ (8800 ~ 9000) を公開することをお勧めします。詳細については、以下のライセンス発行ポートと TSM ポートの公開参照してください。
HTTP_PROXY http 要求をプロキシ サーバーに転送するには、プロキシ ホストをポイントするようにこの環境変数を設定します。たとえば、ポート 8080 の example-host にプロキシを設定するには、HTTP_PROXY=http://example-host:8080/ のように設定します。
HTTPS_PROXY https 要求をプロキシ サーバーに転送するには、プロキシ ホストをポイントするようにこの環境変数を設定します。たとえば、プロキシをポート 443 の example-host に設定するには、HTTPS_PROXY=http://example-host:443/ のように設定します。環境変数 HTTPS_PROXY の URL を指定するときは、必ず 'http' を使用してください。
NO_PROXY プロキシ サーバーを回避するには、no_proxy 変数で例外を指定します。この変数は、プロキシ サーバーが内部アドレスを経由しない場合に使用してください。また、このプロキシ構成に例外を追加することで、ローカル Tableau Server クラスタ (現在設定している、または今後設定する場合) 内の通信すべてがプロキシ サーバーに送られないようにする必要もあります。各コンピューターのホスト名と IP アドレスの両方を入力し、コンテナーのホスト名を追加します。さらに、ローカル コンピューターの正規ホスト名 (localhost) と IP アドレス (127.0.0.1) を含めます。たとえば、3 ノード クラスタの例外を指定するには、次のようにします。 NO_PROXY="localhost,127.0.0.1,hostname1,hostname2,hostname3,IP1,IP2,IP3"
COORDINATION_SERVICE_CLIENT_PORTPORT_RANGE_MINPORT_RANGE_MAX の間の任意のポートコーディネーション サービスのクライアント ポート。
COORDINATION_SERVICE_PEER_PORTPORT_RANGE_MINPORT_RANGE_MAX の間の任意のポートコーディネーション サービスのピア ポート。
COORDINATION_SERVICE_LEADER_PORTPORT_RANGE_MINPORT_RANGE_MAX の間の任意のポートコーディネーション サービスのリーダー ポート。
LICENSE_SERVICE_VENDOR_DAEMON_PORTPORT_RANGE_MIN PORT_RANGE_MAX の間の任意のポートライセンス発行サービスのベンダー デーモン ポート。
AGENT_FILE_TRANSFER_PORTPORT_RANGE_MINPORT_RANGE_MAX の間の任意のポートエージェント サービスのファイル転送ポート。
CONTROLLER_PORTPORT_RANGE_MINPORT_RANGE_MAX の間の任意のポートコントローラー サービスの https ポート。
REQUESTED_LEASE_TIME既定では、現在 4 時間に設定されています。サーバー ATR のライセンス認証で要求されるリース期間を設定します。時間値は秒単位で指定する必要があり、最小期間は 14400 秒 (または 4 時間) です。通常、この値を変更することは、本番環境の展開では推奨されていません。ただし、Tableau Server in a Container を使用して開発またはプロトタイピングする場合は、ライセンス認証の損失を最小限に抑えるために、この値を最小値に設定することをお勧めします。

読み取り専用環境変数

これらは、Tableau Server in a Container のイメージの基本的なプロパティの一部を記述する環境プロパティです。これらの値を上書きすることは推奨されていません。

環境名既定説明
PRE_INIT_COMMAND_SCRIPT${DOCKER_CONFIG}/customer-files/pre_init_commandTableau Server の初期化の前に Tableau Server で実行されるユーザー カスタム bash/実行可能ファイルへのパス。注: ファイルにすべてのユーザーの実行パーミッションがあることを確認するか、chmod +rx <path-to-pre-init-command-file> を実行してください。
POST_INIT_COMMAND_SCRIPT${DOCKER_CONFIG}/customer-files/post_init_commandサーバーが完全に機能して実行中になった後に Tableau Server で実行されるユーザー カスタム bash/実行可能ファイルへのパス。注: ファイルにすべてのユーザーの実行パーミッションがあることを確認するか、chmod +rx <path-to-post-init-command-file> を実行してください。
DATA_DIR/var/opt/tableau/tableau_serverTableau Server のビットが書き込まれるデータ ディレクトリ。
INSTALL_DIR/opt/tableau/tableau_serverTableau Server インストール のビットが書き込まれるインストール ディレクトリ。
SERVICE_NAMETableau Serverコンテナーで実行されているアプリケーションの名前。
SERVICE_VERSIONN/Aコンテナーにインストールされている Tableau Server のバージョン。
DOCKER_CONFIG/dockerTableau 固有の Docker 構成を保存するディレクトリ。
ENV_FILE${DOCKER_CONFIG}/customer-files/environmentすべてのユーザー環境の上書きを含むファイル。

構築時の環境変数

   
BASE_IMAGE_URLビルド ツール コマンド build-image -b を使用します。build-image ツールと Dockerfile で指定された既定のイメージは、公式にサポートされている唯一のベース イメージです。このパラメーターを使用して、この特定のベース イメージのコピーをカスタム Docker イメージ リポジトリからプルするか、カスタム ベース イメージを定義できます。カスタム定義のベース イメージを使用する場合は、それが UBI 8 (バージョン 2022.1 以前の CentOS または RHEL 7 ) に基づいており、Tableau Server を適切に実行するために必要なリソースが含まれていることを確認する必要があります。カスタム ベース イメージの詳細については、Tableau Server in a Container - イメージの使用を参照してください。
PRIVILEGED_TABLEAU_GID997 特権のある Tableau グループの GID。
UNPRIVILEGED_TABLEAU_GID998 特権のない Tableau グループの GID。
UNPRIVILEGED_TABLEAU_UID999 Tableau プロセスを実行するユーザーの UID (シングル ユーザー展開)。
UNPRIVILEGED_USERNAMEtableau 特権のないユーザーの文字列名。
UNPRIVILEGED_GROUP_NAMEtableau 特権のないグループの文字列名。
PRIVILEGED_GROUP_NAMEtsmadmin 特権グループの文字列名。
LANGen_US.UTF-8ロケール設定

 

Tableau Server 構成の上書き

これらの環境変数は、コンテナー内の任意のファイルを指すために Docker によって上書きできます。たとえば、別のマウント ポイントを指定したい場合に、これを行うことができます。

Tableau Server を起動して実行するには、構成ファイルが必要です。

CONFIG_FILE=/docker/config/config.json

CONFIG_FILE は TSM 構成ファイルを指します。形式と使用法は、構成ファイルの例で説明されている 構成ファイルと同じです。

初期化前および初期化後のコマンド

Tableau Server は、サーバーを初期化前の状態から完全に実行中の状態にする自動インストール スクリプトを実行します。しかし、初期化プロセスで独自の自動化コードを追加したい場合もあります。これを行うために、初期化前スクリプトと初期化後スクリプトの 2 つのフックが用意されています。

初期化前スクリプト

このスクリプトは、TSM の基本プロセスが初期化された直後、および他の TSM セットアップ ステップが実行される前に実行されます。これは、Tableau Server を実行する前に TSM 構成コマンドを実行する場合に役立ちます。この時点で行われた構成の変更は、スクリプトの完了後に通常の Tableau Server の自動化によって適用されるため、変更を適用する必要はありません。

初期化後のスクリプト

このスクリプトは、他のすべてのTableau Server の初期化と起動の自動化が完了した後に実行されます。このスクリプトを実行すると、Tableau Server は完全に機能し、実行している状態になります。この時点で行われた構成の変更は適用する必要があります。

手順

イメージ内のこれらのフックの 1 つにカスタム スクリプトを追加するには、次の手順に従います。

  1. カスタム スクリプトを書く
  2. カスタム スクリプトを Tableau Server in Containers のビルド イメージ ツールの customer-files ディレクトリにコピーします。
  3. スクリプトを実行するタイミングに応じて (両方のフックは別々に使用できます)、スクリプトの名前を pre_init_command または post_init_command のいずれかに変更します。
  4. スクリプトのパーミッションが他の (chmod +rx <command-file>) によって実行可能であることを確認するか、所有権のパーミッションがコンテナー内の特権のないユーザーと一致することを確認します。

ユーザー構成

Tableau Server は、特権のないユーザーを使用してサーバー プロセスを実行します。このユーザーは、Tableau Server in Container の初期化中にコンテナー内に作成されました。既定では、このユーザーは tableau という名前で、UID は 999 です。マウントを使用してホスト マシン上のデータを外部に保存する Tableau Server in a Container を展開する場合は、UID を変更してホスト コンピューター上の UID にマッピングすることもできます。Docker ユーザーの名前空間を使用して、これを行うこともできます。

Tableau Server in a Container のユーティリティとツール

Tableau Server in a Container のすべてのユーティリティおよびツール関数は、次のディレクトリに配置されます。

/docker/

ファイル パーミッションの管理

コンテナーに任意の構成ファイルを渡す場合、コンテナー内で Tableau Server プロセスを実行しているユーザーがファイルにアクセスするためのパーミッションを持っていることを確認する必要があります。コンテナーにマウントされているファイルへのすべてのユーザー アクセスを許可しないようにするには、コンテナー内で Tableau Server を実行しているユーザーの UID や GID を変更して、ホスト上のユーザーまたはグループの所有者と一致させることができます。コンテナー ユーザーは、環境変数 UNPRIVILEGED_TABLEAU_UID (既定: 999) によって決定される UID と、UNPRIVILEGED_TABLEAU_GID (既定: 998) によって決定される GID を持っています。これらの値は、環境変数を上書きすることによって変更することができます。または、Docker ユーザーの名前空間をマッピングすることにより、コンテナー内の UID/GID をホスト上の別の UID/GID に関連付けることもできます。

パスワード管理

特定の機能とオプションでは、ユーザーの認証資格情報をコンテナーの構成設定として入力する必要があります。Tableau の初期管理の認証資格情報は、任意の認証資格情報の例であり、これを入力することで追加機能を有効にすることができます。この場合、パスワードの設定方法は 2 つあります。1 つ目の方法では、パスワードを含むファイルを指定し、環境変数へのファイル パスを指定します。2 つ目の方法では、パスワードを直接保存する環境変数を設定します。

より安全な推奨オプションとして、パスワードをコンテナーへのファイル パスとして指定することができます。ファイルにシークレットを含めることは、Docker、Docker Swarm、Kubernetes、およびその他のコンテナ オーケストレーション システムで十分にサポートされているパターンです。パスワードを環境変数に直接保存することは一般的なパターンであり、サポートされていますが、通常はパスワードの安全性は低くなります。

TABLEAU_USERNAME 資格情報を見てみましょう。ユーザーのパスワードは、TABLEAU_PASSWORD または TABLEAU_PASSWORD_FILE のいずれかで指定できます。Tableau Server in a Container のイメージを実行する場合、パスワードを指定するためにいずれかの環境変数を入力することができます。

パスワード ファイルの環境変数では、コンテナー内のファイル パスが有効なシークレット ファイルであると想定されています。シークレットファイルは、シークレットを含む 1 行にする必要があります。

シークレット ファイルの使用例
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>
シークレット ファイルの内容の例
mypassword23879172

または、パスワードをパスワード環境変数にプレーン テキストで直接保存することもできます。この方法の安全性は低いですが、コンテナーで使用する場合は便利で一般的なパターンです。

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

Tableau Server を実行した後に構成する

Tableau Server が初期化され実行中になったら、サーバーを操作する最適な方法として、TSM CLI ツールを使用します。これは、管理タスクを実行するための従来の Tableau Server ツール です。将来的には、実行間に提供される環境変数 CONFIG_FILE の静的構成の変更に対応する Tableau Server がサポートされる予定です。ただし、現時点では、Tableau Server が初期化された後は、従来のツールを使用してサーバーを操作する必要があります。

tsm コマンド ラインの詳細については、tsm コマンド ライン リファレンスを参照してください。

ステータス

イメージで提供される Tableau Server には、2 つのステータス チェックが用意されています。これらは、サーバーの稼働状態と準備状況を確認するために使用できます。

稼働状態チェック

稼働状態チェックは、TSM サービスが実行されているかどうかを示します。これは、Tableau Server のオーケストレーション サービスが動作していて機能しているかどうかを示します。このチェックは以下を使用して呼び出すことができます。

/docker/alive-check

もう 1 つのオプションは、Web ブラウザーを介して管理機能を提供するために Tableau Controller サービスが実行するポート 8850 を公開することです。TCP ヘルス チェックを使用してサービスの正常性を定期的にチェックできます。

準備完了チェック

準備状況チェックは、Tableau Server が実行されているかどうか、およびビジネス サービスがトラフィックを受信する準備ができているかどうかを示します。これは、以下のスクリプトを使用して判断できます。

/docker/server-ready-check

もう 1 つのオプションは、ポート 8080 (または Tableau Server がトラフィックを受信するためにバインドされているポート) に対して tcp ヘルス チェックを使用することです。サーバーの準備完了チェックは TSM に報告されたサービス ステータスに基づいているため、この種類の tcp ヘルス チェックはサーバーの準備完了チェックよりも信頼性が高く、サービス状態が更新されると遅延する場合があります。

データの永続化

多くのユーザーが、コンテナーを使用する際は、重要な情報を失うことなく、コンテナーをシャットダウンして電源を入れ直すことができるようにしたいと考えています。Tableau Server in a Container のイメージではこの点のサポートが万全であり、特定のディレクトリをコンテナーの外部にマウントできるため、コンテナー インスタンスを完全に破棄または削除してもデータを保持できます。このデータを使用して、別のコンテナー インスタンスを開始し、前のコンテナーが中断した場所から再開できます。

次のセクションでは、さまざまな種類の管理状態について説明します。

Tableau Server データ

サーバー データはすべてデータ ディレクトリに保存されます。データ ディレクトリには、すべてのユーザー関連データとサービス ランタイム メタデータが保存されます。このデータを外部に配置すると、Tableau Server in a Container を完全に削除した後でもユーザーのデータを永続化できます。

このデータは転送可能であり、AWS EBS ボリュームなどのクラウド管理のブロック ストレージ システムで使用できます。

Tableau Server in a Container を外部ファイルストアと組み合わせて使用する場合、データ ディレクトリは EBS 上にある必要があります。データ ディレクトリにはネットワーク ファイルシステム (NFS など) を使用しないでください。外部ファイルストア ディレクトリは、NFS ボリューム上に配置できます。

静的ホスト名

Tableau Server では動的ホスト名の変更は処理できないため、コンテナーの内部ホスト名を指定して、コンテナーの実行間で一貫性を保つ必要があります。コンテナ内のホスト名は任意であり、任意の値に設定できます。この --hostname オプションを使用すると、コンテナの内部ホスト名を指定できます。同じ永続データを使用する後続のコンテナーが、同じホスト名の値を使用して実行されていることを確認します。

これをマルチノード サーバーのインストールと混同しないでください。これらの場合は、追加ノードにそれぞれ異なるホスト名を割り当てる必要があります。重要なのは、単一のコンテナーを再起動する場合、そのインスタンスに対して同じ永続データを使用する後続のコンテナーが同じホスト名を持つ必要があります。

完全な例

これは、データ ディレクトリがコンテナーの外部にマウントされている例です。

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>

バックアップと復元

Tableau Server in a Container では、バックアップ ファイル (.tsbak) からの Tableau Server の作成と復元がサポートされています。最初のステップでは、Tableau Server in a Container のイメージを実行し、バックアップ ファイル (.tsbak) をイメージにマウントし、バックアップ ファイルへのファイル パスを使用して環境変数 BACKUP_FILE を設定します。また、環境変数 CONFIG_FILE では、バックアップ json 構成ファイルを提供する必要があります。Tableau Server コンテナーでは、マルチノード展開の場合でも復元プロセスが自動化されます。この自動化のある時点でシステムを完全に復元できない場合は、コンテナーを使用しない展開と同じように、TSM コマンドなどの従来の Tableau Server ツールやプロセスでフォールバックして、Tableau Server を操作することができます。

標準の Tableau Server インスタンスのバックアップと復元の実行方法の詳細については、Tableau Server の完全なバックアップと復元を実行しますを参照してください。

Tableau Server コンテナーでのバックアップ

  1. Tableau Server in a Container のバージョン A 内にあるシェルを開きます。リポジトリ バックアップ、トポロジ、および構成バックアップ ファイルを作成します。

    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. 前のステップで作成したファイルをホスト マシンにコピーします。ファイルの​パーミッションを変更して、両方のファイルに "すべて読み取り" のパーミッション セットを設定します。

    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. バックアップ アーティファクトを安全な場所に保存します。必要に応じて、以下の復元ステップに従ってください。

Tableau Server コンテナー内で復元する

サポートされている Tableau Server バージョン (コンテナーを使用する場合、およびコンテナーを使用しない場合) からのバックアップは、Tableau Server コンテナー内で復元できます。

前提条件
  • Tableau Server のバックアップ ファイル。
  • 構成情報とトポロジー情報の両方を含む構成 json ファイル。
  • 注意: "すべて読み取り" のパーミッション セットを含むように、バックアップ ファイルを変更する必要があります。バックアップ ファイルは通常、ファイルを作成したユーザーにロックされており、このユーザーはたいていコンテナーで実行している Tableau ユーザーとは異なります。
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>

注:

  • マルチノード システムを復元する場合、復元の自動化を機能させるには、他のノードも起動する必要があります。詳細については、このドキュメントのマルチノードの Tableau Server in a Containerセクションを参照してください。バックアップ ファイル、バックアップ構成ファイル、およびライセンスが必要となるのは、最初のノードのみです。
  • バックアップ ファイルは、コンテナーを初めて実行するときにのみ提供する必要があります。サーバーが初期化されたら、バックアップ ファイルにマウントし続ける必要はありません。

 

Tableau Server から Tableau Server in a Container に移行する

標準の Tableau Server インストールから Tableau Server in a Container に移行するには、バックアップと復元の手法を使用する必要があります。サポートされている Tableau Server バージョン (コンテナーを使用する場合、およびコンテナーを使用しない場合) からのバックアップは、Tableau Server コンテナー内で復元できます。詳細については、上記のTableau Server コンテナー内で復元するのセクションを参照してください。

Tableau Server バージョンをアップグレードする

Tableau Server をアップグレードする方法は 2 つあります。このセクションにリストされているアップグレード イメージ メソッドは、推奨されるソリューションです。ただし、フォールバックとして、バックアップ/復元を使用して Tableau Server をアップグレードすることもできます。

アップグレード イメージ メソッドによるアップグレード

アップグレード イメージは、Tableau Server in a Container のセットアップ ツールからの build-upgrade-image スクリプトを使用して構築できる Docker イメージです。このイメージの目的は、現在実行している Tableau Server in a Container をアップグレードすることだけです。

アップグレードを行うには、以下のステップに従ってください。

  1. build-upgrade-image スクリプトを使用してアップグレード イメージを作成します。このコンテナーを構築するには、新しいバージョンの Tableau Server rpm が必要です。
  2. 現在 Tableau Server を実行しているコンテナーをシャットダウンします。
  3. 前のステップでシャットダウンしたコンテナーから同じデータ ディレクトリをマウントして、アップグレード イメージ を開始します。
  4. アップグレード プロセスにはしばらく時間がかかりますが、Tableau Server がアップグレードされます。アップグレード プロセスの更新については、Docker ログを確認してください。コンテナーは、アップグレード プロセス後にシャットダウンします。
  5. 新しいバージョンの Tableau Server in a Container を新たに起動します。前のステップから同じディレクトリをマウントします。

例:

Tableau Server を実行している Tableau Server in a Container があるとします。この例の前提条件は以下のとおりです。

  • 貴重なデータがあるため、アップグレード プロセス中にそのデータを失いたくありません。データ ディレクトリは、コンテナーの外部で永続化する必要があります。
  • コンテナーの名前は my-server です。Docker イメージの名前は tableau-server: version A です。
  • my-server で現在使用しているサーバー バージョンは、バージョン A です。
  • それをバージョン B にアップグレードしたいと考えています。
  1. バージョン B の Tableau Server rpm を取得します。アップグレード イメージを作成します。

    # 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. my-server コンテナーを停止します。

    docker stop my-server -t 120
  3. 新しく作成されたイメージ tableau-server-upgrade:version AB を開始します。先ほど停止したコンテナーから同じデータ ディレクトリをマウントします。コンテナーはバージョン B へのアップグレード プロセスを開始します。

    docker run --name my-upgrade-server \
    -v <data-dir mount from previous step>:/var/opt/tableau \
    ...
    tableau-server-upgrade:versionAB
  4. アップグレードが完了すると、コンテナーは停止します。Docker ログでアップグレード プロセスのログを確認し、アップグレード プロセスが成功したことを確認します。Docker コンテナーの終了コードをチェックして、アップグレード プロセスが正常に完了したことを確認することもできます。

    # 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. my-upgrade-server コンテナーを停止します。Tableau Server in a Container のイメージの新しいバージョン B を起動し、停止した my-upgrade-server コンテナーからデータ ディレクトリをマウントします

    # 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

バックアップ復元メソッドによるアップグレード

このドキュメントの「バックアップと復元」セクションのステップに従います。バックアップと復元の操作をアップグレード操作に変更するために必要となる調整は、新しいバージョンの Tableau Server でバックアップを復元することだけです。

マルチノードの Tableau Server in a Container

マルチノードの Tableau Server in a Container とは、複数のノードに分散された Tableau Server の単一の展開を指します。このコンテキストのマルチノードは、容量を増やしたり、処理能力を高めたりするために他のノードで特定のプロセスを実行できる Tableau Server マルチノードと同じものです。これは、各コンテナーが独立したサーバーで、独自のデータが含まれる、複数の Tableau Server in a Container を個別に起動する場合とは異なります。

マルチノードの Tableau Server in a Container は、コンテナーを使用しない Tableau Server の分散インストールとほとんど同じように機能し、同じ基本メカニズムを使用します。コンテナーを使用しない Tableau Server の分散インストールのセットアップの概要については、分散型高可用性 Tableau Server インストールを参照してください。

例は次のとおりです。

マルチノードの基本的な使用例

最初のノード

オプション 1: サーバー構成 (CONFIG_FILE) でマルチノード トポロジが指定される場合にこれを使用します。

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>

オプション 2: サーバー構成でマルチ ノードトポロジが指定されていない場合でも、マルチノード展開が必要な場合は、これを使用します。

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>
追加ノード
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>

ライセンス発行ポートと TSM ポートの公開

ワーカー ノードがプライマリ インスタンスと通信するには、追加のポートを開く必要があります。次のポート範囲で、プライマリ Tableau Server in a Container インスタンス上の他のノードからのトラフィックを許可する必要があります。

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

開くポートの数に注意してください。Docker で 1000 ポートを公開すると Docker イメージのパフォーマンスと起動時間に悪影響を与える可能性があるため、Tableau Server の既定の 8000 ~ 9000 ポート範囲ではなく、200 ポート (8800 ~ 9000) のみを公開することをお勧めします。Tableau Server トポロジの複雑さに応じて、より小さいポート範囲または大きなポート範囲を使用できます。一般的に、100 ポート未満のポートを公開すると、クラスタが特定のサービスでやり取りができなくなるサービス リスクがあるため、推奨されていません。独自のポート範囲を指定する場合は、ポート 8850 を公開してください (これは 8800-9000 に暗黙的に含まれています)。ポート範囲は、環境変数 PORT_RANGE_MIN および PORT_RANGE_MAX を設定して指定します。

追加ノードではサービス ポート範囲 (8800 ~ 9000) を公開する必要がありますが、ライセンス発行ポートの範囲は公開する必要はありません。これらのポート範囲は、Tableau Server のプロセス間の通信を許可するだけのために使用することに注意してください。これらのポートは、同じマルチノード クラスタの Tableau Server in a Container を実行しているコンピューター以外のユーザーまたは他のマシンには公開しないでください。

これらのポート規則は、Tableau Server のファイアウォール ドキュメントと一致しています。詳細については、ローカル ファイアウォールの構成を参照してください。

ホスト名の解決

Tableau Server ではホスト名の動的な変更が処理されないため、Tableau Server in a Container の複数のノードは一貫性のあるホスト名で実行する必要があります。Tableau Server マルチノードを実行する場合、それらのノードは相互に通信する必要があります。Tableau Server ノードは、マルチノード の Tableau Server in a Container を使用するように構成されているホスト名を使用して、相互に接続しようとします。たとえば、ノードを "initial" というホスト名で実行すると、追加ノードは "initial" というホストにトラフィックを送信しようとします。ホスト名を他のイメージに解決するようにイメージを構成するには複数の方法があります。各コンテナー内の /etc/hosts ファイルを使用して、任意のコンテナーのホスト名 ("initial") を他のコンテナーを実際に実行している IP アドレスにマッピングします。

追加ノードをブートストラップする

クラスタの一部として実行する最初の Tableau Server コンテナーは、後続の追加ノードをクラスタに結合するために使用する必要がある bootstrap ファイルを生成します。追加ノードがクラスタのトポロジーに登録されたら、そこで実行する Tableau Server プロセスの割り当てを開始できます。このプロセスは完全に自動化できます。マルチノード トポロジを指定する Tableau Server 構成ファイルを提供した場合 (通常、構成ファイルを CONFIG_FILE で指定されるファイル パスにマウントすることによって提供されます。既定のパス: /docker/config/config.json)、最初のノードは、すべての追加ノードが登録されるまで自動的に待機します。追加ノードが登録されると、マルチノード トポロジはクラスタ全体に適用されます。

Tableau Server in a Container の最初のノードで Tableau Server を完全に実行したら、追加ノードの bootstrap ファイルを生成できます。

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

このコマンドは ALWAYS_WRITE_BOOTSTRAP_FILE の値を 1 に設定すると自動的に呼び出されます。

セキュリティに関する考慮事項

bootstrap ファイルには、最初のノードとの TSM セッションを確立するためのサーバー シークレットが含まれています。つまり、悪意のあるユーザーがファイルを取得したら、サーバーに TSM コマンドを一定期間送信できるということです。ファイル自体には、サーバー構成の秘密の解読を可能にするデータも含まれています。このファイルは、機密性の高いファイルとして扱う必要があり、マルチノード展開の確立に直接関連するサービスおよびシステムのみがアクセス可能である必要があります。

Bootstrap の有効期限

bootstrap ファイルは、有効期限が 2 時間のセッションを実行します。そのウィンドウでは、追加ノードは、追加ノードとして結合するために最初のノードに認証資格情報を提供する必要はありません。セッションの有効期限が切れた後に bootstrap ファイルを使用することは可能ですが、最初のノードに認証資格情報を提供する必要があります。

bootstrap ファイルを転送する

bootstrap ファイルは、ワーカー ノードの Tableau Server in a Container で使用する必要があります。bootstrap ファイルは、この展開のワーカー ノードとして、必要となる他のすべてのノードの Tableau Server in a Container と共有する必要があります。共有は、さまざまな方法で行うことができます。

セキュリティで保護されたネットワーク経由でファイルを転送する

最初のノードの自動化の一部では、追加ノードに直接ファイルを送信する必要があります。その際、いくつかの安全なファイル転送クライアント/ツールを使用します。これは、最初のノードの有効期間中に複数の bootstrap ファイルが生成される可能性がある (後で追加ノードを追加する可能性がある) シナリオでより役に立ちます。

ネットワーク ファイル マウントを使用する

特定の配置内のすべてのコンテナで共有されるネットワーク ファイル マウントも、別のオプションです。

その他

最終目標は、あるコンテナーで作成されたファイルを安全に転送し、それを他のコンテナーの特定のセットに転送することです。したがって、これを達成し、安全である方法があれば十分です。

追加ノードを起動する

Tableau Server in a Container の追加ノードを起動するには、環境変数 BOOTSTRAP_INSTALL を 1 に設定してコンテナーを起動します。

これにより、環境変数 BOOTSTRAP_FILE (これも設定可能です) で指定されたパスに bootstrap ファイルが存在するまでスリープするように Tableau Server in a Container に指示が送られます。既定のファイル パスを表示するには、環境変数テーブルを参照してください。つまり、Tableau Server in a Container のイメージを [additional node mode (追加ノードのモード)] で実行すると、コンテナーでは、supervisord や、bootstrap ファイルが存在するかどうかを 5 秒ごとに確認する pid 1 として実行している bash スクリプト以外のプロセスは開始されません。ファイルが存在すると、Tableau Server in a Container は追加ノードとしての初期化に進みます。

追加ノードを構成する

特定のトポロジを実行するように追加ノードを構成すると、標準の Tableau Server の展開の場合と同じように機能します。また、同じ要件も伴うため、ノードに新しいプロセスを追加する際に、クラスタ全体の再起動が必要になる場合があります。詳細については、ノードの構成を参照してください。

Tableau Server の機能に関する考慮事項

コンテナーでは、Tableau Server の一部の機能の動作が異なります。このセクションでは、コンテナー環境で特別な考慮事項または異なる考慮事項がある特定の機能について説明します。

Active Directory

AD ドメイン コントローラーを設定する

Tableau Server Web ページおよびサイトのアイデンティティ ストアとして Active Directory を使用することを計画している場合は、追加の考慮事項があります。Linux 環境で実行している Tableau Server は、IP サブネットを調べることによって、通信する AD ドメイン コントローラーを動的に決定します。コンテナーには任意の IP アドレスを割り当てることができます。この場合、Tableau Server は必ずしもその IP アドレスを使用して適切なドメイン コントローラーを見つけることができるわけではありません。そのため、Tableau Server が通信する特定のドメイン コントローラー/ホスト名を構成する必要がある場合があります。これを行うには、次のステップに従ってください。

  1. Tableau Server で使用するドメイン コントローラーを決定し、ホスト名を取得します。
  2. 標準の Tableau Server 管理者構成オプションを使用して、構成キー wgserver.domain.ldap.hostname をホスト名に設定します。

    • json 構成ファイル CONFIG_FILE に値を設定します。
    • TSM 構成コマンドを使用します

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

AD 証明書を Tableau Server キーストアにインポートする

既定では、Tableau Server in a container は、シンプル バインドが使用されるたびに StartTLS を介して AD と通信します。したがって、コンテナーをこの構成で実行する場合は、AD サーバー証明書を Tableau Server キーストアにインポートする必要があります。そうしなければ、サーバーの初期化が失敗します。これを行うには、次のステップに従ってください。

  1. pre-init-command スクリプトを作成します (初期化前のスクリプト セクションを確認してください)。次の行を追加して、AD 証明書を 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. pre-init-command スクリプトの -file パラメーターに提供されたファイル パスに AD サーバー証明書をマウントします。

または、StartTLS を介して AD と通信する既定の設定を無効にすることもできます。wgserver.domain.ldap.starttls.enabledfalse に設定し、StartTLS を無効にします。ただし、これは推奨されていません。

展開構成の例

Docker

Tableau Server in a Container の基本的な使用例
docker run \
-e LICENSE_KEY=<key>
-p 8080:8080
-d <Tableau Server in a Container image ID or tag>
自動化された初期管理ユーザーによる Tableau Server in a Container の基本的な使用例
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>
TSM 専用モード
docker run \
-e TSM_ONLY=1 \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
マルチノードの基本的な使用例
最初のノード

オプション 1: サーバー構成 (CONFIG_FILE) でマルチノード トポロジが指定される場合にこれを使用します。

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>

オプション 2: サーバー構成でマルチ ノードトポロジが指定されていない場合でも、マルチノード展開が必要な場合は、これを使用します。

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>
追加ノード
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>
データ使用の外部化
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>
Init コンテナーの基本的な使用例

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>

コンテナーの実行

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>
シングルノード バックアップからの基本的な復元
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 の構成

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>

 

 

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