XenApp and XenDesktop

データベース

XenAppまたはXenDesktop®サイトでは、次の3つのSQL Serverデータベースを使用します。

  • サイト: (サイト構成とも呼ばれます) 実行中のサイト構成、現在のセッション状態、および接続情報を保存します。
  • 構成ログ: (ログとも呼ばれます) サイト構成の変更と管理アクティビティに関する情報を保存します。このデータベースは、構成ログ機能が有効になっている場合 (デフォルト = 有効) に使用されます。
  • 監視: Directorが使用するデータ (セッション情報や接続情報など) を保存します。

各Delivery Controllerはサイトデータベースと通信します。Controllerとデータベース間ではWindows認証が必要です。Controllerは、サイト内の他のControllerに影響を与えることなく、プラグを抜いたり電源を切ったりできます。ただし、これはサイトデータベースが単一障害点となることを意味します。データベースサーバーが故障した場合、既存の接続はユーザーがログオフまたは切断するまで機能し続けます。サイトデータベースが利用できなくなった場合の接続動作については、「ローカルホストキャッシュ」を参照してください。

サイトにDelivery Controller™を追加するときは、高可用性のために使用するレプリカSQL Serverに、そのマシンのログオン資格情報を必ず追加してください。

Citrixは、データベースサーバーが故障した場合にバックアップから復元できるように、データベースを定期的にバックアップすることを推奨します。各データベースのバックアップ戦略は異なる場合があります。手順については、「CTX135207」を参照してください。

サイトに複数のゾーンが含まれている場合は、サイトデータベースをプライマリゾーンに保持します。すべてのゾーンのControllerがそのデータベースと通信します。

高可用性について

自動フェールオーバーを確実にするために考慮すべき高可用性ソリューションがいくつかあります。

  • AlwaysOn可用性グループ (基本可用性グループを含む): SQL Server 2012で導入されたこのエンタープライズレベルの高可用性および災害復旧ソリューションは、1つ以上のデータベースの可用性を最大化することを可能にします。AlwaysOn可用性グループでは、SQL ServerインスタンスがWindows Server Failover Clustering (WSFC) ノード上に存在する必要があります。詳細については、https://docs.microsoft.com/ja-jp/sql/database-engine/availability-groups/windows/always-on-availability-groups-sql-server?redirectedfrom=MSDN&view=sql-server-ver15を参照してください。
  • SQL Serverデータベースミラーリング: データベースをミラーリングすることで、アクティブなデータベースサーバーが失われた場合でも、数秒で自動フェールオーバープロセスが発生し、ユーザーは通常影響を受けません。この方法は、各データベースサーバーで完全なSQL Serverライセンスが必要となるため、他のソリューションよりも高価です。ミラーリング環境ではSQL Server Expressエディションを使用できません。
  • SQLクラスタリング: Microsoft SQLクラスタリングテクノロジーを使用すると、あるサーバーが故障した別のサーバーのタスクと責任を自動的に引き継ぐことができます。ただし、このソリューションのセットアップはより複雑であり、自動フェールオーバープロセスは通常、SQLミラーリングなどの代替手段よりも遅くなります。
  • ハイパーバイザーの高可用性機能の使用: この方法では、データベースを仮想マシンとしてデプロイし、ハイパーバイザーの高可用性機能を使用します。このソリューションは、既存のハイパーバイザーソフトウェアを使用し、SQL Server Expressエディションも使用できるため、ミラーリングよりも安価です。ただし、自動フェールオーバープロセスは遅く、データベース用に新しいマシンが起動するのに時間がかかる場合があり、ユーザーへのサービスが中断される可能性があります。

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

サイト内のすべてのControllerが失敗した場合、ユーザーがデスクトップやアプリケーションに引き続きアクセスして使用できるように、VDAを高可用性モードで動作するように構成できます。高可用性モードでは、VDAはControllerによって仲介される接続ではなく、ユーザーからの直接ICA接続を受け入れます。この機能は、すべてのControllerとの通信が失敗するまれな場合にのみ使用してください。これは、他の高可用性ソリューションの代替ではありません。詳しくは、「CTX 127564」を参照してください。

SQLクラスタリングまたはSQLミラーリングのインストールで、ノードにControllerをインストールすることはサポートされていません。

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

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

デフォルトのインストールでは、デフォルトのWindowsサービスアカウントと権限が使用されます。これらのデフォルトの詳細(Windowsサービスアカウントのsysadminロールへの追加を含む)については、Microsoftのドキュメントを参照してください。この構成では、Controllerはネットワークサービスアカウントを使用します。Controllerには、追加の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. 2台のサーバー(AとB)にSQL Serverソフトウェアをインストールします。
  2. サーバーAで、プリンシパルとして使用するデータベースを作成します。サーバーAのデータベースをバックアップし、サーバーBにコピーします。
  3. サーバーBで、バックアップファイルを復元します。
  4. サーバーAでミラーリングを開始します。

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

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

自動セットアップ

必要なデータベース権限がある場合は、サイト作成ウィザードのデータベースページで「Studioからデータベースを作成してセットアップする」オプションを選択し、プリンシパルデータベースの名前とアドレスを指定します。

指定したアドレスにデータベースが存在する場合、それは空である必要があります。指定したアドレスにデータベースが存在しない場合、データベースが見つからないことが通知され、データベースを作成するかどうかを尋ねられます。その操作を確定すると、Studioは自動的にデータベースを作成し、プリンシパルデータベースとレプリカデータベースの初期化スクリプトを適用します。

スクリプトによるセットアップ

必要なデータベース権限がない場合は、データベース管理者など、その権限を持つ人の助けが必要です。手順は次のとおりです。

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

データベース管理者は、データベースを作成します。各データベースは、次の特性を持っている必要があります。

  • “_CI_AS_KS” で終わる照合順序を使用します。Citrix では、”_100_CI_AS_KS” で終わる照合順序を使用することをお勧めします。
  • 最適なパフォーマンスを得るには、SQL Server の読み取りコミット済みスナップショットを有効にします。詳細については、CTX 137161 を参照してください。
  • 必要に応じて、高可用性機能を構成する必要があります。
  • ミラーリングを構成するには、まずデータベースを完全復旧モデルを使用するように設定します (シンプルモデルがデフォルトです)。プリンシパルデータベースをファイルにバックアップし、ミラーサーバーにコピーします。ミラーデータベースで、バックアップファイルをミラーサーバーに復元します。その後、プリンシパルサーバーでミラーリングを開始します。

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

すべてのスクリプトが正常に完了すると、データベース管理者は Citrix 管理者に3つのプリンシパルデータベースアドレスを提供します。

Studio で、サイト作成を続行するよう求められ、データベースページに戻ります。アドレスを入力します。データベースをホストしているサーバーのいずれかに接続できない場合、エラーメッセージが表示されます。

データベースをセットアップするために必要な権限

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

処理内容 目的 サーバーの役割 データベースの役割
データベースを作成する 適切な空のデータベースを作成する dbクリエーター  
スキーマを作成する すべてのサービス固有のスキーマを作成し、最初のControllerをサイトに追加する セキュリティアドミン* DBオーナー
制御器を追加する (最初のController以外の) Controllerをサイトに追加する セキュリティアドミン* db_オーナー
Controllerを追加する (ミラーサーバー) ミラーデータベースのミラーロールにあるデータベースサーバーにControllerログインを追加する セキュリティ管理者*  
コントローラーを削除する サイトからControllerを削除する ** db_オーナー
スキーマを更新する スキーマの更新またはホットフィックスを適用する   db_オーナー

* 技術的にはより制限的ですが、実際にはsecurityadminサーバーロールはsysadminサーバーロールと同等に扱うべきです。

** コントローラーがサイトから削除されると、Desktop Studioを介して直接、またはDesktop StudioやSDKによって生成されたスクリプトを使用して削除された場合でも、データベースサーバーへのコントローラーのログオンは削除されません。これは、同じマシン上のXenDesktop以外のサービスで使用されているログオンが誤って削除されるのを避けるためです。ログオンが不要になった場合は、手動で削除する必要があります。これにはsecurityadminサーバーロールのメンバーシップが必要です。

これらの操作を実行するためにStudioを使用する場合、ユーザーアカウントはsysadminサーバーロールのメンバーである必要があります。

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

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

  • ServerName
  • ServerName\\InstanceName
  • ServerName,PortNumber

AlwaysOn可用性グループの場合、ロケーションフィールドにグループのリスナーを指定します。

データベースの場所を変更する

サイトを作成した後、構成ログデータベースと監視データベースの場所を変更できます。(サイトデータベースの場所は変更できません。) データベースの場所を変更する場合:

  • 以前のデータベースのデータは、新しいデータベースにはインポートされません。
  • ログの取得時に、両方のデータベースからログを集約することはできません。
  • 新しいデータベースの最初のログエントリは、データベースの変更が発生したことを示しますが、以前のデータベースを特定するものではありません。

強制ログが有効になっている場合、構成ログデータベースの場所を変更することはできません。

データベースの場所を変更するには:

  1. データベースを配置するサーバーに、サポートされているバージョンのMicrosoft SQL Serverがインストールされていることを確認します。必要に応じて、高可用性機能をセットアップします。
  2. Studioナビゲーションペインで、構成を選択します。
  3. 新しい場所を指定するデータベースを選択し、操作ペインでデータベースの変更を選択します。
  4. 新しい場所とデータベース名を指定します。
  5. Studioにデータベースを作成させたい場合で、適切な権限がある場合は、OKをクリックします。プロンプトが表示されたらOKをクリックすると、Studioが自動的にデータベースを作成します。Studioは、資格情報を使用してデータベースへのアクセスを試みます。それが失敗した場合、データベースユーザーの資格情報の入力を求められます。その後、Studioはデータベーススキーマをデータベースにアップロードします。資格情報は、データベース作成期間中のみ保持されます。
  6. Studioにデータベースを作成させたくない場合、または十分な権限がない場合は、スクリプトの生成をクリックします。生成されたスクリプトには、必要に応じてデータベースとミラーデータベースを手動で作成するための手順が含まれています。スキーマをアップロードする前に、データベースが空であり、少なくとも1人のユーザーがデータベースにアクセスして変更する権限を持っていることを確認してください。

詳細については

SQL Serverの高可用性ソリューションを使用する場合のサイトデータベースのサイジング接続文字列の構成