データベース
シトリックス バーチャル アプリまたはシトリックス バーチャル デスクトップ™サイトは、3つのSQL Serverデータベースを使用します。
- サイト: (サイト構成とも呼ばれます) 実行中のサイト構成、現在のセッション状態、および接続情報を保存します。
- 構成ログ: (ログとも呼ばれます) サイト構成の変更と管理アクティビティに関する情報を保存します。このデータベースは、構成ログ機能が有効になっている場合 (デフォルト = 有効) に使用されます。
- 監視: セッションや接続情報など、Directorが使用するデータを保存します。
各Delivery Controllerはサイトデータベースと通信します。Controllerとデータベース間ではWindows認証が必要です。Controllerは、サイト内の他のControllerに影響を与えることなく、プラグを抜いたり電源を切ったりできます。ただし、これはサイトデータベースが単一障害点となることを意味します。データベースサーバーが故障した場合、ユーザーがログオフまたは切断するまで、既存の接続は機能し続けます。サイトデータベースが利用できなくなった場合の接続動作については、「ローカルホストキャッシュ」を参照してください。
Citrixでは、データベースサーバーが故障した場合にバックアップから復元できるように、データベースを定期的にバックアップすることをお勧めします。各データベースのバックアップ戦略は異なる場合があります。手順については、「CTX135207」を参照してください。
サイトに複数のゾーンが含まれている場合は、プライマリゾーンに常にサイトデータベースが含まれていることを確認してください。すべてのゾーンのControllerがそのデータベースと通信します。
高い可用性
自動フェールオーバーを確実にするために考慮すべき高可用性ソリューションがいくつかあります。
- AlwaysOn可用性グループ (基本可用性グループを含む): SQL Server 2012で導入されたこのエンタープライズレベルの高可用性および災害復旧ソリューションは、1つ以上のデータベースの可用性を最大化することを可能にします。AlwaysOn可用性グループでは、SQL ServerインスタンスがWindows Server Failover Clustering (WSFC) ノード上に存在する必要があります。詳細については、「SQL ServerでのWindows Serverフェールオーバークラスタリング」を参照してください。
- SQL Serverデータベースミラーリング: データベースをミラーリングすることで、アクティブなデータベースサーバーが失われた場合でも、数秒で自動フェールオーバープロセスが発生し、ユーザーは通常影響を受けません。この方法は、各データベースサーバーに完全なSQL Serverライセンスが必要となるため、他のソリューションよりも高価です。ミラーリング環境ではSQL Server Expressエディションを使用できません。
- SQLクラスタリング: Microsoft SQLクラスタリングテクノロジーを使用すると、障害が発生した別のサーバーのタスクと責任を1つのサーバーが自動的に引き継ぐことができます。ただし、このソリューションのセットアップはより複雑であり、自動フェールオーバープロセスは通常、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ロールまたは権限は必要ありません。
必要に応じて、データベースインスタンスのHide instanceを選択できます。Studioでデータベースのアドレスを構成するときは、インスタンス名ではなく、静的ポート番号を入力してください。SQL Serverデータベースエンジンのインスタンスを非表示にする方法の詳細については、Microsoftのドキュメントを参照してください。
ほとんどの運用環境の展開、およびMicrosoftの高可用性機能を使用するすべての展開では、サポートされているExpress以外のSQL Serverエディションのみを使用することをお勧めします。SQL Serverは、最初のControllerがインストールされているサーバー以外のマシンにインストールしてください。(/ja-jp/citrix-virtual-apps-desktops/2203-ltsr/system-requirements.html#databases)に、サポートされているSQL Serverのバージョンが記載されています。データベースは1台以上のマシンに配置できます。
サイトを作成する前に、SQL Serverソフトウェアがインストールされていることを確認してください。データベースを作成する必要はありませんが、作成する場合は空である必要があります。Microsoftの高可用性テクノロジを構成することも推奨されます。
Windows Updateを使用して、SQL Serverを最新の状態に保ってください。
サイト作成ウィザードからデータベースを設定する
サイト作成ウィザードのDatabasesページで、データベース名とアドレス(場所)を指定します。((#database-address-formats)を参照してください。)DirectorがMonitor Serviceを照会する際に発生する可能性のあるエラーを回避するため、監視データベースの名前に空白を使用しないでください。
Databasesページには、データベースを設定するための2つのオプション(自動とスクリプトの使用)があります。一般に、必要なデータベース権限がある場合(StudioユーザーおよびCitrix®管理者)、自動オプションを使用できます。((#permissions-required-to-set-up-databases)を参照してください。)
構成ログと監視データベースの場所は、サイト作成後に変更できます。(#change-database-locations)を参照してください。
ミラーデータベースを使用するようにサイトを構成するには、以下の手順を完了してから、自動またはスクリプトによるセットアップ手順に進みます。
- 2台のサーバー(AとB)にSQL Serverソフトウェアをインストールします。
- サーバーAで、プリンシパルとして使用するデータベースを作成します。サーバーAでデータベースをバックアップし、サーバーBにコピーします。
- サーバーBで、バックアップファイルを復元します。
- サーバーAでミラーリングを開始します。
サイト作成後にミラーリングを確認するには、PowerShellコマンドレットget-configdbconnectionを実行して、接続文字列でフェールオーバーパートナーがミラーに設定されていることを確認します。
ミラーリングされたデータベース環境で後からDelivery Controllerを追加、移動、または削除する場合は、「Delivery Controllers」を参照してください。
自動セットアップ
必要なデータベース権限がある場合は、サイト作成ウィザードのデータベースページで、Studioからデータベースを作成してセットアップを選択します。次に、プリンシパルデータベースの名前とアドレスを指定します。
指定したアドレスにデータベースが存在する場合、そのデータベースは空である必要があります。指定したアドレスにデータベースが存在しない場合、データベースが見つからないことが通知され、データベースを作成するかどうかを尋ねられます。この操作を確定すると、Studioはデータベースを自動的に作成し、プリンシパルデータベースとレプリカデータベースの初期化スクリプトを適用します。
スクリプトによるセットアップ
必要なデータベース権限がない場合は、データベース管理者など、権限を持つ担当者に支援を依頼してください。手順は次のとおりです。
-
サイト作成ウィザードのデータベースページで、手動セットアップ用のスクリプトを生成を選択します。この操作により、サイト、監視、ログの各データベースという、プリンシパルデータベースとレプリカデータベースごとに次の3種類のスクリプトが生成されます。
- 名前に「SysAdmin」を含むスクリプト。データベースとDelivery Controllerのログインを作成するスクリプト。これらのタスクにはsecurityadmin権限が必要です。
-
名前に「DbOwner」を含むスクリプト。データベースにユーザーロールを作成し、ログインを追加して、データベーススキーマを作成するスクリプト。これらのタスクには
db_owner権限が必要です。 - 名前に「Mixed」を含むスクリプト。必要な権限に関係なく、すべてのタスクを1つのスクリプトにまとめたもの。
スクリプトの保存場所を指定できます。
注記:
企業環境では、データベースのセットアップには、異なる役割(権限)を持つ異なるチームによって処理される可能性のあるスクリプトが含まれます。
securityadminまたはdb_owner。該当する場合、まずsecurityadminロールを持つ管理者によって「SysAdmin」スクリプトが実行され、次にdb_owner権限を持つ管理者によって「DbOwner」スクリプトが実行されます。これらのスクリプトを生成するには、PowerShellを使用することもできます。詳細については、「Preferred database rights scripts」を参照してください。 -
これらのスクリプトをデータベース管理者に渡します。この時点でサイト作成ウィザードは自動的に停止します。後で戻ってサイト作成を続行する際に、プロンプトが表示されます。
データベース管理者は、その後データベースを作成します。各データベースは、次の特性を持つ必要があります。
-
_CI_AS_KSで終わる照合順序を使用します。_100_CI_AS_KSで終わる照合順序を使用することをお勧めします。 - 最適なパフォーマンスを得るには、SQL ServerのRead-Committed Snapshotを有効にします。詳細については、「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ユーザー資格情報の入力を求められます。
| 処理内容 | 目的 | サーバーロール | データベースロール |
|---|---|---|---|
| データベースの作成 | 適切な空のデータベースを作成する | dbcreator |
|
| スキーマの作成 | すべてのサービス固有のスキーマを作成し、最初のControllerをサイトに追加する |
securityadmin* |
db_owner |
| コントローラーの追加 | サイトにController(最初のController以外)を追加する |
securityadmin* |
db_owner |
| Controller (ミラーサーバー) を追加 | ミラーデータベースのミラーロールにあるデータベースサーバーにControllerログインを追加 |
securityadmin* |
|
| コントローラーを削除 | サイトからControllerを削除 | ** | db_owner |
| スキーマを更新 | スキーマの更新またはホットフィックスを適用 | db_owner |
* 技術的にはより制限的ですが、実際には、securityadmin サーバーロールを sysadmin サーバーロールと同等として扱うことができます。
** ControllerがStudio経由、またはStudioやSDKで生成されたスクリプトを使用してサイトから削除された場合でも、データベースサーバーへのControllerログオンは削除されません。これは、同じマシン上でこのCitrix製品以外のサービスによって使用されているログオンが誤って削除されるのを防ぐためです。ログオンが不要になった場合は、手動で削除する必要があります。この操作には、securityadmin サーバーロールのメンバーシップが必要です。
Studioを使用してこれらの操作を実行する場合、Studioユーザーは、適切なサーバーロールのメンバーであるデータベースサーバーアカウントを持っているか、またはそのようなアカウントの資格情報を提供できる必要があります。
推奨されるデータベース権限スクリプト
企業環境では、データベースのセットアップには、異なる役割(権限)を持つ異なるチームによって処理される必要があるスクリプトが含まれます: securityadmin または db_owner。
PowerShell を使用して、優先するデータベース権限を指定できます。デフォルト以外の値を指定すると、個別のスクリプトが作成されます。1つのスクリプトには、securityadmin ロールを必要とするタスクが含まれます。もう1つのスクリプトは db_owner 権限のみを必要とし、データベース管理者に連絡することなく、Citrix 管理者が実行できます。
get-*DBSchema コマンドレットでは、-DatabaseRights オプションには、次の有効な値があります。
-
SA: データベースと Delivery Controller のログインを作成するスクリプトを生成します。これらのタスクにはsecurityadmin権限が必要です。 -
DBO: データベースにユーザーロールを作成し、ログインを追加し、その後データベーススキーマを作成するスクリプトを生成します。これらのタスクにはdb_owner権限が必要です。 -
Mixed: (デフォルト)必要な権限に関係なく、すべてのタスクを1つのスクリプトにまとめます。
詳細については、コマンドレットのヘルプを参照してください。
データベースアドレスの形式
データベースアドレスは、次のいずれかの形式で指定できます。
ServerNameServerName\InstanceNameServerName,PortNumber
AlwaysOn 可用性グループの場合、場所フィールドにグループのリスナーを指定します。
データベースミラーリングの場合、プリンシパルサーバーのアドレスのみを指定します。Citrix Site Manager は、プリンシパルサーバーに基づいてミラーサーバーを特定します。
スタンドアロン SQL Server、データベースミラーリング、および AlwaysOn 高可用性の構成方法の詳細については、この CTX 記事 を参照してください。
データベースの場所を変更する
サイトを作成した後、構成ログデータベースと監視データベースの場所を変更できます。(サイトデータベースの場所は変更できません。)データベースの場所を変更すると、次のようになります。
- 以前のデータベースのデータは、新しいデータベースにインポートされません。
- ログを取得する際、両方のデータベースからログを集約することはできません。
- 新しいデータベースの最初のログエントリは、データベースの変更が発生したことを示しますが、以前のデータベースを特定するものではありません。
強制ログが有効になっている場合、構成ログデータベースの場所を変更することはできません。
データベースの場所を変更するには:
- データベースを配置するサーバーに、サポートされているバージョンのMicrosoft SQL Serverがインストールされていることを確認してください。必要に応じて、高可用性機能をセットアップします。
- Studioナビゲーションペインで構成を選択します。
- 新しい場所を指定するデータベースを選択し、操作ペインでデータベースの変更を選択します。
- 新しい場所とデータベース名を指定します。
- Studioにデータベースを作成させたい場合で、適切な権限がある場合は、OKをクリックします。プロンプトが表示されたらOKをクリックすると、Studioが自動的にデータベースを作成します。Studioは、ユーザーの資格情報を使用してデータベースへのアクセスを試みます。失敗した場合は、データベースユーザーの資格情報の入力を求められます。その後、Studioはデータベーススキーマをデータベースにアップロードします。資格情報は、データベース作成期間中のみ保持されます。
- Studioにデータベースを作成させたくない場合、または十分な権限がない場合は、スクリプトの生成をクリックします。生成されたスクリプトには、必要に応じてデータベースとミラーデータベースを手動で作成するための手順が含まれています。スキーマをアップロードする前に、データベースが空であり、少なくとも1人のユーザーがデータベースにアクセスして変更する権限を持っていることを確認してください。
詳細情報
- データベースサイジングツール。
- SQL Serverの高可用性ソリューションを使用する場合の、サイトデータベースのサイズ設定 および 接続文字列の構成。