『Tableau Server on AWS』を読んでみた(1).AWS環境に構築する際の基本方針
弊社ではTableau ServerをAWS環境上に構築する案件に数多く携わっていますが、構築に際しては幾つかのポイントも存在します。先日色々調べ物をしていたらAWSによる以下のホワイトペーパーを見つけたので、その内容についてざっくりではありますが読み進めてみたいと思います。
目次
Tableau Serverとは
Tableau ServerはBIを、ブラウザやモバイル環境からのアクセスを可能としているあらゆる規模の組織に対して提供しています。Tabelau Serverは情報共有を簡素化し、以下のメリットを提供する事でインタラクティブなデータの視覚化を促す為に開発されました。
- シンプルなユーザーインタフェース
- 柔軟なデータアーキテクチャ
- データやコンテンツの自動アップデート
- 埋め込み分析
- スケーラブル
- セキュア
- モバイル対応
以降の項では、幾つかのAWSサービスを用いてAWS環境上でTableau Serverを構築する方法について見て行きたいと思います。
はじめに
Amazon EC2はAWSクラウド上でサイズが変更可能な計算能力を提供します。従来のインフラストラクチャのフレームワークの枠組みで言えば、Amazon EC2はアプリケーションやWebサーバ、データベース、今回の場合であればTableau Serverが入る事になる『サーバ』となります。
Tableau Serverのシステム要件は、ユーザーやワークロード等を含む多くの要因がどのようなものとなるかに拠って異なってきます。AWS上では、Tableau Serverは32bit/64bit双方のバージョンで利用出来ますが、ここでは64bitバージョンを強くお勧めします。カスタムでインストールする場合、以下いずれかのMicrosoft Windows 64bitバージョンのOSでのインストールをお勧めします。
- Windows Server 2008/Windows Server 2008 R2
- Windows Server 2012/Windows Server 2012 R2
利用するユーザー数に基づいて、指針となるCPUやメモリも異なってきます。
利用人数 | CPU | RAM |
---|---|---|
25人未満 | 4-core | 8 GiB |
100人未満 | 8-core | 32 GiB |
100人以上 | 16-core | 64 GiB |
Amazon EC2では異なる用途に合わせて、それぞれに最適化されたインスタンスタイプを提供しています。それぞれのインスタンスタイプは1つ以上のインスタンスサイズを含み、ワークロードの内容に応じたリソースの拡張が可能です。以下の表はサーバーインフラ要件に応じた、推奨されるAmazon EC2のインスタンスタイプです。
ユーザー数 | インスタンスタイプ | vCPU | RAM(GiB) |
---|---|---|---|
25人未満 | m3.2xlarge | 8 | 30 |
c3.2xlarge | 8 | 15 | |
r3.2xlarge | 8 | 61 | |
100人未満 | c3.4xlarge | 16 | 30 |
r3.4xlarge | 16 | 122 | |
100人以上 | c3.8xlarge | 32 | 60 |
r3.8xlarge | 32 | 244 |
vCPUと仮想コア数については以下情報等もご参照ください。
- Amazon EC2 および RDS DB インスタンスタイプ別の仮想コア数 | AWS
- Tableau Server 9.1: 単体サーバ構成時の『構成要件』とAWS EC2インスタンスタイプスペック比較のまとめ | Developers.IO
マーケットプレイスを使った導入
マーケットプレイス(Marketplace)を用いた導入については以前のエントリでまとめたものがありますのでこちらをご参照ください。
Tableauサイトからインストーラを入手してインストール
こちらも、インストール作業そのものについては幾度と無く当ブログでもご紹介していますので導入そのものの詳細は割愛します。
この方法でTableau Serverをインストールする場合、Amazon EC2で用いるストレージについては適切なストレージを選択する必要があります。
Amazon Elastic Block Store(Amaozn EBS)は、EC2インスタンスで使用するための永続的なブロックレベルのストレージボリュームを提供します。Tableau Serverインストールの際は少なくとも100GBのGeneral Purpose(SSD)ボリュームをアタッチすべきです。このボリュームサイズだとベースラインでは300IOPS、バースト時3000IOPSのパフォーマンス性能となります。詳細については下記ドキュメントの『I/O クレジットおよびバーストパフォーマンス』の項をご参照ください。
重いワークロードの場合、Amazon EBS General Purpose(SSD)ボリュームを10000 IOPS(GiBあたり3IOPS)にまで上げる事で改善が見込めます。また、必要なIOPSを備えたAmazon EBS Provisioned IOPS(SSD)を使う事も出来ます。IOPS周り・プロビジョンドIOPSについては以下各種ドキュメントをご参照ください。
- I/O 特性 - Amazon Elastic Compute Cloud
- Amazon Web Services ブログ: 【AWS発表】Provisioned IOPS for EBS - I/O性能を設定できるEBSボリュームが登場!
- Amazon Web Services ブログ: 【AWS発表】プロビジョンドIOPS(SSD)および汎用(SSD) EBSボリュームのスループットを強化
- AWS Summit 2014 Tokyo「Amazon EBS ボリュームの性能特性と構成方法を習得する!」レポート | Developers.IO
いずれのケースに於いても、重い抽出や処理を実行する必要がある場合、Amazon EBSを最適化したインスタンスを使う事をお勧めします。パフォーマンスを改善させるための包括的案情報の詳細についてはTableau Serverドキュメントの『パフォーマンスの調整の例』をご参照ください。
AWS上のTableau Serverに於けるセキュリティ
AWSでは、Tableau Server環境を保護する為に利用出来る以下のセキュリティ機能を提供しています。
- Amazon Virtual Private Cloud (Amazon VPC):
- プライベートサブネットを作成する事により、環境に対してネットワークセキュリティのレイヤーを追加する事が出来ます。
- セキュリティグループ:
- 環境におけるインバウンド・アウトバウンド通信を許可・制限する事が出来る"ビルトインファイアウォール"のようなものです。
- AWS Identity and Access Management (IAM):
- アクセスレベルを指定した制御が可能となります。
- AWS Direct Connect:
- 業界標準802.1Q VLANを使って、企業ネットワークからAWSへの専用線ネットワーク接続を実現します。
エンタープライズアプリケーションセキュリティでは、『ネットワーク』『アクセス』『データ』の3つの主要コンポーネントがあります。次の項では、AWS環境下でどのようにしてこれらの機能を実装していくか、そしてレポートやダッシュボード等、広範かつ多様なユーザーのニーズにしっかり対応出来るようなTableau Serverをどのように構築していくかについて見ていきます。
ネットワーク
AWSでのTableau Serverのネットワークセキュリティは、内部及び外部の通信のセキュリティを保護しているAmazon VPCセキュリティグループの使用状況に依存します。
Amazon VPC
Amazon VPCはクラウド内で個別に分離されたネットワークです。各VPC内のネットワークトラフィックは、他の全てのAmazon VPCから分離されますAmazon VPCを使用する事で、ネットワークサブネットを作成し、アプリケーション層をより高度に制御されたネットワークサブネットに分割する事が出来ます。
Amazon VPC内部の独立したサブネットの内部にTableau Serverをインストールし、稼働させる事をお勧めします。Tableau Serverとその他データセットに対するアクセスを状況に応じて設定・構成する事が出来ます。下図はAmazon VPC環境下でのTableau Serverの一般的なインストール構成です。
セキュリティグループ
セキュリティグループを使用してTableau Serverにアクセスする事が出来るネットワークトラフィックを制限する事が出来ます。 Amaozn EC2セキュリティグループは、Amazon EC2インスタンスとの間のネットワークトラフィックを制御するファイアウォールとして機能します。Amazon EC2インスタンスには作成時に適切なセキュリティグループを割り当てる事が出来ます。デフォルトではEC2インスタンスに付与されているセキュリティグループはインバウンドトラフィックを『何も許可しない』ステータスとなっていますが、EC2インスタンスに適切なインバウンドトラフィックを許可するような変更を行う事が出来ます。
Tableau Serverに接続するための最小要件は以下の内容となります。
- リモートデスクトップ接続(ポート:3389)
- HTTP接続(ポート:80)及びHTTPS接続(ポート:443)/ホストされているコンテンツ閲覧、Tableau Serverへのパブリッシュ等で利用。
- Tableau Serverコンポーネント間通信
これらの要件に基づき、Tableau Serverのセキュリティグループではポート:80(HTTP), 443(HTTPS), 3389(RDP)をインスタンスアクセスの為にインバウンド通信にて許可する必要があります。対象となる幾つかのホストからのみ、RDP接続を許可し、また企業ネットワーク内のホストと信頼されたクライアントに対してHTTP/HTTPS通信を許可するようにしておく必要があります。
クライアントアクセス
デフォルトでは、Tableau Serverは標準でHTTPリクエストとレスポンスを使用します。またTableau Serverでは顧客指定の証明書を用いる事でHTTPS(SSL)通信を行うように設定する事も出来ます。Tableau ServerにSSL設定を適用すると、全てのコンテンツとクライアント間の通信が暗号化され、HTTPS通信を行うようになります。Tableau ServerでSSLを設定すると、ブラウザとサーバー上のSSLライブラリは一般的な暗号化レベルをネゴシエイトします。Tableau ServerはサーバサイドSSLライブラリとしてOpenSSLを使用し、現在受け入れられている標準を使用するように設定されます。Tableau ServerにSSL経由でアクセスする各Webブラウザは、ブラウザによって提供される標準のSSL実装を使用します。
内部通信
分散サーバインストールに於けるTableau Serverコンポーネント間の通信には2つの側面があります。『信頼』と『トランスミッション』です。Tableau Serverクラスタ環境下での各サーバは、他のサーバーから有効なリクエストを受け取っている事を保証するために厳格な信頼モデルを使用しています。IPアドレス、ポート、プロトコルから成るホワイトリストによって信頼が確立されます。これらの要素のいずれかが有効でない場合、リクエストは無視されます。
ゲートウェイプロセスを実行しているクラスタ内のコンピュータは、ロードバランサーの要求を受信する場合を除き、第三者(クライアント)から要求を受け入れます。ゲートウェイサーバを実行していないサーバは、クラスタの他の信頼されたメンバーからのみリクエストを受け入れます。ライセンスの認証及びリポジトリへのアクセスを除いて、全ての内部通信の伝送はHTTP経由で実行されます。Tableau Serverに於けるSSL通信の有効化の詳細については以下をご参照ください。
アクセス制限
アクセスセキュリティはユーザーのIDを確立し、不正アクセスを防止し、各ユーザーの体験をパーソナライズする為に用いられます。Tableau Serverでは、以下の3種類の認証をサポートしています。
また、システムの名前付きユーザー毎にアカウントを作成する事で、Tableau Serverはユーザーにパーソナライズされた体験を提供します。詳細については以下をご参照ください。
AWS Directory Service
AWS Directoryy Serviceはマネージドサービスです。(AD Connectorを使って)Microsoft Active Directoryのような既存のオンプレミスディレクトリに接続する事が出来たり、または(Simple AD等で)新しいスタンドアロンディレクトリをAWSクラウド内にセットアップする事が出来ます。
オンプレミスディレクトリに接続する事は簡単です。そして一旦接続が確立されれば、全てのユーザーがAWSリソースとアプリケーションを既存の企業内資格情報で使えるようになります。AWS Directory Serviceを使うと、ローカル認証のかわりにActive Directoryベースの認証利用を選択する事が出来ます。(ローカル認証はユーザーを作成し、Tableau Server組み込みのユーザー管理システムを使用してパスワードをユーザーに割り当てます)
Active Directoryベースの認証をセットアップするためには、Tableau Serverインストールの[Configuration]の手順でActive Directoryを選ぶ必要があります。また、Active Directory認証とローカル認証の切り替えは不可能ですのでご注意ください。(ユーザー認証、アクセス制限に掛かる部分の情報は切り替えると全てリセットされてしまいます)
Active Directory認証モデルは、Microsoftセキュリティサポートプロバイダーインターフェース(SSPI)を使って、Windowsユーザー名とパスワードに基づいてユーザーを自動的にサインインします。これによりユーザーはシングルサインオン(SSO)に似たような体験をする事が出来ます。
フェイルオーバーサポートや高可用性を備えた『分散環境』モードでのTableau Server環境においても、AWS Directory Serviceを利用する事が出来ます。分散環境モードではクラスタ内の全てのコンピューターが同一ドメインのメンバーである必要があります。またユーザーアカウントとして、Tableau Serverのプライマリとして実行するアカウントは、同一ドメインのドメインアカウントである必要があります。
データ
Tableau Serverはネイティブドライバを利用して(利用出来ない場合は汎用ODBCドライバに依存するが)、データベースの結果セットを処理します。抽出や更新及びその他全ての通信には可能な限りデータベースに接続を行います。非標準のポート上で通信または暗号化を使用するドライバ設定を構成する事も出来ますが、構成内容についてはTableau Serverに対して透過的なものとなります。しかしながら、Tableau Serverからデータベースサーバへの通信は通常はファイアウォールの背後にある形となり、殆どのお客様はこの通信を暗号化しない選択をされています。
AWS上のデータストアに接続
AWSではAmazon RDSやAmazon EMR、Amazon Redshift等のデータ系リソースをVPC内部に構築する事が出来ます。データストアとして同じAmazon VPC内部にTableau Serverを配置する事により、非常に近い位置で通信を行う事が可能となります。
AWS外部のデータストアにアクセス
IPSecハードウェアVPN接続を使用して、Amazon VPCから企業のデータセンターに接続を行う事も選択出来ます。データセンターの拡張としてAWSクラウドを構成する事が出来ます。VPN接続はAmazon VPCとデータセンターにあるカスタマーゲートウェイを連携した仮想専用ゲートウェイで構成されています。
AWS Direct ConnectはAWSクラウドサービスを利用する為のインターネット接続にかわる代替手段を提供するネットワークサービスです。業界標準の802.1Q VLANsを使う事により、AWS Direct Connectで専用のネットワーク接続を確立する事が出来ます。
公共及び民間の環境のネットワーク分離を維持しながら、パブリックなリソース(パブリックIPアドレスを用いるAmazon S3のような)へのアクセスや プライベートなリソース(プライベートIPスペースを使ったAmazon VPC内部のAmazon EC2インスタンスのような)へのアクセスに同じ接続を使用出来ます。
まとめ
ホワイトペーパー『Tableau Server on AWS』、内容の前半部分となるAWS環境下での基本方針に関する内容のご紹介でした。ホワイトペーパーでは後半部分でクラスタ構成に関する内容を解説しています。こちらについても折を見てご紹介出来ればと思います。こちらからは以上です。