日本語版ご利用にあたって
【重要】本資料は原文である英語版 Knowledge Base から日本語訳されたものであり、最新の更新が反映されていない場合がございます。ご利用にあたっては、英語版の最新情報をあわせてご確認いただけますようお願いいたします。
この文書では、ミラーリングされた SQL データベースを使用するように、稼働中の既存の XenDesktop 7 サイトを変換する方法について説明します。
ミラーリングされたデータベースの使用は、サイトの高可用性が重要な場合に最適なオプションです。
サイトに必要な再構成およびその後に推奨されるデータベースフェールオーバー動作の検証について紹介します。ただしこの文書では、基礎となるデータベースをミラーリングされたデータベースとして再構成する手順について、読者が理解していることを前提としています。この情報は、https://technet.microsoft.com/ja-jp/library/bb510479.aspx などの Microsoft 社の各種の文書で解説されています。
XenDesktop 7 では、SQL Server 2012 Service Pack 1 および SQL Server 2008 R2 Service Pack 2の使用をサポートしています。
SQL Server ミラーリングを使用するには、ライセンスのある SQL Server を2つ(プリンシパルとミラー)インストールする必要があります。これらのサーバーのいずれかが XenDesktop サイトで既に使用中のものであっても構いません(使用中のものである必要はありません)。
注: SQL Server Express Edition は、プリンシパルまたはミラーのいずれの役割でも使用できません。
自動フェールオーバーサポートを使用するには、さらにもう1つ SQL Server をインストールする必要があります(ミラーリング監視サーバー)。このサーバーは SQL Server Express Edition でも構いません。
推奨されるミラーリング動作モードは、自動フェールオーバーを伴う高い安全性(同期)です。自動フェールオーバーが不要な場合は、自動フェールオーバーを伴わない高い可用性(同期)も使用できます。
サイト内のすべての XenDesktop サーバーを再構成する必要があるため、構成を変更する前に、すべてのサイトコントローラーを利用可能で、稼働中の状態にすることをお勧めします。
データベースの再構成中はサイトは使用できませんが、既存のユーザーセッションは影響を受けません。再構成を行えるように、サイトに対して適切なダウンタイムをスケジュールする必要があります。
すべての XenDesktop サービス SDK の使用が必要になります。すべての SDK がインストールされ、PowerShell ウィンドウで登録されている 1 台のマシン(いずれかのサイトコントローラーでも構いません)が必要です。この文書で紹介する PowerShell スクリプトを使用するには、標準の SQL Server SQLCMD ユーティリティがマシンにローカルにインストールされている必要もあります。
再構成を行うユーザーには、XenDesktop サイトに対する完全な管理者権限が必要です。また、データベースの再構成自体には、関係するすべてのデータベースサーバーに対するsysadmin 権限が必要です。
まず、データベース接続をテストします。また、データベースを再構成する前に、サイト内のすべての XenDesktop サービスを現在のデータベースから切断する必要があります。これは、データベース接続文字列をクリアし、すべてのサービスを休止状態にすることにより行います。これは、次の PowerShell スクリプトを使用して実行できます。
注:Broker PowerShell SDK スナップインを使用して再構成中のサイトにアクセス済みであり、初期のデフォルト管理アドレスがそのサイト内のいずれかのコントローラーに設定されていることを前提としています。これをまだ行っていない場合は、PowerShell 内から Add-PSSnapin Citrix* を実行して、XenDesktop PowerShell SDK スナップインをロードする必要があります。
ミラーリングの構成前に使用されていたデータベースが、新しいミラーリング構成のプリンシパルとなる場合は、コントローラーログオンは新しいミラーサーバーにのみ追加する必要があります。ミラーリングされたペアの両方のデータベースサーバーが新しい場合は、両方でログオンの作成が必要です。
適切なログオンは、次に示すように、Broker PowerShell SDK および SQLCMD を使用して作成できます。ログオンを作成するデータベースサーバーの名前およびターゲットデータベースの名前を適宜置き換えます。
$PrimaryDB= 'FQDN name of the primary DB within quotes'
$mirrorDB = 'FQDN name of the mirror DB within quotes'
$dbName = 'Name of the XD database within quotes'
$controllers = Get-BrokerController | %{$_.DNSName}
foreach ($controller in $controllers) {
Write-Host "Make login for $controller on $mirrorServer ..."
Get-BrokerDBSchema -DatabaseName $dbName -ScriptType Login -AdminAddress $controller > add-login.sql
sqlcmd -S $mirrorDB -Q ':r add-login.sql'
}
# In Maintenance Window , Failover to the Mirror and run the following to test connectivity
$cs = "Data Source=$PrimaryDB; Failover Partner=$MirrorDB; Initial Catalog=$dbName; Integrated Security=True; Network=dbmssocn"
$controllers = Get-BrokerController | %{$_.DNSName}
foreach ($controller in $controllers) {
Write-Host "Testing controller $controller ..."
Test-ConfigDBConnection -DBConnection $cs -AdminAddress $Controller
Test-AcctDBConnection -DBConnection $cs -AdminAddress $Controller
Test-HypDBConnection -DBConnection $cs -AdminAddress $Controller
Test-ProvDBConnection -DBConnection $cs -AdminAddress $Controller
Test-BrokerDBConnection -DBConnection $cs -AdminAddress $Controller
Test-EnvTestDBConnection -DBConnection $cs -AdminAddress $Controller
Test-SfDBConnection -DBConnection $cs -AdminAddress $Controller
Test-MonitorDBConnection -DBConnection $cs -AdminAddress $Controller
Test-MonitorDBConnection -DataStore Monitor -DBConnection $cs -AdminAddress $Controller
Test-AdminDBConnection -DBConnection $cs -AdminAddress $Controller
Test-LogDBConnection -DBConnection $cs -AdminAddress $Controller
Test-LogDBConnection -Datastore Logging -DBConnection $cs -AdminAddress $Controller
}
注:バージョン 7.6 では上記に加えて Test-AnalyticsDBConnection -DBConnection $cs -AdminAddress $controller を実施する必要があります。
# Now set the DB connections to null.
$controllers = Get-BrokerController | %{$_.DNSName}
foreach ($controller in $controllers) {
Write-Host "Disconnect controller $controller ..."
Set-ConfigDBConnection -DBConnection $null -AdminAddress $Controller
Set-AcctDBConnection -DBConnection $null -AdminAddress $Controller
Set-HypDBConnection -DBConnection $null -AdminAddress $Controller
Set-ProvDBConnection -DBConnection $null -AdminAddress $Controller
Set-BrokerDBConnection -DBConnection $null -AdminAddress $Controller
Set-EnvTestDBConnection -DBConnection $null -AdminAddress $Controller
Set-SfDBConnection -DBConnection $null -AdminAddress $Controller
Set-MonitorDBConnection -Datastore Monitor -DBConnection $null -AdminAddress $Controller
reset-MonitorDataStore -DataStore Monitor
Set-MonitorDBConnection -DBConnection $null -AdminAddress $Controller
Set-LogDBConnection -DataStore Logging -DBConnection $null -AdminAddress $Controller
reset-LogDataStore -DataStore Logging
Set-LogDBConnection -DBConnection $null -AdminAddress $Controller
Set-AdminDBConnection -DBConnection $null -AdminAddress $Controller
}
注:バージョン 7.6 では上記に加えて Set-AnalyticsDBConnection -DBConnection $null -AdminAddress $controller を実施する必要があります。
注:上記のスクリプトで取得した変数 $controllers は、この後で紹介する PowerShell スクリプトに対する入力として必要になります。
理想的には、どちらのスクリプトも同じ PowerShell ウィンドウ内で実行するべきです。
ただしこれが可能ではない場合は、変数は単にサイト内のすべてのコントローラーの DNS 名を含む配列です。
また、同じサイト内に DDC が一台以上が存在する場合、以下のコマンドを一台目の DDC のみで実施してください。
Set-MonitorDBConnection -DataStore Monitor -DBConnection $null -AdminAddress $Controller
Set-LogDBConnection -Datastore Logging -DBConnection $null -AdminAddress $Controller
Set-MonitorDBConnection -DataStore Monitor -DBConnection $cs -AdminAddress $Controller
Set-LogDBConnection -Datastore Logging -DBConnection $cs -AdminAddress $Controller
サービスをデータベースから切断したら、基礎となるデータベースをミラーリングされたデータベースとして再構成できます。XenDesktop サイトに関しては、既存のデータベースが新しい構成の最初のプリンシパルデータベースになるのか、またはまったく新しいミラーリング構成が作成されるのか(まったく異なるデータベースサーバーを使用して)は重要ではありません。重要なのは、XenDesktop サイトデータベースの元の内容が、新たにミラーリングされたデータベースに存在するということです。
ミラーリング構成で、既存のデータベースを最初のプリンシパルとして直接再利用する予定である場合は、次の点に注意してください。
ミラーリングされたデータベースを設定したら、続行する前に、データベースの基本的なフェールオーバー動作を検証する必要があります。これは、SQL Server Management Studio (SSMS) でデータベースのプロパティの[ミラーリング]ダイアログボックスにある [フェールオーバー] オプションを使用して行えます。
標準の動作では、2 つのデータベースが「プリンシパル、同期済み」および「ミラー、同期済み/復元中...」という状態で表示されます。データベースのプロパティの [ミラーリング] ダイアログボックスで [フェールオーバー] オプションを選択すると、2つのデータベースの役割が切り替わります。
ミラーリングされたデータベースを設定し、その基本的なフェールオーバー動作を検証したら、新しいデータベースを使用するように XenDesktop サービスを設定する必要があります。これには、次のことを行います。
次の点に注意してください。
再構成の最後の手順は、XenDesktopサービスからミラーリングされたデータベースへの接続の再確立です。これには、修正した接続文字列をすべてのサービスインスタンスに配布する必要があります。ミラーリングされたデータベースに適した接続文字列の例を次に示します。
Data Source=$PrimaryDB; Failover Partner=$MirrorDB; Initial Catalog=$dbName; Integrated Security=True; Network=dbmssocn
ミラーリングされたデータベースでは、Network=dbmssocn オプションを使用することをお勧めします。このオプションは、XenDesktop による両方のデータベースサーバーとの通信に TCP プロバイダーが強制的に使用されるようにします。このプロバイダーは、ミラーリングでの使用のために最適化されています。また、次の点にも注意してください。
新しい接続文字列は、以下に示すように、XenDesktop PowerShell SDKを使用してサイト内のすべてのサービスに適用できます。新しい接続文字列の値を適宜置き換えます。接続文字列を適用することにより、暗黙的にすべてのXenDesktopサービスが再度有効になります。サイトは、サービスが最初に切断されたときの状態から動作を再開します。
$cs = '<new connection string>'
foreach ($controller in $controllers) {
Write-Host "Reconnect controller $controller ..."
Set-AdminDBConnection -DBConnection $cs -AdminAddress $Controller
Set-LogDBConnection -DBConnection $cs -AdminAddress $Controller
Set-ConfigDBConnection -DBConnection $cs -AdminAddress $Controller
Set-AcctDBConnection -DBConnection $cs -AdminAddress $Controller
Set-HypDBConnection -DBConnection $cs -AdminAddress $Controller
Set-ProvDBConnection -DBConnection $cs -AdminAddress $Controller
Set-BrokerDBConnection -DBConnection $cs -AdminAddress $Controller
Set-EnvTestDBConnection -DBConnection $cs -AdminAddress $Controller
Set-SfDBConnection -DBConnection $cs -AdminAddress $Controller
Set-MonitorDBConnection -DBConnection $cs -AdminAddress $Controller
Set-MonitorDBConnection -DataStore Monitor -DBConnection $cs -AdminAddress $Controller
Set-LogDBConnection -Datastore Logging -DBConnection $cs -AdminAddress $Controller
}
注:バージョン 7.6 では上記に加えて Set-AnalyticsDBConnection -DBConnection $cs -AdminAddress $controller を実施する必要があります。
上記のコマンドの実行中に次のエラーが表示された場合は、適切な接続文字列値を空にする必要があります。
Set-AdminDBConnection :The operation could not be performed because of a configuration logging error.
At line:16 char:22
+ Set-AdminDBConnection <<<< -DBConnection $null -AdminAddress $Controller
+ CategoryInfo :InvalidOperation:(:)[Set-AdminDBConnection], InvalidOperationException
+ FullyQualifiedErrorId :Citrix.XDPowerShell.Status.ConfigurationLoggingError,Citrix.DelegatedAdmin.Sdk.Cmdlets.DataStore.Commands.SetAdminDBConnectionCommand
以下に示す手順で、レジストリで接続文字列値を手動で空にする必要があります。
注意:この修正を行うには、レジストリを編集する必要があります。レジストリエディターの使用を誤ると、深刻な問題が発生する可能性があり、Windowsの再インストールが必要になる場合もあります。Citrixでは、レジストリエディターを誤って使用した結果生じる問題の解決については保証できません。レジストリエディターはご自身の責任で使用してください。レジストリファイルのバックアップを作成してから、レジストリを編集してください。
HKLM\Software\Citrix\XDservices に移動します。実行中に失敗した特定のサービス接続に基づいて、適切な接続文字列値を空にする必要があります。
たとえば、上記の例のように、AdminDBConnection が実行中に失敗した場合は、HKLM\Software\Citrix\XDservices\DAS\Datastore\Connections の下の接続文字列値を空にします。
サービスの切断時に Virtual Delivery Agent が登録されており、ユーザーセッションがアクティブであった場合は、動作の再開後に数分間かけて、データベースに記録されているサイトのデータが、アクティブな Virtual Delivery Agent とユーザーセッションの現在の状態で再同期されます。これは仕様に基づく動作であり、これ以上の修正操作は必要ありません。
ミラーリングされたデータベースに関して、XenDesktop サイトの適切なフェールオーバー動作を検証することを強くお勧めします。サイトが次の状態であることを確認するために、以下のすべてのテスト手順が成功することが重要です。
使用されている接続文字列はすべてのサービスで同じであるため、テスト目的では1つのサービスインスタンスを選択すれば十分です。次のテストシーケンスの例では、サイト内の任意のブローカーサービスインスタンスを使用しています。
$cs = Get-BrokerDBConnection
Set-BrokerDBConnection -DBConnection $null
Set-BrokerDBConnection -DBConnection $cs
Get-BrokerServiceStatus
正しく機能しているデータベースでは、上記のスクリプトからの出力は次のようになります。
DBUnconfigured
OK
OK
XenDesktopサイトとミラーリングされたデータベース間のやり取りが適切に行われていることを確認するには、次のテストシーケンスを実行します。
まず、サービスの起動時に、接続文字列内に指定されている情報を使用して、サービスが両方のデータベースサーバーに接続できることを検証します。
上記のテストの結果が失敗であった場合、XenDesktopサイトの構成またはデータベースサーバーへの接続にエラーがある可能性が高いでしょう。次のようなエラーが考えられます。
上記のテストの結果が期待どおりであった場合は、データベースのフェールオーバーのトリガー時に、サービスがサーバー間でアクティブなデータベースに自動的に切り替わることを検証します。
最初のテストでサービスの再起動後の両方のデータベースサーバーへの接続に問題がなかったが、2つ目のテストでエラーが発生した場合は、データベースのミラーリングの構成自体に問題がある可能性が高いでしょう。たとえば、データベースインスタンスに対してデフォルト以外の固定ポートを使用しようとすると、サービスは接続文字列で failover partner として指定されているサーバーから data source として指定されているサーバーにはフェールオーバーできますが、逆方向にはフェールオーバーできません。
この資料は米国の Knowledge Base で提供している資料をもとに作成したものです。
Document ID: CTX139874
How to Reconfigure a XenDesktop 7 Site to Use a SQL Mirrored Database