データベース

XenAppまたはXenDesktopサイトは、以下の3種類のSQL Serverデータベースを使用しています。

  • サイト:(別名:サイト構成)実行中のサイト構成に加えて、その時点でのセッションの状態と接続情報を格納します。
  • 構成ログ:(別名:ログ)サイト構成の変更や管理タスクに関する情報を格納します。このデータベースは、構成ログ機能が有効化(デフォルトは有効)されているときに使用されます。
  • モニター: セッションや接続情報などのデータを格納するために、Directorにより使用されます。

各Delivery Controllerはサイトデータベースと通信します。Controllerとデータベース間の接続にはWindows認証が必要です。任意のControllerをシャットダウンしても、そのサイトのほかのControllerには影響しません。しかしながら、これはサイトデータベースが単一障害点になりうることを意味します。このデータベースサーバーで障害が発生しても、既存の接続は、ユーザーがログオフまたは切断するまでは機能し続けます。サイトデータベースが利用不可能な場合の接続動作について詳しくは、「ローカルホストキャッシュ」を参照してください。

データベースのバックアップを定期的に作成して、データベースサーバーに障害が発生してもバックアップから復元できるようにすることをお勧めします。各データベースを異なる方法でバックアップしなければならない場合があります。手順については、CTX135207を参照してください。

サイトに複数のゾーンが含まれている場合は、サイトベースは必ずプライマリゾーンに格納してください。すべてのゾーンのコントローラーは、このデータベースと通信します。

高可用性

自動フェールオーバーを確実にするために、数種類の高可用性ソリューションがあります。

  • AlwaysOn可用性グループ機能(基本的な可用性グループを含む): SQL Server 2012で導入されたエンタープライズレベルの高可用性および障害回復ソリューション。これにより、1つまたは複数のデータベースの可用性を最大化できます。AlwaysOn可用性グループ機能では、Windows Server Failover Clustering(WSFC)ノード上にSQL Serverインスタンスが存在する必要があります。詳しくは、https://msdn.microsoft.com/en-us/library/hh510230を参照してください。
  • SQL Serverデータベースのミラーリング: データベースをミラーリングすると、アクティブなデータベースサーバーが停止しても自動フェールオーバー処理が実行され、ユーザーは通常、停止の影響を受けません。各データベースサーバー上に完全なSQL Serverライセンスが必要になるため、ほかのソリューションよりも費用が高くつきます。SQL Server Expressエディションを使用してデータベースをミラーリングすることはできません。
  • SQLクラスタリング: MicrosoftのSQLクラスタリングテクノロジを使用して、任意のサーバーに障害が起きた場合に別のサーバーが自動的にタスクや実行内容を引き継ぐようにできます。ただし、このソリューションのセットアップは複雑で、SQLミラーリングなどほかのソリューションよりも自動フェールオーバー処理には一般的に時間がかかります。
  • ハイパーバイザーの高可用性機能の使用: この方法では、仮想マシンとしてデータベースを展開し、ハイパーバイザーの高可用性機能を使用します。このソリューションでは既存のハイパーバイザーソフトウェアを使用でき、またSQL Server Expressエディションも使用できるため、ミラーリングよりも費用が安いというメリットがあります。ただし、データベースの新しい仮想マシンの起動に時間がかかるため、自動フェールオーバー処理が遅くなり、ユーザーへのサービスが中断する可能性があります。

SQL Server高可用性ベストプラクティスを補完するローカルホストキャッシュ機能を使用すると、サイトデータベースが使用不可の場合でも、ユーザーがアプリケーションやデスクトップに接続および再接続できるようになります。詳しくは、「ローカルホストキャッシュ」を参照してください。

サイト内のすべてのControllerで障害が起きた場合、VDAが高可用性モードで動作するように構成できます。これにより、ユーザーは障害発生後もデスクトップやアプリケーションにアクセスして使用することができます。高可用性モードでは、Controllerを経由しない、VDAへの直接ICA接続が可能になります。この機能は、すべてのControllerとの通信に障害がある場合にのみ使用してください。ほかの高可用性ソリューションの代替策ではありません。詳しくは、CTX 127564を参照してください。

SQLクラスター化またはSQLミラー化インストールにおける、ノード上へのControllerのインストールはサポートされていません。

データベースソフトウェアのインストール

デフォルトでは、初めてDelivery Controllerをインストールしたときに、そのサーバーで他のSQL Serverインスタンスが検知されなかった場合に、SQL Server Expressエディションがインストールされます。通常、概念実証またはパイロット展開では、このデフォルトの動作で十分です。ただし、SQL Server ExpressはMicrosoftの高可用性機能をサポートしていません。

デフォルトのインストールでは、デフォルトのWindowsサービスアカウントおよび権限を使用します。Windowsサービスアカウントをsysadminロールに追加する方法など、デフォルトの設定について詳しくは、Microsoft社のドキュメントを参照してください。Controllerは、この構成でNetwork Serviceアカウントを使用します。SQL Serverに追加のロールまたは権限は必要ありません。

必要に応じて、データベースインスタンスで[インスタンスの非表示]を選択できます。Studioでデータベースのアドレスを構成する場合、インスタンス名ではなく、インスタンスの静的ポート番号を入力してください。SQL Serverデータベースエンジンのインスタンスを非表示にする方法について詳しくは、Microsoft社のドキュメントを参照してください。

大半の実稼働展開、およびMicrosoftの高可用性機能を利用しているすべての展開では、最初のControllerをインストールしたサーバー以外のマシンにインストールされており、なおかつExpress以外のサポート対象エディションのSQL Serverを使用してください。サポートされているSQL Serverのバージョンについては、「システム要件」の記事を参照してください。データベースは1つまたは複数のマシンに常駐できます。

サイトを作成する前に、SQL Serverソフトウェアをインストールしておく必要があります。データベースを作成する必要はありませんが、作成する場合は、必ず空にしておいてください。Microsoft高可用性テクノロジの構成も推奨されます。

Windows Updateを使用して、SQL Serverを最新の状態に保ってください。

サイトの作成ウィザードを使ったデータベースのセットアップ

サイトの作成ウィザードの[データベース]ページでデータベースの名前とアドレス(場所)を指定します。後述の「データベースのアドレス形式」を参照してください。DirectorがMonitor Serviceをクエリするときのエラーを回避するためには、監視データベースの名前にはスペースを使用しないでください。

[データベース]ページには、自動とスクリプト使用の2つのデータベース設定オプションがあります。StudioユーザーやCitrix管理者が、必要なデータベースアクセス権を持っている場合は、通常、自動オプションを使用します。データベースのセットアップに必要な権限については、後述の「権限」を参照してください。

データベースの場所は、サイトの作成後に変更できます。後述の「データベースの場所の変更」を参照してください。

ミラーデータベースを使用するようにサイトを構成するには、以下の手順を完了してから、自動またはスクリプトによるセットアップ手順に進みます。

  1. SQL ServerソフトウェアをサーバーAおよびBにインストールします。
  2. サーバーAに、プライマリとして使用するデータベースを作成します。サーバーAのデータベースをバックアップしてから、サーバーBにコピーします。
  3. サーバーBで、バックアップファイルを復元します。
  4. サーバーAでミラーリングを開始します。

サイトの作成後にミラーリング設定を検証するには、PowerShellコマンドレットget-configdbconnectionを実行して、ミラーに対する接続文字列でフェールオーバーパートナーが設定されていることを確認します。

ミラー化されたデータベース環境でDelivery Controllerを後から追加、移動、または削除する場合は、「Delivery Controller」の記事を参照してください。

自動セットアップ

必要なデータベース権限を持っている場合は、サイトの作成ウィザードの[データベース]ページにある「Studioでデータベースを作成および設定する」オプションを選択し、プリンシパルデータベースの名前とアドレスを指定します。

指定したアドレスにデータベースが存在する場合、そのデータベースは空でなければなりません。指定されたアドレスにデータベースが存在しない場合、データベースが見つからないというメッセージが表示され、データベースを作成するかどうかの確認を求められます。作成に同意すると、Studioにより自動的にデータベースが作成され、プリンシパルデータベースとレプリカデータベースに初期化スクリプトが適用されます。

スクリプトを使ったセットアップ

必要なデータベース権限がない場合は、データベース管理者など、権限を持っている人に支援を依頼する必要があります。その手順は以下のとおりです。

  1. サイトの作成ウィザードで[スクリプトを生成]オプションを選択します。この操作により、合計6つのスクリプトが作成されます。3つのデータベースそれぞれに対して2つずつ(1つはプリンシパルデータベース、もう1つは各レプリカデータベース)が使用されます。スクリプトの格納先を指定します。
  2. これらのスクリプトをデータベース管理者に渡します。この時点で、サイトの作成ウィザードは自動的に停止します。あとでサイトの作成を続行しに戻ってきたときに、プロンプトが表示されます。

その後、データベース管理者がデータベースを作成します。個々のデータベースには、次の特性が必要です。

  • 「_CI_AS_KS」で終わる照合順序を使用します。Citrixは、「_100_CI_AS_KS」で終わる照合順序の使用を推奨しています。
  • 最適なパフォーマンスを実現するには、SQL Server Read-Committed Snapshotを有効化します。詳しくは、CTX137161を参照してください。
  • 必要に応じて、高可用性機能を構成します。
  • ミラーリングを構成するには、まず、完全復旧モデルを使用するようにデータベースを設定します(デフォルトは簡易モデル)。プリンシパルデータベースをファイルにバックアップして、それをミラーサーバーにコピーします。ミラーデータベースで、バックアップファイルをミラーサーバーに復元します。その後、プリンシパルサーバーでミラーリングを開始します。

データベース管理者は、SQLCMDコマンドラインユーティリティ、またはSQL Server Management StudioをSQLCMDモードで使用し、高可用性SQL Serverデータベースインスタンスで各xxx_Replica.sqlスクリプトを実行します(高可用性機能が構成されている場合)。その後、プリンシパルSQL Serverデータベースインスタンスで各xxx_Principal.sqlスクリプトを実行します。SQLCMDについて詳しくは、Microsoftのドキュメントを参照してください。

すべてのスクリプトが正常に終了したら、データベース管理者は、Citrix管理者に3種類のプリンシパルデータベースアドレスを渡します。

Studioには、サイトの作成の続行を促すプロンプトが表示され、[データベース]ページに戻ります。渡されたアドレスを入力します。データベースをホストしているサーバーのいずれかに接続できない場合、エラーメッセージが表示されます。

データベースのセットアップに必要な権限

データベースを作成し、初期化(または、データベースの場所を変更)するには、ローカル管理者およびドメインユーザーでなければなりません。また、特定のSQL Server権限も必要です。以下の権限は、Active Directoryのグループメンバーシップで明示的に構成または取得できます。Studioを使用する管理者にこれらの権限がない場合、SQL Serverユーザーの資格情報を入力する必要があります。

操作 目的 サーバーロール データベースロール
データベースの作成 空のデータベースを作成する dbcreator  
スキーマの作成 サービス固有のスキーマすべてを作成し、サイトに最初のControllerを追加する securityadmin* db_owner
Controllerの追加 サイトに2つ目以降のControllerを追加する securityadmin* db_owner
Controllerの追加(ミラーサーバー) ミラー化済みデータベースのミラーロールのデータベースサーバーにControllerを追加する securityadmin*  
スキーマの更新 スキーマの更新プログラムやHotfixを適用する   db_owner

* securityadminは、技術的にはより限定的なサーバーロールですが、実際にはsysadminサーバーロールと同等のものとして扱われます。

Studioを使ってこれらの操作を実行する場合、sysadminサーバーロールの権限が必要です。

データベースのアドレス形式

データベースのアドレスは、以下の形式のいずれかで指定できます。

  • ServerName
  • ServerName\InstanceName
  • ServerName、PortNumber

AlwaysOn可用性グループ機能では、場所フィールドにグループのリスナーを指定します。

データベースの場所の変更

データベースの場所はサイトの作成後に変更できます。データベースの場所を変更する場合は、以下の点に注意してください。

  • 変更前のデータベース内のデータは変更後のデータベースにインポートされません。
  • 構成ログデータベースの場所を変更する場合、変更前のデータベースの内容は集約されなくなります。
  • 変更後のデータベースの最初にデータベースの変更を示すログが記録されますが、変更前のデータベースの場所は記録されません。

データベースが切断されているときの構成変更が禁止された環境(必須ログ機能)では、構成ログの場所を変更することはできません。

データベースの場所を変更する場合は、次の手順に従います。

  1. データベースを常駐させるサーバーに、サポートされているバージョンのMicrosoft SQL Serverがインストールされていることを確認します。必要に応じて、高可用性機能をセットアップします。
  2. Studioのナビゲーションペインで[構成]を選択します。
  3. 場所を変更するデータベースを選択して、[操作]ペインの[データベースの変更]を選択します。
  4. 変更後の場所とデータベース名を指定します。
  5. 必要な権限を持っているのでデータベースをStudioで作成するという場合は、[OK]をクリックします。確認のメッセージが表示され、[OK]をクリックするとStudioによりデータベースが自動的に作成されます。現在のStudioユーザーの資格情報を使ってデータベースへのアクセスが試行されます。アクセスに失敗すると、データベースにアクセスするための資格情報を入力する画面が開きます。アクセスに成功すると、データベーススキーマがデータベースにアップロードされます(資格情報はデータベース作成時のみ保持されます)。
  6. Studioにデータベースを作成させない場合、または必要な権限がない場合は、[スクリプトを作成]をクリックします。作成されるスクリプトには、データベースおよびミラーデータベース(構成する場合)を手動で作成するためのコマンドが記述されます。スキーマをアップロードする前に、データベースが空であること、および1人以上のユーザーがそのデータベースにアクセスでき、変更できることを確認してください。

詳しい情報の参照先