Tableau Server のリポジトリ フェールオーバーを試してみた #tableau

2024.02.14

Tableau Server では、高可用性インストールにより、リポジトリの自動フェールオーバーが可能です。こちらの機能を試してみたので記事としました。

前提条件

以下の構成で Tableau Server をインストール済みであるとしています。

  • Tableau Server を3ノードクラスタでインストール済みであること
  • リポジトリを 2 つのノードで構成していること
  • マルチノード調整サービス アンサンブルを展開済みであること

上記の構成手順については、以下の記事をご覧ください。

リポジトリプロセスなど、本記事で使用する各ノードの構成は以下になります。

ホスト名 リポジトリプロセスの構成
初期ノード EC2AMAZ-TGQFA6R あり
ノード2 tabsrv-node2 あり
ノード3 tabsrv-node3 なし

自動リポジトリ フェールオーバー

Tableau Server では、前提条件にもある以下の条件が満たされると自動リポジトリ フェールオーバーが機能するように構成されています。

  • クラスタを構成するノードが 3 つ以上ある
  • リポジトリ プロセスを含むように構成された 2 つのノードがある
  • マルチノード調整サービス アンサンブルが展開されている

リポジトリは、ノードごとにアクティブまたはパッシブのステータスに分かれます。アクティブなリポジトリのあるノードで何らかの障害が発生した際に、自動的にリポジトリ フェールオーバーが発生します。
また、ドキュメントよりフェールオーバー実行までの具体的な条件は以下になります。

リポジトリの一時的な問題によっては、スイッチの切り替えが適切でない場合もあるため、フェールオーバーはすぐには実行されませんが、リポジトリが 1 ~ 5 分以上使用できない場合は、フェールオーバーが発生します。たとえば、基盤となる PostgresSQL サービスに障害が発生した場合、約 1 分以内にフェイルオーバーが発生します。ただし、他の構成の問題によっては、最大 5 分間障害が発生しない場合があります。

ノードごとにリポジトリがアクティブまたはパッシブかはtsm status -vで確認可能です。
上記の手順で構成段階の場合、初期ノードのリポジトリが「アクティブ」、ノード2のリポジトリが「パッシブ」となっていました。
※リポジトリプロセスを構成した初期ノード、ノード2のみ抜粋

>tsm status -v
node1: EC2AMAZ-TGQFA6R
        Status: RUNNING
        'Tableau Server ゲートウェイ 0' は実行中です。
        'Tableau Server アプリケーション サーバー 0' は実行中です。
        'Tableau Server インタラクティブなマイクロサービス コンテナ 0' は実行中です。
                'MessageBus マイクロサービス 0' は実行中です。
                '関係クエリ マイクロサービス 0' は実行中です。
                '認証資格情報サービス 0' は実行中です。
                '推奨 Microservice 0' は実行中です。
        'Tableau Server VizQL Server 0' は実行中です。
        'Tableau Server VizQL Server 1' は実行中です。
        'Tableau Server キャッシュ サーバー 0' は実行中です。
        'Tableau Server キャッシュ サーバー 1' は実行中です。
        'Tableau Server コーディネーション サービス 1' は実行中です。
        'Tableau Server クラスター コントローラー 0' は実行中です。
        'Tableau Server バックグラウンダー 0' は実行中です。
        'Tableau Server バックグラウンダー 1' は実行中です。
        'Tableau Server 非インタラクティブなマイクロサービス コンテナ 0' は実行中です。
        'Tableau Server データ サーバー 0' は実行中です。
        'Tableau Server データ サーバー 1' は実行中です。
        'Tableau Server データ エンジン 0' は実行中です。
        'Tableau Server ファイル ストア 0' は実行中です。
        'Tableau Server リポジトリ 0' は実行中です (アクティブ リポジトリ)。
        'Tableau Server Tableau Prep Conductor 0' は実行中です。
        'Tableau Server Tableau Prep Flow Authoring 0' は実行中です。
        'Tableau Server Tableau Prep Minerva Service 0' は実行中です。
        'Tableau Server インデックス作成/検索サーバー 0' は実行中です。
        'Tableau Server データに聞く 0' は実行中です。
        'Tableau Server 管理エージェント 0' は実行中です。
        'Tableau Server 管理コントローラー 0' は実行中です。
        'Tableau Server サービス マネージャー 0' は実行中です。
        'Tableau Server ライセンス マネージャー 0' は実行中です。
        'Tableau Server Activation Service 0' は実行中です。
        'Tableau Server クライアント ファイル サービス 0' は実行中です。
        'Tableau Server データベースのメンテナンス 0' は停止しています。
        'Tableau Server バックアップ/復元 0' は停止しています。
        'Tableau Server サイトのインポート/エクスポート 0' は停止しています。
        'Tableau Server コレクション サービス 0' は実行中です。
        'Tableau Server Content Exploration Service 0' は実行中です。
        'Tableau Server Webhook 0' は実行中です。
        'Tableau Server 認証 0' は実行中です。
        'Tableau Server API ゲートウェイ 0' は実行中です。
        'Tableau Server 分析の拡張機能マイクロサービス 0' は実行中です。
        'Tableau Server メッセージング サービス 0' は実行中です。
        'Tableau Server データ ソース プロパティ サービス 0' は実行中です。
        'Tableau Server 内部データ ソース プロパティ サービス 0' は実行中です。
        'Tableau Server 仮想接続サービス 0' は実行中です。
        'Tableau Server メトリクス サービス 0' は実行中です。
        'Tableau Server クエリ ゲートウェイ サービス 0' は実行中です。
        'Tableau Server Tableau Minerva Service 0' は実行中です。
        'Tableau Server 抽出サービス 0' は実行中です。
        'Tableau Server データ プロファイリング サービス 0' は実行中です。
        'Tableau Server Resource Limits Manager 0' は実行中です。
        'Tableau Server データ ストーリー サービス 0' は実行中です。
node2: tabsrv-node2
        Status: RUNNING
        'Tableau Server ゲートウェイ 0' は実行中です。
        'Tableau Server アプリケーション サーバー 0' は実行中です。
        'Tableau Server インタラクティブなマイクロサービス コンテナ 0' は実行中です。
                'MessageBus マイクロサービス 0' は実行中です。
                '関係クエリ マイクロサービス 0' は実行中です。
                '認証資格情報サービス 0' は実行中です。
                '推奨 Microservice 0' は実行中です。
        'Tableau Server VizQL Server 0' は実行中です。
        'Tableau Server キャッシュ サーバー 0' は実行中です。
        'Tableau Server コーディネーション サービス 1' は実行中です。
        'Tableau Server クラスター コントローラー 0' は実行中です。
        'Tableau Server バックグラウンダー 0' は実行中です。
        'Tableau Server 非インタラクティブなマイクロサービス コンテナ 0' は実行中です。
        'Tableau Server データ サーバー 0' は実行中です。
        'Tableau Server データ エンジン 0' は実行中です。
        'Tableau Server ファイル ストア 0' は実行中です。
        'Tableau Server リポジトリ 0' は実行中です (パッシブ リポジトリ)。
        'Tableau Server Tableau Prep Conductor 0' は実行中です。
        'Tableau Server インデックス作成/検索サーバー 0' は実行中です。
        'Tableau Server データに聞く 0' は実行中です。
        'Tableau Server 管理エージェント 0' は実行中です。
        'Tableau Server サービス マネージャー 0' は実行中です。
        'Tableau Server クライアント ファイル サービス 0' は実行中です。
        'Tableau Server データベースのメンテナンス 0' は停止しています。
        'Tableau Server バックアップ/復元 0' は停止しています。
        'Tableau Server サイトのインポート/エクスポート 0' は停止しています。
        'Tableau Server Webhook 0' は実行中です。
        'Tableau Server 認証 0' は実行中です。
        'Tableau Server API ゲートウェイ 0' は実行中です。
        'Tableau Server 分析の拡張機能マイクロサービス 0' は実行中です。
        'Tableau Server 仮想接続サービス 0' は実行中です。
        'Tableau Server クエリ ゲートウェイ サービス 0' は実行中です。
        'Tableau Server Tableau Minerva Service 0' は実行中です。
        'Tableau Server 抽出サービス 0' は実行中です。
        'Tableau Server データ プロファイリング サービス 0' は実行中です。
        'Tableau Server データ ストーリー サービス 0' は実行中です。

こちらは TSM UI からも確認でき、下図のようにアクティブなノードでは、色が濃くなっているようです。

検証

本記事では、以下の手順でリポジトリ フェールオーバーの検証を行います。

  • 優先するアクティブなリポジトリの設定
  • アクティブなリポジトリを構成するノードを停止
  • 停止したノードを再開

優先するアクティブなリポジトリの設定

Tableau Server を構成する際、リポジトリプロセスを構成したノードから、優先アクティブ リポジトリとして特定のノードを指定することができます。
これにより、リソースの多いノードでアクティブ リポジトリを構成させることが可能です。優先アクティブ リポジトリ ノードを指定しない場合、Tableau Server 起動時にアクティブ リポジトリ ノードが選択されます。

優先アクティブ リポジトリ ノードの指定は、TSM コマンドで行います。上述の通り、構成段階では初期ノードがアクティブ リポジトリでしたが、ここでは以下のコマンドを実行し、ノード2を優先アクティブ リポジトリとして設定しました。

tsm configuration set -k pgsql.preferred_host -v "tabsrv-node2"

pgsql.preferred_hostの値として、クラスタを構成するホスト名を指定します。この際、ホスト名の大文字小文字が区別される点にご注意ください。
以下のコマンドで設定を反映します。

tsm pending-changes apply

変更反映後、再度ステータスを確認すると、以下のようにノード2がアクティブなリポジトリとなっています。

tsm status -v の出力
>tsm status -v
node1: EC2AMAZ-TGQFA6R
        Status: RUNNING
        'Tableau Server ゲートウェイ 0' は実行中です。
        'Tableau Server アプリケーション サーバー 0' は実行中です。
        'Tableau Server インタラクティブなマイクロサービス コンテナ 0' は実行中です。
                'MessageBus マイクロサービス 0' は実行中です。
                '関係クエリ マイクロサービス 0' は実行中です。
                '認証資格情報サービス 0' は実行中です。
                '推奨 Microservice 0' は実行中です。
        'Tableau Server VizQL Server 0' は実行中です。
        'Tableau Server VizQL Server 1' は実行中です。
        'Tableau Server キャッシュ サーバー 0' は実行中です。
        'Tableau Server キャッシュ サーバー 1' は実行中です。
        'Tableau Server コーディネーション サービス 1' は実行中です。
        'Tableau Server クラスター コントローラー 0' は実行中です。
        'Tableau Server バックグラウンダー 0' は実行中です。
        'Tableau Server バックグラウンダー 1' は実行中です。
        'Tableau Server 非インタラクティブなマイクロサービス コンテナ 0' は実行中です。
        'Tableau Server データ サーバー 0' は実行中です。
        'Tableau Server データ サーバー 1' は実行中です。
        'Tableau Server データ エンジン 0' は実行中です。
        'Tableau Server ファイル ストア 0' は実行中です。
        'Tableau Server リポジトリ 0' は実行中です (パッシブ リポジトリ)。
        'Tableau Server Tableau Prep Conductor 0' は実行中です。
        'Tableau Server Tableau Prep Flow Authoring 0' は実行中です。
        'Tableau Server Tableau Prep Minerva Service 0' は実行中です。
        'Tableau Server インデックス作成/検索サーバー 0' は実行中です。
        'Tableau Server データに聞く 0' は実行中です。
        'Tableau Server 管理エージェント 0' は実行中です。
        'Tableau Server 管理コントローラー 0' は実行中です。
        'Tableau Server サービス マネージャー 0' は実行中です。
        'Tableau Server ライセンス マネージャー 0' は実行中です。
        'Tableau Server Activation Service 0' は実行中です。
        'Tableau Server クライアント ファイル サービス 0' は実行中です。
        'Tableau Server データベースのメンテナンス 0' は停止しています。
        'Tableau Server バックアップ/復元 0' は停止しています。
        'Tableau Server サイトのインポート/エクスポート 0' は停止しています。
        'Tableau Server コレクション サービス 0' は実行中です。
        'Tableau Server Content Exploration Service 0' は実行中です。
        'Tableau Server Webhook 0' は実行中です。
        'Tableau Server 認証 0' は実行中です。
        'Tableau Server API ゲートウェイ 0' は実行中です。
        'Tableau Server 分析の拡張機能マイクロサービス 0' は実行中です。
        'Tableau Server メッセージング サービス 0' は実行中です。
        'Tableau Server データ ソース プロパティ サービス 0' は実行中です。
        'Tableau Server 内部データ ソース プロパティ サービス 0' は実行中です。
        'Tableau Server 仮想接続サービス 0' は実行中です。
        'Tableau Server メトリクス サービス 0' は実行中です。
        'Tableau Server クエリ ゲートウェイ サービス 0' は実行中です。
        'Tableau Server Tableau Minerva Service 0' は実行中です。
        'Tableau Server 抽出サービス 0' は実行中です。
        'Tableau Server データ プロファイリング サービス 0' は実行中です。
        'Tableau Server Resource Limits Manager 0' は実行中です。
        'Tableau Server データ ストーリー サービス 0' は実行中です。
node2: tabsrv-node2
        Status: RUNNING
        'Tableau Server ゲートウェイ 0' は実行中です。
        'Tableau Server アプリケーション サーバー 0' は実行中です。
        'Tableau Server インタラクティブなマイクロサービス コンテナ 0' は実行中です。
                'MessageBus マイクロサービス 0' は実行中です。
                '関係クエリ マイクロサービス 0' は実行中です。
                '認証資格情報サービス 0' は実行中です。
                '推奨 Microservice 0' は実行中です。
        'Tableau Server VizQL Server 0' は実行中です。
        'Tableau Server キャッシュ サーバー 0' は実行中です。
        'Tableau Server コーディネーション サービス 1' は実行中です。
        'Tableau Server クラスター コントローラー 0' は実行中です。
        'Tableau Server バックグラウンダー 0' は実行中です。
        'Tableau Server 非インタラクティブなマイクロサービス コンテナ 0' は実行中です。
        'Tableau Server データ サーバー 0' は実行中です。
        'Tableau Server データ エンジン 0' は実行中です。
        'Tableau Server ファイル ストア 0' は実行中です。
        'Tableau Server リポジトリ 0' は実行中です (アクティブ リポジトリ)。
        'Tableau Server Tableau Prep Conductor 0' は実行中です。
        'Tableau Server インデックス作成/検索サーバー 0' は実行中です。
        'Tableau Server データに聞く 0' は実行中です。
        'Tableau Server 管理エージェント 0' は実行中です。
        'Tableau Server サービス マネージャー 0' は実行中です。
        'Tableau Server クライアント ファイル サービス 0' は実行中です。
        'Tableau Server データベースのメンテナンス 0' は停止しています。
        'Tableau Server バックアップ/復元 0' は停止しています。
        'Tableau Server サイトのインポート/エクスポート 0' は停止しています。
        'Tableau Server Webhook 0' は実行中です。
        'Tableau Server 認証 0' は実行中です。
        'Tableau Server API ゲートウェイ 0' は実行中です。
        'Tableau Server 分析の拡張機能マイクロサービス 0' は実行中です。
        'Tableau Server 仮想接続サービス 0' は実行中です。
        'Tableau Server クエリ ゲートウェイ サービス 0' は実行中です。
        'Tableau Server Tableau Minerva Service 0' は実行中です。
        'Tableau Server 抽出サービス 0' は実行中です。
        'Tableau Server データ プロファイリング サービス 0' は実行中です。
        'Tableau Server データ ストーリー サービス 0' は実行中です。

TSM UI でもノード1が濃くなっていました。

アクティブなリポジトリを構成するノードを停止

アクティブなリポジトリを構成するノード(ノード2)を停止します。
ここでは、ノード2にログインし、実行中の下図のサービスを停止します。

停止後、すぐに TSM のプロセスでも障害が検知されます。リポジトリをはじめとする各プロセスの状態がエラーとなっています。

その後すぐに、初期ノードのリポジトリ プロセスの背景色が濃くなりました。つまり、リポジトリ プロセスが初期ノードに自動的にフェールオーバーされました。

フェールオーバーしたので、Tableau Server の操作は引き続き実行できます。

停止したノードを再開

ノード2で停止したサービスを再開します。

サービスの開始により、各プロセスが正常に動作し始めます。

すべてのプロセスが正常に動作しました。
リポジトリ プロセスを確認すると、元々アクティブなリポジトリとして設定していたノード2が、パッシブ リポジトリとなり、フェールオーバーした初期ノードのリポジトリが、アクティブな状態になっています。

これは正常な動作で、フェールオーバーが発生すると、元々アクティブなリポジトリは、パッシブ リポジトリとなります。
コマンドでもステータスを確認します。

tsm status -v の出力
>tsm status -v
node1: EC2AMAZ-TGQFA6R
        Status: RUNNING
        'Tableau Server ゲートウェイ 0' は実行中です。
        'Tableau Server アプリケーション サーバー 0' は実行中です。
        'Tableau Server インタラクティブなマイクロサービス コンテナ 0' は実行中です。
                'MessageBus マイクロサービス 0' は実行中です。
                '関係クエリ マイクロサービス 0' は実行中です。
                '認証資格情報サービス 0' は実行中です。
                '推奨 Microservice 0' は実行中です。
        'Tableau Server VizQL Server 0' は実行中です。
        'Tableau Server VizQL Server 1' は実行中です。
        'Tableau Server キャッシュ サーバー 0' は実行中です。
        'Tableau Server キャッシュ サーバー 1' は実行中です。
        'Tableau Server コーディネーション サービス 1' は実行中です。
        'Tableau Server クラスター コントローラー 0' は実行中です。
        'Tableau Server バックグラウンダー 0' は実行中です。
        'Tableau Server バックグラウンダー 1' は実行中です。
        'Tableau Server 非インタラクティブなマイクロサービス コンテナ 0' は実行中です。
        'Tableau Server データ サーバー 0' は実行中です。
        'Tableau Server データ サーバー 1' は実行中です。
        'Tableau Server データ エンジン 0' は実行中です。
        'Tableau Server ファイル ストア 0' は実行中です。
        'Tableau Server リポジトリ 0' は実行中です (アクティブ リポジトリ)。
        'Tableau Server Tableau Prep Conductor 0' は実行中です。
        'Tableau Server Tableau Prep Flow Authoring 0' は実行中です。
        'Tableau Server Tableau Prep Minerva Service 0' は実行中です。
        'Tableau Server インデックス作成/検索サーバー 0' は実行中です。
        'Tableau Server データに聞く 0' は実行中です。
        'Tableau Server 管理エージェント 0' は実行中です。
        'Tableau Server 管理コントローラー 0' は実行中です。
        'Tableau Server サービス マネージャー 0' は実行中です。
        'Tableau Server ライセンス マネージャー 0' は実行中です。
        'Tableau Server Activation Service 0' は実行中です。
        'Tableau Server クライアント ファイル サービス 0' は実行中です。
        'Tableau Server データベースのメンテナンス 0' は停止しています。
        'Tableau Server バックアップ/復元 0' は停止しています。
        'Tableau Server サイトのインポート/エクスポート 0' は停止しています。
        'Tableau Server コレクション サービス 0' は実行中です。
        'Tableau Server Content Exploration Service 0' は実行中です。
        'Tableau Server Webhook 0' は実行中です。
        'Tableau Server 認証 0' は実行中です。
        'Tableau Server API ゲートウェイ 0' は実行中です。
        'Tableau Server 分析の拡張機能マイクロサービス 0' は実行中です。
        'Tableau Server メッセージング サービス 0' は実行中です。
        'Tableau Server データ ソース プロパティ サービス 0' は実行中です。
        'Tableau Server 内部データ ソース プロパティ サービス 0' は実行中です。
        'Tableau Server 仮想接続サービス 0' は実行中です。
        'Tableau Server メトリクス サービス 0' は実行中です。
        'Tableau Server クエリ ゲートウェイ サービス 0' は実行中です。
        'Tableau Server Tableau Minerva Service 0' は実行中です。
        'Tableau Server 抽出サービス 0' は実行中です。
        'Tableau Server データ プロファイリング サービス 0' は実行中です。
        'Tableau Server Resource Limits Manager 0' は実行中です。
        'Tableau Server データ ストーリー サービス 0' は実行中です。
node2: tabsrv-node2
        Status: RUNNING
        'Tableau Server ゲートウェイ 0' は実行中です。
        'Tableau Server アプリケーション サーバー 0' は実行中です。
        'Tableau Server インタラクティブなマイクロサービス コンテナ 0' は実行中です。
                'MessageBus マイクロサービス 0' は実行中です。
                '関係クエリ マイクロサービス 0' は実行中です。
                '認証資格情報サービス 0' は実行中です。
                '推奨 Microservice 0' は実行中です。
        'Tableau Server VizQL Server 0' は実行中です。
        'Tableau Server キャッシュ サーバー 0' は実行中です。
        'Tableau Server コーディネーション サービス 1' は実行中です。
        'Tableau Server クラスター コントローラー 0' は実行中です。
        'Tableau Server バックグラウンダー 0' は実行中です。
        'Tableau Server 非インタラクティブなマイクロサービス コンテナ 0' は実行中です。
        'Tableau Server データ サーバー 0' は実行中です。
        'Tableau Server データ エンジン 0' は実行中です。
        'Tableau Server ファイル ストア 0' は同期中です。
        'Tableau Server リポジトリ 0' は実行中です (パッシブ リポジトリ)。
        'Tableau Server Tableau Prep Conductor 0' は実行中です。
        'Tableau Server インデックス作成/検索サーバー 0' は実行中です。
        'Tableau Server データに聞く 0' は実行中です。
        'Tableau Server 管理エージェント 0' は実行中です。
        'Tableau Server サービス マネージャー 0' は実行中です。
        'Tableau Server クライアント ファイル サービス 0' は実行中です。
        'Tableau Server データベースのメンテナンス 0' は停止しています。
        'Tableau Server バックアップ/復元 0' は停止しています。
        'Tableau Server サイトのインポート/エクスポート 0' は停止しています。
        'Tableau Server Webhook 0' は実行中です。
        'Tableau Server 認証 0' は実行中です。
        'Tableau Server API ゲートウェイ 0' は実行中です。
        'Tableau Server 分析の拡張機能マイクロサービス 0' は実行中です。
        'Tableau Server 仮想接続サービス 0' は実行中です。
        'Tableau Server クエリ ゲートウェイ サービス 0' は実行中です。
        'Tableau Server Tableau Minerva Service 0' は実行中です。
        'Tableau Server 抽出サービス 0' は実行中です。
        'Tableau Server データ プロファイリング サービス 0' は実行中です。
        'Tableau Server データ ストーリー サービス 0' は実行中です。

手動リポジトリ フェールオーバー

フェールオーバーの発生後に、特定のノードにアクティブなリポジトリを戻したい場合は、tsm topology failover-repositoryコマンドで、現在のアクティブなリポジトリから、パッシブ リポジトリへのフェールオーバーを手動で実行することが可能です。

実行例

>tsm topology failover-repository --preferred
リポジトリをフェールオーバーする非同期ジョブを開始しています。
ジョブ ID '6'、タイムアウトは 10 分です。
50% - リポジトリのフェールオーバーを開始しています。。
100% - リポジトリのフェールオーバー終了を待機しています。
リポジトリのフェールオーバーが正常に実行されました。

本記事の構成の場合、上記のコマンドにより、元々アクティブとして設定していたノード2がアクティブ リポジトリとして復帰します。

さいごに

Tableau Server の自動リポジトリ フェールオーバーを試してみました。
リポジトリは重要なプロセスなので、必要に応じて冗長化をご検討ください。こちらの内容が何かの参考になれば幸いです。