サーバープロセス〜Tableau Serverの各プロセスの機能を説明する #tableau

はじめに

お早うございます。大阪オフィス唯一のDI部メンバー、tamaでございます。

本エントリは、Tableau Server Qualified Associateの試験ガイド「評価するスキル」に関連する内容となります。

※2018年現在のTableau Server Qualified Associateはバージョン10が対象のため、当エントリもバージョン10を対象にしています。

本エントリの概要

今回は「Tableau Serverの各プロセスの機能を説明する」ということで、Tableau Serverの各プロセス(全体のアーキテクチャ含む)について、ザッと概観したいと思います。

目次

 

Tableau Serverのアーキテクチャ

サーバー管理者の概要より

Tableau Serverは、複数のプロセス(上記画像の青色部分)が連携し合う形で構成されています。

次項より、各プロセスについて見ていきます。(※引用している記載は、Tableau Server プロセスに記載されているものです。)

 

各プロセスについて

 

ゲートウェイ (httpd.exe)

  • Apache Tomcatが使用されています。
  • Tableau Serverに入るための扉の役割を担っています。
  • 主にロードバランサー(ラウンドロビン方式)として機能し、リクエストを他のプロセスにルーティングします。
    • 外部のロードバランサもサポートされています。
  • 外部ロードバランサーの有無に関わらず、このプロセスは必須です。
  • 静的コンテンツのリクエストを処理します。
    • JS, CSS, images, etc…
  • キャッシュを保存します。

参考

アプリケーションサーバー (Vizportal.exe)

Web アプリケーション、REST API 呼び出しを処理し、閲覧と検索をサポートする

  • Tableau ServerのWebUIを構成します。
  • Tableau Serverのログイン処理を制御します。
  • ユーザー、グループ、権限管理のリポジトリと直接連携します。
  • v10以降、APIサーバーの機能を内包するようになりました。
  • このプロセスは必須です。  

リポジトリ (postgres.exe)

Tableau Server のデータベースはワークブックとユーザーのメタデータを保存する

  • PostgreSQLが使用されています。
  • Tableau Serverのメタデータを保存します。
    • ユーザー、グループ、権限など
  • パブリッシュされたワークブック及びそれに関連するファイルを保存します。
    • csv、Excel、Access
  • リポジトリのメタデータは、レポーティングのためにアクセスすることができます。(読み取り専用)
  • 1クラスターにつき最大2つのリポジトリを持つことが出来ます。
    • アクティブ/パッシブ構成
  • クラスターは優先するアクティブなディレクトリ(Preferred Active Repository)を指定することができます。
  • このプロセスは必須です。

参考

VizQLサーバー(vizqlserver.exe)

ビューを読み込んでレンダリングし、クエリを計算して実行する

  • Tableau Serverのビジュアライゼーションをレンダリングします。
  • Tableau Desktopと同様のプロセスと機能を備えています。
  • Vizにリクエストが来ると、次のように処理されます。
    1. ワークブックがリポジトリから読み込まれる。
    2. 適切なデータソースに接続する。
    3. ビジュアライゼーションを生成するために必要なデータのみを取り出す。
    4. 完成したビジュアライゼーションをクライアントに送信する。
  • 同じVizをリクエストする後続ユーザーのパフォーマンスを向上させるため、組込キャッシングが含まれています。
  • このプロセスは必須です。  

データサーバー (dataserver.exe)

Tableau Server のデータ ソースへの接続を管理する

  • データ(VizQLサーバー又はTableau Desktop)と個々のデータソースのリクエスト間のプロキシとして機能します。
  • データ接続とDBドライバー(ODBCもサポート)の一元管理が可能です。
  • 複数のワークブックで、同じ抽出ファイル又はライブ接続を使用することができます。
  • パブリッシュされたデータソースが使用されます。
  • データ自体は保存しません。
  • このプロセスはオプションです。
    • パブリッシュされたデータソースを含むシステムでのみ使用されるため。
    • インストール自体は常に行われるため、使用は可能です。  

データエンジン (hyperd.exe, tdeserver64.exe, tdeserver.exe)

抽出およびプロセスクエリを作成します。

  • DBから抽出されたファイル(10.5以降はhyper, 10.5以前はtde)に対して問い合わせを行います。
  • プロセス数は無制限です。
  • 全てのプロセスはアクティブ、ステートレス、R/Wとなっています。
  • ベクトル型並列のクエリ処理を利用します。
    • tabadminコマンドで並列接続の制限を指定できます。
  • クエリ結果をキャッシュサーバーにキャッシュします。
  • このプロセスはオプションです。
    • パブリッシュされたデータソースを含むシステムでのみ使用されるため。
    • インストール自体は常に行われるため、使用は可能です。

参考

ファイルストア (filestore.exe)

データ エンジン ノード全体で抽出を自動的にレプリケートします。

  • 抽出のストレージを管理し、抽出ファイルをレプリケーションします。
  • Postgresのストリーミングレプリケーションを使用します。
  • このプロセスはオプションです。
    • パブリッシュされたデータソースを含むシステムでのみ使用されるため。
    • インストール自体は常に行われるため、使用は可能です。

参考

バックグラウンダー (backgrounder.exe)

抽出の更新、サブスクリプション、「今すぐ実行」タスク、tabcmd から開始したタスクなどのサーバー タスクを実行する

  • Tableau Serverが円滑かつ効率的に動作するようにタスクを制御します。
  • データエンジンが使用された時、予定されたデータ更新タスクを制御します。
  • 一時的な抽出ファイルを削除します。
  • 予約されたスケジュールタスクを制御します。
  • このプロセスは必須です。  

キャッシュサーバー (redis-server.exe)

クエリのキャッシュ

  • Redisが使用されています。
  • Tableau Serverプロセス間の共有キャッシュとして動作します。
  • VizQLサーバー、バックグラウンダー、およびデータ サーバー (アプリケーション サーバーも限定的に含む)で使用されます。
  • VizQLサーバーインスタンスが再起動しても、キャッシュは保持されます。
  • キャッシュはVizQLサーバープロセスの外側にあり、ノードとプロセスの間で共有されるため、外部クエリキャッシュとも呼ばれます。
  • このプロセスは必須です。  

検索と参照 (searchserver.exe)

サーバー上のコンテンツ メタデータの高速検索、フィルター、取得、および表示を処理します

  • Apache SolrCloudが使用されています。
    • さまざまなノード間で検索プロセスを割り当てることができます。
  • すべての検索機能と参照機能を強化します。
  • このプロセスの使用は必須。  

ライセンス(tablic.exe)

ライセンス プロセスはすべて、定期的にプライマリ Tableau Server コンピューター上で実行する Tableau Server ライセンス マネージャー サービスに定期的に接続する必要があります。有効なライセンスがあることを確認できない場合や、プライマリ ノードが利用できない場合、プロセスは実行されず、Tableau Server は適切に機能しない、または安定して機能しない場合があります。

  • プライマリサーバー上にのみ存在し、分散クラスタ内の他のマシンに追加することはできません。
  • 各種設定は行なえません。
  • ライセンスのチェックは8時間ごとに行われます。  

クラスターコントローラー (clustercontroller.exe)

さまざまなプロセスの監視、障害検出、および必要に応じてフェールオーバーの実行を担当します

  • すべてのノードの基本インストールに含まれます。
  • Tableau Serverの「脳」にあたるプロセスです。
  • 調整サービスによって、クラスターの広い見方があります。
  • サーバーのヘルスや可用性をモニタリングします。
  • プロセスのステータスをレポートします。
  • フェールオーバーをいつ行うか決めます。
  • リポジトリプロセスを起動し、アクティブリポジトリとパッシブリポジトリを調整します。
  • マルチノード・インストールでは、クラスタ・コントローラ・プロビジョニングの1つが、他のノードのリーダーとして調整サービスによって選択されます。 リードクラスタコントローラをホストするノードはランダムであり、必ずしもプライマリサーバである必要はありません。  

調整サービス

分散インストールでは、フェールオーバー中に決定を行うクォーラム (サービスのインスタンスの最小数) があることを確認します

  • Apache Zookeeperが使用されています。
  • 常にプライマリノードにインストールされます。
    • サーバーのインストールに 3 ~ 5 個のノードを使用する場合は、最初の 2 個のワーカー ノードにインストールされます。
    • サーバーのインストールに 6 個以上のノードを使用する場合は、最初の 4 個のワーカー ノードにインストールされます。
  • クラスター内のすべてのノードの情報をクラスターコントローラーおよびファイルストアから保存します。
  • これらのプロセスはアンサンブルと呼ばれる独立したエンティティのように動作します。
    • このサービスと通信するとき、通信相手(ノード上)がどれかは知ることはできませんが、一貫性は維持されるので重要ではありません。

参考

おわりに

今回はTableau Serverの各プロセスについて見てきました。Tableau Serverの各機能は、どのプロセスが司っているかを知ることで、Tableau Serverに対する理解が深まりました。

参考