データベース
注:
バージョン2511以降、Citrix Web Studio(Webベース)はCitrix Virtual Apps and Desktops™の唯一の管理コンソールです。Citrix Studio(MMCベース)はインストーラーから削除されました。この記事はWeb Studioにのみ適用されます。Citrix Studioに関する情報については、Citrix Virtual Apps and Desktops 7 2212以前の同等の記事を参照してください。
Citrix Virtual AppsまたはCitrix Virtual Desktops™サイトでは、次の3つのSQL Serverデータベースを使用します。
-
Site:(サイト構成とも呼ばれます)には、実行中のサイト構成、現在のセッション状態、および接続情報が保存されます。
-
Logging:(構成ログとも呼ばれます)には、サイト構成の変更と管理アクティビティに関する情報が保存されます。このデータベースは、構成ログ機能が有効になっている場合(デフォルト = 有効)に使用されます。
-
**Monitoring:**には、Directorが使用するセッションや接続情報などのデータが保存されます。
各Delivery Controllerはサイトデータベースと通信します。Controllerとデータベース間ではWindows認証が必要です。Controllerは、サイト内の他のControllerに影響を与えることなく、接続を解除したり電源を切ったりできます。ただし、これはサイトデータベースが単一障害点となることを意味します。データベースサーバーが故障した場合、既存の接続はユーザーがログオフまたは切断するまで機能し続けます。サイトデータベースが利用できなくなった場合の接続動作については、Local Host Cacheを参照してください。
Citrixは、データベースに関して以下を推奨します。
-
定期的にバックアップする。 データベースサーバーが故障した場合にバックアップから復元できるように、データベースを定期的にバックアップしてください。各データベースのバックアップ戦略は異なる場合があります。詳細については、CTX135207を参照してください。ただし、これはCitrixXenDesktopDBを参照していますが、これは現在サポートされておらず、お客様は利用できません。
-
Site、Monitoring、およびLoggingのSQL Serverデータベースを定期的にバックアップおよび復元する。 SQL Serverデータベースに関する具体的な情報については、Creating Full and Differential Backups of a SQL Server Databaseを参照してください。
サイトに複数のゾーンが含まれている場合は、プライマリゾーンに常にサイトデータベースが含まれていることを確認してください。すべてのゾーンのControllerがそのデータベースと通信します。
高可用性
自動フェールオーバーを確実にするために考慮すべき高可用性ソリューションがいくつかあります。
-
AlwaysOn Availability Groups(Basic Availability Groupsを含む): SQL Server 2012で導入されたこのエンタープライズレベルの高可用性および災害復旧ソリューションは、1つ以上のデータベースの可用性を最大化できます。AlwaysOn Availability Groupsでは、SQL ServerインスタンスがWindows Server Failover Clustering(WSFC)ノード上に存在する必要があります。詳細については、Windows Server Failover Clustering with SQL Serverを参照してください。
-
SQL Serverデータベースミラーリング: データベースをミラーリングすることで、アクティブなデータベースサーバーが失われた場合でも、自動フェイルオーバープロセスが数秒で発生し、ユーザーは通常影響を受けません。この方法は、各データベースサーバーに完全なSQL Serverライセンスが必要となるため、他のソリューションよりも高価です。ミラーリング環境ではSQL Server Express Editionを使用できません。
-
SQLクラスタリング: Microsoft SQLクラスタリングテクノロジーを使用すると、障害が発生した別のサーバーのタスクと責任を1つのサーバーが自動的に引き継ぐことができます。ただし、このソリューションのセットアップはより複雑であり、自動フェイルオーバープロセスはSQLミラーリングなどの代替手段よりも通常遅くなります。
-
ハイパーバイザーの高可用性機能の使用: この方法では、データベースを仮想マシンとして展開し、ハイパーバイザーの高可用性機能を使用します。このソリューションは、既存のハイパーバイザーソフトウェアを使用し、SQL Server Express Editionも使用できるため、ミラーリングよりも安価です。ただし、自動フェイルオーバープロセスは遅く、データベース用に新しいマシンが起動するのに時間がかかり、ユーザーへのサービスが中断される可能性があります。
ローカルホストキャッシュ機能は、SQL Serverの高可用性のベストプラクティスを補完します。ローカルホストキャッシュにより、サイトデータベースが利用できない場合でも、ユーザーはアプリケーションやデスクトップに接続および再接続できます。詳細については、「ローカルホストキャッシュ」を参照してください。
サイト内のすべてのControllerが失敗した場合、VDAを高可用性モードで動作するように構成できます。これにより、ユーザーは引き続きデスクトップとアプリケーションにアクセスできます。高可用性モードでは、VDAはControllerによって仲介される接続ではなく、ユーザーからの直接ICA接続を受け入れます。この機能は、すべてのControllerとの通信が失敗するまれなケースでのみ使用してください。この機能は、他の高可用性ソリューションの代替ではありません。詳細については、「CTX 127564」を参照してください。
SQLクラスタリングまたはSQLミラーリングのインストールで、ノードにControllerをインストールすることはサポートされていません。
データベースソフトウェアのインストール
注:
バージョン2411以降、データベースにAzure SQL Managed Instanceを使用できます。
デフォルトでは、最初のDelivery Controller™をインストールするときに、そのサーバーで別のSQL Serverインスタンスが検出されない場合、SQL Server Express Editionがインストールされます。このデフォルトのアクションは、概念実証またはパイロット展開には通常十分です。ただし、SQL Server ExpressはMicrosoftの高可用性機能をサポートしていません。
デフォルトのインストールでは、デフォルトのWindowsサービスアカウントと権限が使用されます。これらのデフォルトの詳細(Windowsサービスアカウントのsysadminロールへの追加を含む)については、Microsoftのドキュメントを参照してください。この構成では、ControllerはNetwork Serviceアカウントを使用します。Controllerには、追加のSQL Serverロールや権限は必要ありません。
必要に応じて、データベースインスタンスのインスタンスを非表示を選択できます。Web Studioでデータベースのアドレスを構成するときは、インスタンス名ではなく、インスタンスの静的ポート番号を入力します。SQL Serverデータベースエンジンのインスタンスを非表示にする方法の詳細については、Microsoftのドキュメントを参照してください。
ほとんどの運用環境の展開、およびMicrosoftの高可用性機能を使用するすべての展開では、サポートされている非ExpressエディションのSQL Serverのみを使用することをお勧めします。最初のControllerがインストールされているサーバー以外のマシンにSQL Serverをインストールします。システム要件には、サポートされているSQL Serverのバージョンが一覧表示されています。データベースは1台以上のマシンに配置できます。
サイトを作成する前にSQL Serverソフトウェアがインストールされていることを確認してください。データベースを作成する必要はありませんが、作成する場合は空である必要があります。Microsoftの高可用性テクノロジーの構成も推奨されます。
Windows Updateを使用してSQL Serverを最新の状態に保ちます。
サイト作成ウィザードからデータベースをセットアップする
サイト作成ウィザードのデータベースページで、データベース名とアドレス(場所)を指定します。(データベースアドレス形式を参照してください。)DirectorがMonitor Serviceを照会する際の潜在的なエラーを避けるため、監視データベースの名前に空白を使用しないでください。
データベースページでは、データベースをセットアップするための2つのオプション(自動とスクリプトの使用)が提供されます。一般的に、必要なデータベース権限がある場合(Web StudioユーザーおよびCitrix管理者)、自動オプションを使用できます。(データベースのセットアップに必要な権限を参照してください。)
サイトを作成した後で、構成ログおよび監視データベースの場所を後で変更できます。「データベースの場所を変更する」を参照してください。
ミラーデータベースを使用するようにサイトを構成するには、以下を完了してから、自動またはスクリプトによるセットアップ手順に進みます。
-
2台のサーバー(AとB)にSQL Serverソフトウェアをインストールします。
-
サーバーAで、プライマリとして使用するデータベースを作成します。サーバーAでデータベースをバックアップし、サーバーBにコピーします。
-
サーバーBで、バックアップファイルを復元します。
-
サーバーAでミラーリングを開始します。
サイト作成後にミラーリングを確認するには、PowerShell コマンドレット
get-configdbconnection を実行して、接続文字列にミラーへのフェールオーバーパートナーが設定されていることを確認します。
ミラーリングされたデータベース環境で後からDelivery Controllerを追加、移動、または削除する場合は、「Delivery Controllers」を参照してください。
自動セットアップ
必要なデータベース権限がある場合は、次の手順でデータベースをセットアップします。
-
サイト作成ウィザードのデータベースページで、Studioからデータベースを作成およびセットアップを選択します。
-
プライマリデータベースの名前とアドレスを指定します。
-
データベース接続設定のセキュリティと柔軟性を向上させるために、以下のSQL Server接続オプションを構成します。
-
暗号化: 接続の暗号化レベルを指定します。
-
サーバー証明書を信頼する: サーバー証明書の検証をバイパスするには、これを選択します。
-
証明書のホスト名: サーバーの証明書が一致する必要があるホスト名を入力します。この設定により、より厳格な証明書検証が保証されます。
詳細については、このMicrosoft記事を参照してください。 -
指定したアドレスにデータベースが存在する場合、そのデータベースは空である必要があります。指定したアドレスにデータベースが存在しない場合、データベースが見つからないことが通知され、データベースを作成するかどうかを尋ねられます。その操作を確定すると、Web Studioは自動的にデータベースを作成し、プライマリデータベースとレプリカデータベースの初期化スクリプトを適用します。
スクリプトによるセットアップ
必要なデータベース権限がない場合は、データベース管理者など、権限を持つ人に支援を依頼してください。手順は次のとおりです。
-
-
名前に「SysAdmin」を含むスクリプト。データベースとDelivery Controllerのログインを作成するスクリプトです。これらのタスクにはsecurityadmin権限が必要です。
-
名前に「DbOwner」を含むスクリプト。データベースにユーザーロールを作成し、ログインを追加し、データベーススキーマを作成するスクリプトです。これらのタスクには
db_owner権限が必要です。 -
名前に「Mixed」を含むスクリプト。必要な権限に関係なく、すべてのタスクを1つのスクリプトにまとめたものです。
スクリプトの保存場所を指定できます。注:エンタープライズ環境では、データベースのセットアップには、異なる役割(権限)を持つ異なるチームによって処理される可能性のあるスクリプトが含まれます。securityadminまたはdb_owner。該当する場合、まずsecurityadminロールを持つ管理者によって「SysAdmin」スクリプトを実行し、次にdb_owner権限を持つ管理者によって「DbOwner」スクリプトを実行します。これらのスクリプトを生成するには、PowerShellを使用することもできます。詳細については、推奨されるデータベース権限スクリプトを参照してください。 -
-
これらのスクリプトをデータベース管理者に渡します。サイト作成ウィザードは、この時点で自動的に停止します。後で戻ってサイト作成を続行するときに、プロンプトが表示されます。
データベース管理者は、データベースを作成します。各データベースには、次の特性が必要です。
-
_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つのプライマリデータベースアドレスを渡します。
Web Studio はサイト作成を続行するように求めます。データベースページに戻り、次の手順を完了します。
-
アドレスを入力します。
-
データベース接続設定のセキュリティと柔軟性を向上させるために、次の SQL Server 接続オプションを構成します。
-
暗号化: 接続の暗号化レベルを指定します。
-
サーバー証明書を信頼する: サーバー証明書の検証をバイパスするには、これを選択します。
-
証明書のホスト名: サーバーの証明書が一致する必要があるホスト名を入力します。この設定により、より厳格な証明書検証が保証されます。
詳細については、このMicrosoft記事を参照してください。 -
データベースをホストしているサーバーのいずれかに接続できない場合、エラーメッセージが表示されます。
データベースのセットアップに必要な権限
データベースを作成および初期化する(またはデータベースの場所を変更する)には、ローカル管理者およびドメインユーザーである必要があります。また、特定のSQL Server権限も必要です。以下の権限は、Active Directoryグループメンバーシップによって明示的に構成または取得できます。Web Studioのユーザー資格情報にこれらの権限が含まれていない場合、SQL Serverのユーザー資格情報の入力を求められます。
| 操作 | 目的 | サーバーロール | データベースロール |
|---|---|---|---|
| データベースの作成 | 適切な空のデータベースを作成する | dbcreator |
|
| スキーマの作成 | すべてのサービス固有のスキーマを作成し、最初のControllerをサイトに追加する | securityadmin* |
db_owner |
| コントローラーを追加 | サイトにコントローラー(最初のコントローラー以外)を追加 | securityadmin* |
db_owner |
| コントローラー(ミラーサーバー)を追加 | ミラーデータベースのミラーロールにあるデータベースサーバーにコントローラーログインを追加 | securityadmin* |
|
| コントローラーを削除 | サイトからコントローラーを削除 | ** | db_owner |
| スキーマを更新 | スキーマの更新またはホットフィックスを適用 | db_owner |
* 技術的にはより制限的ですが、実際には、
securityadmin サーバーロールを sysadmin サーバーロールと同等として扱うことができます。
** コントローラーがサイトから削除されても、データベースサーバーへのコントローラーのログオンは削除されません。これは、同じマシン上のこのCitrix製品以外のサービスで使用されているログオンが誤って削除されるのを防ぐためです。ログオンが不要になった場合は、手動で削除する必要があります。この操作には、
securityadmin サーバーロールのメンバーシップが必要です。
Web Studio を使用してこれらの操作を実行する場合、Web Studio ユーザーは、適切なサーバーロールのメンバーであるデータベースサーバーアカウントを持っているか、またはそのアカウントの資格情報を提供できる必要があります。
優先データベース権限スクリプト
エンタープライズ環境では、データベースのセットアップには、異なる役割(権限)を持つ異なるチームが処理する必要があるスクリプトが含まれます。
securityadmin または db_owner。
PowerShell を使用して、推奨されるデータベース権限を指定できます。デフォルト以外の値を指定すると、個別のスクリプトが作成されます。一方のスクリプトには
securityadmin ロールが必要なタスクが含まれます。もう一方のスクリプトは db_owner 権限のみを必要とし、データベース管理者に連絡することなく Citrix 管理者が実行できます。
get-*DBSchema コマンドレットでは、-DatabaseRights オプションには次の有効な値があります。
-
SA: データベースと Delivery Controller のログインを作成するスクリプトを生成します。これらのタスクにはsecurityadmin権限が必要です。 -
DBO: データベースにユーザーロールを作成し、ログインを追加し、データベーススキーマを作成するスクリプトを生成します。これらのタスクにはdb_owner権限が必要です。 -
Mixed: (デフォルト) 必要な権限に関係なく、すべてのタスクを1つのスクリプトにまとめます。
詳細については、コマンドレットのヘルプを参照してください。
データベースアドレスの形式
データベースアドレスは、次のいずれかの形式で指定できます。
-
ServerName -
ServerName\InstanceName -
ServerName,PortNumber
AlwaysOn可用性グループの場合は、場所フィールドにグループのリスナーを指定します。
データベースの場所を変更する
サイトを作成した後、構成ログデータベースと監視データベースの場所を変更できます。ただし、サイトデータベースの場所は変更できません。データベースの場所を変更する際は、次の点に注意してください。
-
以前のデータベースのデータは、新しいデータベースにはインポートされません。
-
ログを取得する際、両方のデータベースからログを集約することはできません。
-
新しいデータベースの最初のログエントリは、データベースの変更が発生したことを示しますが、以前のデータベースを特定するものではありません。
-
強制ログが有効になっている場合、構成ログデータベースの場所を変更することはできません。
-
SQL ServerとAzure SQLの間でデータベースの場所を変更することはサポートされていません。
データベースの場所を変更するには:
-
Microsoft SQL Serverを使用している場合は、データベースを配置するサーバーにサポートされているバージョンがインストールされていることを確認してください。必要に応じて、高可用性機能をセットアップします。
-
新しい場所とデータベース名を指定します。データベースがAzure SQLでホストされている場合は、データベースを管理する権限を持つサービスプリンシパルの資格情報を入力します。
-
Web Studioにデータベースを作成させたい場合で、適切な権限がある場合は、完了をクリックします。プロンプトが表示されたら、完了をクリックすると、Web Studioが自動的にデータベースを作成します。Web Studioは、ユーザーの資格情報を使用してデータベースへのアクセスを試みます。それが失敗した場合は、データベースユーザーの資格情報の入力を求められます。その後、Web Studioはデータベーススキーマをデータベースにアップロードします。資格情報は、データベース作成期間中のみ保持されます。
-
Web Studioにデータベースを作成させたくない場合、または十分な権限がない場合は、データベーススクリプトの生成をクリックします。生成されたスクリプトには、必要に応じてデータベースとミラーデータベースを手動で作成するための手順が含まれています。スキーマをアップロードする前に、データベースが空であり、少なくとも1人のユーザーがデータベースにアクセスして変更する権限を持っていることを確認してください。
詳細情報
-
SQL Serverの高可用性ソリューションを使用する場合のサイトデータベースのサイジングと接続文字列の構成。