MetaFrame XP から XenApp 6.5 まで実装されていたローカルホストキャッシュ機能がXenApp 7.12にて機能改善され実装されました。

旧来のバージョンをお使いのユーザー様はこの機能を非常に待ち焦がれていたことと思います。万一の際でもこの機能を利用することで接続は担保され安心した運用が可能になります。私自身もこの機能が実装されることを待っていました。

今回のブログではローカルホストキャッシュ機能についてまとめたいと思います。

  1. ローカルホストキャッシュ機能とは

この機能はデータベースのサブセットをコントローラーに配置することにより、予期しないデータベース停止状態に陥ってもユーザーからのアクセスを担保するものです。XenApp 6.5以前はローカルホストキャッシュが原因で接続できないことが時折発生しdsmaint コマンドを使うことがありましたが、XenApp 7.12では、そのような問題が発生しないように考慮されています。

尚、ローカルホストキャッシュと接続リースを一緒に使うことはできません。

  1. 接続リースとの違い

XenApp/XenDesktop 7.6から実装された接続リースは、通常時(データベース使用可能時)に使用されたアプリケーションやデスクトップのユーザー接続情報をコントローラーにキャッシュする機能です。データベースとの通信ができなくなった場合でも、接続リースでキャッシュされた情報を元に接続を担保します。この機能は14日間、リース期間として利用できます。その間に管理者はデータベースの復旧を行います。

ローカルホストキャッシュとの大きな違いは以下です。

・ローカルホストキャッシュには、接続に関しての制限はない。

・ローカルホストキャッシュは、新規の接続が可能(MCS/PVSでのプール型のVDIは除く)。

・接続リースは、サイトのVDIが5,000以上でも利用できる。

  1. ローカルホストキャッシュの動作

ローカルホストキャッシュが動作することはデータベースとの通信ができないことを意味します。ローカルホストキャッシュ機能により新規のXenApp/XenDesktopへの接続は担保されますが、以下の制限事項がありますのでご注意下さい。

・Citrix Studio, Director またはPowerShellコマンドは使用できない。

・プール型のVDIデスクトップ(MCSやPVSで作成)は接続できない。ただし割り当てられたマシンは、正常操作中に割り当てが発生した場合のみ使用可能。停止中に新しい割り当てを行うことはできない。

・新規のリソースのアサインなどデータベース変更に伴う作業はできない。

・利用後シャットダウンするマシンに関してはメンテナンスモードになる

・匿名ユーザーは利用できない。

  1. ローカルホストキャッシュの仕組み

通常運用時の動作:

・コントローラー上のプリンシパルブローカー(Citrix Broker Service)は、StoreFrontからの接続要求を受け取り、サイトデータベースと通信して、コントローラーに登録されたVDAにユーザーを接続します。

・2分おきにチェックし、プリンシパルブローカーの構成が変更されたか判断します。

・最後のチェック以降に変更されると、プリンシパルブローカーは、Citrix Config Synchronizer Service(CSS)を使用してコントローラー上のセカンダリブローカー(Citrix High Availability Service)に情報を同期(コピー)します。 LocalDBデータベースは、同期が発生するたびに再作成されます。

・最後のチェック以降に変更が発生しなかった場合、データはコピーされません。

図:正常時の通信

LHC1

データベース停止状態の動作(ローカルホストキャッシュが機能する):

・プリンシパルブローカーはサイトデータベースと通信できなくなり、StoreFrontおよびVDA情報のリスニングを停止します。 次に、プリンシパルブローカーは、接続要求のリスニングと処理を開始するように、セカンダリブローカー(High Availability Service)に指示します。

・セカンダリブローカーが接続を処理する間、プリンシパルブローカーはサイトデータベースへの接続の監視を続行します。接続が回復すると、プリンシパルブローカーはセカンダリブローカーに接続情報のリスニングを停止するように指示し、プリンシパルブローカーが操作の仲介を再開します。

図:ローカルホストキャッシュ時の通信

LHC2

  1. インストールについて

XenApp/XenDesktop 7.12インストール時に自動的にインストールされます。特にオプションなどは必要ありません。

コントローラーのアップグレードインストールの場合も自動的にコントローラーに必要なモジュールはインストールされます。ただしサイトのVDAの数によって下記のように設定が変わります。

・サイトのVDAが5,000未満

接続リースがアップグレード前に無効の場合、ローカルホストキャッシュは有効。接続リース機能は無効。

接続リースがアップグレード前に有効の場合、ローカルホストキャッシュはは無効。 接続リース機能は有効。

・サイトのVDAが5,000以上

ローカルホストキャッシュは無効(接続リース設定に関係なく)、接続リースは維持。

設定方法:この設定を有効にするためにはPowerShellを使う必要があります。Citrix StudioよりPowerShellコンソールを起動し下記のコマンドを実行します。

  • ローカルホストキャッシュの有効化 (接続リース機能は無効化が必要)

Set-BrokerSite -LocalHostCacheEnabled $true -ConnectionLeasingEnabled $false

  • ローカルホストキャッシュの無効化 (接続リース機能は有効化が必要)

Set-BrokerSite -LocalHostCacheEnabled $false -ConnectionLeasingEnabled $true

  • ローカルホストキャッシュが有効かどうかを判断する

Get-BrokerSite

  1. 設計に関する考慮事項と要件

RAMサイズ、CPUコアとソケットの構成およびストレージについてはオンラインドキュメントをご覧下さい。

  1. トラブルシューティング

LocalDBへの同期インポートが失敗し、505イベントがポストされた場合、いくつかのトラブルシューティングツールを利用できます。こちらについてはオンラインドキュメントをご覧ください。

最後に

今回のローカルホストキャッシュ機能追加によりIMAアーキテクチャ(XenApp 6.5)のほとんどの機能がFMAアーキテクチャ(XenApp/XenDesktop 7.x)に実装されました。データベースの高可用性を担保した設計であればこの機能を使う機会はほとんどないかもしれませんが、何かあったときに役に立つと思います。まだXenApp 6.5 以前のバージョンを使っているユーザー様もまだいらっしゃると思いますので、この機会に導入を検討してはいかがでしょうか。

関連情報

ローカルホストキャッシュ オンラインドキュメント

https://docs.citrix.com/ja-ja/xenapp-and-xendesktop/7-12/manage-deployment/local-host-cache.html

接続リース オンラインドキュメント

https://docs.citrix.com/ja-ja/xenapp-and-xendesktop/7-6/xad-connection-leasing.html

ローカルホストキャッシュ 紹介ビデオ(英語・YouTube)

https://www.youtube.com/watch?v=9GtEzxHrH-s