ALB 配下に Tableau Server をインストールする

2023.10.10

Application Load Balancer(ALB) 配下の EC2 に Tableau Server をインストールするまでの手順です。
こちらについては、過去にも同様の記事があるのであわせてご参照ください。

Tableau ServerとTSMにALB経由でアクセスしてみた #tableau
Tableau ServerをWindows Serverに構築してSSL化してみた #tableau

前提条件

以下の環境を使用しています。

  • Tableau Server 2023.1.5
    • 単一サーバー構成
  • Tableau Serverをインストールするサーバー(EC2)をローンチするためのVPC、サブネットは構築済み
  • Route53 にて検証用にyy16test.xyz のDNS ホストゾーンを作成済み
    • Tableau Server にはサブドメイン(tabsrv.yy16test.xyz)で接続します
  • ACMで証明書を取得済み
    • SSL オフロードにより HTTPS 要求は ALB で終了し、HTTP 経由で Tableau Server と通信を行います

ここでは以下の構成を目指します。

要件

インスタンス等の設定は以下としました。

ここでは検証のため、以下のインスタンスを使用しますが、このメモリサイズ(64GB)は最小要件となる点にご注意ください。

参考:インストールの最小ハードウェア要件 | Tableau Help

項目 設定
OS Windows Server 2019
インスタンスタイプ m5.4xlarge
vCPU 16
メモリ 64 GB
ルートボリューム 汎用SSD(gp2)50 GB
追加ボリューム(Ddrive) 汎用SSD(gp2)100 GB

本番環境における、各種要件、推奨事項は以下に記載があります。

推奨されるベースライン構成 | Tableau Help
オペレーティング システム要件 | Tableau Help
Tableau Server の要件 | Tableau

セキュリティグループ

セキュリティグループとして以下を用意します。
8850 は TSM(Tableau Services Manager)用のポートになります。必要に応じて、こちらは管理者のみが使用するソースを指定します。
また、ALB で SSL オフロードにより HTTPS 要求は ALB で終了し、HTTP 経由で Tableau Server と通信を行う設定です。

  • ALB
タイプ ポート範囲 ソース
HTTPS 443 接続元のIPアドレス
カスタム TCP 8850 接続元のIPアドレス
  • Tableau Server
タイプ ポート範囲 ソース
HTTP 80 ALB セキュリティグループ
カスタム TCP 8850 ALB セキュリティグループ

ALB

ターゲットグループの作成

インスタンスをターゲットに2種類のターゲットグループを作成します。

  • Tableau Server 用
    • 以下の設定とし、その他はデフォルトとしています
      • プロトコル:HTTP
      • ポート:80
      • ヘルスチェックパス:/
  • TSM 用
    • 以下の設定とし、こちらもその他はデフォルトとしています
      • プロトコル:HTTPS
      • ポート:8850
      • ヘルスチェックパス:/login

ALBの作成

サブネットには、パブリックサブネットを指定し、ALB 用のセキュリティグループを関連付けます。

リスナー

Tableau Server 、TSM 用に2つのリスナーを用意します。[セキュアリスナの設定]で ACM の証明書を指定します。

  • Tableau Server 用のリスナー
    • ターゲットには Tableau Server 用のターゲットグループを指定します。
  • TSM 用のリスナー

NAT Gateway

プライベートサブネットに EC2 を構築するので、インターネットゲートウェイにルーティングがあるパブリックサブネットに配置し、 EIP を指定し作成しておきます。

Route53 の設定

以下の設定を行います。

  • Zone Apex に対してエイリアスレコードで ALB の DNS 名を登録
  • サブドメインを CNAME レコードとして設定
    • ALB 配下に Tableau Server をインストールする場合、後述する「リバース プロキシ サーバーを使用するための Tableau Server の構成」が必要となります。その際、ALB の IP アドレスか Tableau Server への接続に使用する CNAME DNS 値のいずれかを指定する必要があるので、ここではサブドメインを CNAME レコードとして設定しています

Taleau Server のインストール

Windows Server への RDP 接続

サーバーにログインし、インストーラーを実行します。

プライベートサブネットに構築した Windows Server への RDP 接続には AWS Systems Manager を使用しました。接続にあたり、事前に以下の設定を行います。

  • EC2 インスタンスへの IAMロールの紐づけ
  • VPC エンドポイントの作成
    • エンドポイントに付与するセキュリティグループは、プライベートサブネット CIDR からのHTTPSを許可

こちらの具体的な設定の詳細は以下の記事をご参照ください。

プライベートサブネットにあるEC2インスタンスを Systems Manager で管理する | DevelopersIO
[アップデート] WindowsインスタンスにAWS Systems Manager Fleet ManagerからRDP接続できるようになりました | DevelopersIO

インストーラーの実行

Tableau Server のインストールファイルは こちら よりダウンロードできます。
ここでは、以下にインストールすることとします。

D:\Tableau\Tableau Server

Tableau Server において、既定のインストールパスはC:\Program Files\Tableau\Tableau Server\なので、インストール先を変更する場合、後述する実行サービスアカウントに対するパーッション設定をいくつか手動で設定する必要があります。

フォルダー パーミッションの検証 | Tableau Help

インストーラーを起動すると以下のポップアップが表示されます。ここでは単一サーバー構成なので「Tableau Server の新しいインストールを作成する」を選択します。

次に、実行承認(ATR)サービスを使用するかどうかを選択します。

サブスクリプションライセンスで ATR を使用する場合 Tableau Server 側でユーザーがプロダクトキーを更新する必要がなくなります。(サブスクリプションの更新やライセンス発行の変更時に、新しいプロダクト キーをアクティブ化しなくてよい)

ここでは「製品をアクティブにするために ATR を使用」にチェックを入れ、[インストール] を押下します。

実行承認 (ATR) サービスを使用して Tableau Server をライセンス認証する | Tableau Help

インストールが完了すると TSM がブラウザで起動するのでプロダクトキーを入力、もしくはトライアルを選択してアクティベーションします。

画面に沿って登録情報を入力します。

環境設定を行います。
ここでは、アイデンティティストアとして「ローカル認証」を指定します。
アイデンティティストアの設定は後から変更ができない点にご注意ください。

認証 | Tableau Help

セットアップ完了後、Tableau Server の管理者を設定します。

セットアップ完了後は、ブラウザから Tableau Server にアクセスできることを確認します。

  • Tableau Server
  • TSM
    • TSM には URL 末尾に:8850を付けてアクセスできます。

リバース プロキシ サーバーを使用するための Tableau Server の構成

ここでは ALB 配下の EC2 に Tableau Server をインストールしたので、Tableau Server 側でtsm configuration setコマンドで設定できる以下の設定オプションを変更します。

設定 概要
gateway.trusted リバースプロキシ サーバーの IP アドレスまたは CNAME を設定します。
静的 IP アドレスを提供できない場合や、クラウドプロキシ または外部ロードバランサーを使用している場合は、クライアントが Tableau Server への接続に使用する CNAME DNS 値を指定します。(※)
gateway.public.host Tableau Server へのアクセスに使用される FQDN を指定します。
gateway.trusted_hosts リバースプロキシ サーバーのサブドメイン名や別名を指定します。
名前が複数ある場合は、名前をコンマで区切ります。
gateway.public.port クライアントからリバースプロキシ サーバーへのトラフィックのポート番号を指定します。
リバースプロキシ サーバーがインターネットとの通信に SSL を使用している場合などに、ポート 80 の代わりに 443 を使っていることを Tableau Server 側に伝える設定です。

リバース プロキシ サーバーを使用するための Tableau Server の構成 | Tableau Help

※ロードバランサーの IP アドレスは静的でないため、ロードバランサー配下に Tableau Server をインストールし、gateway.trusted設定で IP アドレスを指定する場合、以下に記載があるように CIDR 範囲ができる限り小さいサブネットを作成し、ロード バランサーが持つ IP アドレスが一定の値に限定されるようにすることが推奨されています。(現時点の Tableau Server では範囲指定できないため)

Tableau Server クラスタで使用するロード バランサーを作成する | Tableau Help

ここでは上記の内容をもとに、以下の通り設定変更を行いました。

  • gateway.trusted
tsm configuration set -k gateway.trusted -v "yy16test.xyz"
  • gateway.public.host
tsm configuration set -k gateway.public.host -v "tabsrv.yy16test.xyz"
  • gateway.trusted_hosts
tsm configuration set -k gateway.trusted_hosts -v "tabsrv.yy16test.xyz, tabsrv"
  • gateway.public.port
tsm configuration set -k gateway.public.port -v 443

tsm configuration set を実行後、以下のコマンドで変更を適用します。

tsm pending-changes apply

リバース プロキシのセットアップ検証

リバース プロキシのセットアップ後は、以下に検証に関する記載があるので実施しておきます。
ここでは項目の内「Tableau Desktop から Tableau Server にサインイン」「tabcmd (非サーバー クライアントから) が正常に動作しているかを確認する」について記載します。

※図は リバース プロキシのセットアップ検証 | Tableau Help より引用

Tableau Desktop から Tableau Server にサインイン

Tableau Server へのサインインの前に、Tableau Desktop のライセンス認証を行います。
ここでは、ログインベースのライセンス管理を使用します。

ログインベースのライセンス管理

Tableau Desktop を起動し [サーバーにサインインしてライセンスを認証する]を選択します。

サインインのポップアップが表示されるので、Tableau Server の URL を入力します。

Tableau Server へのログイン画面が表示されるので、Creator サイトロールを持つユーザーでサインインします。

問題なく認証されれば、以下の表示となり、Tableau Server にサインイン済みとなり、Tableau Desktop も利用できるようになります。

ライセンス認証後、他の検証項目である以下の操作が実行できることを確認します。

  • ワークブックのパブリッシュ
  • データソースのパブリッシュ
  • Tableau Server からワークブックを開く
  • Tableau Desktop で Server からログアウトする
  • Web ブラウザーからワークブックをダウンロードする

tabcmd (非サーバー クライアントから) が正常に動作しているかを確認する

Tableau Server に接続可能な端末に tabcmd をインストールしログインを試みます。
※tabcmd はこちらよりインストール可能です。

ログインにはtabcmd login を使用します。

>tabcmd login -s https://tabsrv.yy16test.xyz -u <ユーザー名> -p <パスワード>
===== 新しいセッションを作成しています
=====     Server:   https://tabsrv.yy16test.xyz
=====     Username: admin
===== サーバーに接続しています...
===== サインインしています...
===== 正常に終了しました

ログイン後の動作確認として、tabcmd 経由でプロジェクトを作成してみます。

>tabcmd createproject -n tabcmdから作成 -d tabcmdのテスト
===== 前のセッションを続行しています
=====     Server:   https://tabsrv.yy16test.xyz
=====     Username: admin
===== プロジェクト 'tabcmdから作成' をサーバー上で作成しています...
===== 正常に終了しました

Server 上で作成できていることを確認します。

さいごに

ALB 配下の EC2 インスタンスに Tableau Server をインストールしました。

以下のナレッジベースの記事や信頼できる認証において、チケットを要求するコンピューターと Tableau Server 間に 1 台以上のプロキシ サーバーが存在する場合に、リバース プロキシ サーバーを使用するための構成が実施できていないことで問題が発生する可能性があるため注意が必要です。

Share Link URL Shows Internal Server Name and Wrong Protocol on Tableau Server
Tableau Server への信頼できる IP アドレスまたはホスト名の追加

こちらの内容が何かの参考になれば幸いです。