SysTrack を紹介する際によく聞かれる話として非永続型デスクトップへの対応について本稿では説明させて頂きます。

非永続型デスクトップとは

非永続型デスクトップ (Non-Persistent Desktop)は一般的にセッション中に行われた書き込みや変更が破棄されてしまうようなデスクトップ構成を指します。StatelessVDI のような言い方をされることもありますが、ここでは非永続型デスクトップで統一します。
(こう言われるより単純にPVS(Provisioning Services)やリンククローンと言われた方がピンとくる方が多いかもしれません)

このような構成にすることによってユーザーによる不正な変更やセキュリティリスクを排除するだけでなく、ユーザーがいつどのデスクトップを使っても同じデスクトップ環境を提供することが出来るようになります。
当然ユーザーファイルやメールのようなユーザーデータまで失われてしまっては困るのでユーザーのプロファイルは移動ユーザープロファイルやフォルダリダイレクト(あるいは類似の仕組み)で保持されます。

以下に非永続型デスクトップの代表的な例についてまとめます。

Solution VDI 方式 ユーザーデータの保管オプション
Virtual Desktop (旧XenDesktop)
Virtual Apps (旧XenApp)
PVS (Provisioning Services)
MCS (Machine Creation Services)
移動ユーザープロファイル
Personal vDisk
User Layer (Application Layering)
フォルダリダイレクト
Horizon インスタントクローン
リンククローン
移動ユーザープロファイル
(UEM※1も含む)
永続デスク
Writable Volumes (App Volumes)
フォルダリダイレクト

※1: UEMはここではUnified Endpoint Managementではなく、User Environment Managerの事を指します

非永続型デスクトップとSysTrack

非永続型デスクトップでSysTrackを使うとどのような問題が起きるのでしょうか。
SysTrackは仕組み上クライアントのローカルにもデータを格納しています。

例えば15秒間隔の性能データなどはサーバーにアップロードされないので、このようなデータはローカルのエージェント側に保持しておく必要があります。

もう少し具体的に言うと、これらのファイルは以下のMDB形式で保存されています。

C:\Program Files (x86)\SysTrack\LsiAgent\MDB\collect.mdb (64bit OS)
C:\Program Files\SysTrack\LsiAgent\MDB\collect.mdb (32bit OS)

この情報がセッション終了後に保持出来ないとなると、SysTrackは正しく動作しないため非永続型デスクトップでSysTrackを使うときにはいくつかの構成オプションがあります。

Pooled User方式とPooled System方式

SysTrackではこのような環境に対処するために以下の2方式があります。

(1) Pooled User方式 (POOLNAME インストール)

はじめのオプションは Pooled User方式と言われるオプションです。インストール時のパラメータ名を取ってPOOLNAME インストールと言われることもあります。
これは移動ユーザープロファイルのような考え方に近く、MDBファイルをSysTrackのマスターサーバーにセッション開始時にダウンロードし、セッション終了時にアップロードする方式です。この方式はVDI側でデータを保持する必要が無いので、非永続型デスクトップでは最も広く適用可能な方式ですが、シングルユーザーにしか対応していないため、Citrix Virtual Apps (旧XenApp) のようなターミナルサーバー/リモートデスクトップセッションホストのような形式には適用できません。

このようなPooled User方式のもう一つのメリットは、流動式のデスクトップ割り当てと相性がいいことです。

Pooled User方式は上図を見ても分かる通り、システム(仮想マシン)と言うよりはユーザーセッションに紐づいたMDBのデータ収納単位になります。つまりユーザーが各セッションで別の仮想マシンを使用したとしてもメトリックはそのユーザーのメトリックとして保持されます。したがって「太郎さんの1か月のCPU利用率」を知りたいと思ったときに利用した30台のデスクトップのCPU使用率を取得する必要がなくなります。

当然移動ユーザープロファイルと同様にログインストームに近いものが発生するのですが、少し補足します。

  • データはMDBをZIPして行われるので10分の1ほどに圧縮されます。
    多くの場合データは5MB-10MB程度に収まります
  • この処理はログインプロセスには影響しないため、ここが遅延してもログイン処理が遅延することはありません
    ※ログオフ時にはデータアップロードの完了が必要なためアップロードに時間がかかるとログオフに時間がかかる可能性があります
  • この処理はSysTrack Masterサーバーに対して行われます。ファイルサーバーではありません。

なので、ある程度の配慮はされているのですが、実際にログイン・ログオフ時にインフラ全体の負荷がギリギリになっているような大規模環境では注意が必要です。

(2) Pooled System方式

もう一つの方式はPooled DB方式と呼ばれるものです。インストール時のパラメータ名を取ってPOOLDBインストールと言われることもあります。
デフォルトのインストールも広義にはPOOLDBインストールなのですが、ここではデフォルトのロケーションからMDBの保管先を変えることを指します。

これはVDI環境で何らかの永続デスク(Persistent Disk)が存在する環境で利用される方式です。
例えばPVS環境の場合、ライトキャッシュ用のディスク(Dドライブなど)はログオフしても破棄されないためログの格納場所などに使用されたりしますが、同様にしてMDBファイルをライトキャッシュディスクに格納することも出来ます。(D:\SysTrack\collect.mdb など)

またこの構成は推奨はしていませんが、MDBのファイル格納先にCIFSの共有フォルダを指定する事も出来ます。この場合の注意点として共有フォルダにはSystemアカウントでアクセスする事になるため、コンピュータ単位で許可を行う必要があります。
(注: 低遅延のSMB v3以上の専用ファイルサーバーを推奨しています。ファイルサーバーの再起動など一時的なアクセスエラーが出た場合もエージェントは再起動するまで書き込みは行えなくなるため高い可用性が保証できるファイルサーバーを利用して下さい)

これはセキュリティ上の理由で Program Files フォルダに書き込みが許可されていないような環境でも適用できます。

インストールオプションの例

詳細はインストーラに同梱されているインストールガイド(SystemManagementAgent.pdf)をご参照頂きたいのですが、上記の方式を取るときには直接MSIインストーラをマスター上で実行する必要があります。

具体的には以下のようなMSI のインストールオプションを指定する事になります。
※ ここではすでにvcredist_x86_VC2017.exeやvcredist_x64_VC2017.exe などのインストールは完了した状態であることを想定しています

(1) Pooled User 方式の場合(赤字は環境に応じて変えてください)

インストールオプション例:

msiexec.exe /qn /i “C:\Temp\msi\Systems Management Agent_x32.msi” ALLUSERS=1 REBOOT=R MSIRESTARTMANAGERCONTROL=Disable
MASTERNAME=masterserver.local PORTNUMBER=57632 POOLNAME=Pool1 /L*v C:\Temp\ChildAgentMSI.log

上記のようなオプションを指定するのですが、ここで指定されるPOOLNAMEと言うインストールパラメータがキーになるのですが、ここで指定するプール名は必ずしもVDI側のプール名と一致している必要はありません。たとえば同じマスターから複数のプールを作成しているような環境では当然マスターとプール名が一致しなくなりますが、このような環境では同じPOOLNAMEパラメータを指定する事を推奨しています。

もう一点注意点としてこのインストールを行うとインストールを行ったマスターのシステム名がレジストリーキーに格納されます。
そこでマスター上での作業の場合にはエージェントがサービスとして起動しなくなるのでマスター上の作業のときにはMDBのダウンロード・アップロードは発生しないのでテストの際にはご注意ください。
この動作が気になる場合には以下のレジストリーキーを確認してください。

パス: HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Lakeside Software\Deploy
値名: PooledParentSystem (REG_SZ)

(2) Pooled System 方式の場合(赤字は環境に応じて変えてください)

インストールオプション例:

Msiexec.exe /qn /i “C:\Temp\msi\Systems Management Agent_x32.msi” ALLUSERS=1 REBOOT=R MSIRESTARTMANAGERCONTROL=Disable
MASTERNAME=masterserver.local PORTNUMBER=57632 POOLDB=“D:\SysTrack\collect.mdb” /L*v C:\Temp\ChildAgentMSI.log

インストールオプション例(ファイルサーバーの場合):

Msiexec.exe /qn /i “C:\Temp\msi\Systems Management Agent_x32.msi” ALLUSERS=1 REBOOT=R MSIRESTARTMANAGERCONTROL=Disable
MASTERNAME=masterserver.local PORTNUMBER=57632 POOLDB=“\\fileserver\share\pooldb\%SYSTEMNAME%” /L*v C:\Temp\ChildAgentMSI.log

例えばPVS環境などで上記のオプションをGolden Master上で実施するとDドライブが存在しないのでサービス起動時にMDBファイルが作成できずにデフォルトのロケーションでMDBが作成されてしまいます。
この動作が気になるときにはGolden Masterでインストールし、Privateモードなどで以下のレジストリキーを指定してください。

パス:HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Lakeside Software\Deploy
値名: PoolDB (REG_SZ)

各ソリューション別の方式選択例

これまでの議論を踏まえて具体的にソリューション毎にどのような選択がされることが多いのかを以下の表にまとめてみました。

構成 インストール 理由
PVS(Provisioning Services) POOLDB ライトキャッシュ用ドライブに保持可能
Virtual Apps (旧XenApp) (PVS)
Virtual Apps (旧XenApp) (通常構成) 通常インストール POOLNAMEはマルチユーザーに非対応
Horizon リンククローン POOLNAME パーシステントディスクが存在しないため
Horizon インスタントクローン
Horizon RDS (リンククローン) POOLDB (CIFS) パーシステントディスクが存在せず、POOLNAMEがマルチユーザーに対応していないため。
同時ユーザー数の多い高負荷のRDS環境では利用出来ない可能性もあり
Horizon Persistent Disk
(占有割り当て)
POOLDB パーシステントディスク(Dドライブ)にMDB を保持する
Windows シンクライアント 通常インストール MDBフォルダの書き込み保護を解除してもらう

類似ソリューションなどはVDI対応を謳っていながら、現在はVDIで主流になりつつある非永続型デスクトップの対応が十分でないところもあります。
是非この辺の部分も検討の際には十分に確認して頂ければと思います。

参考情報

(英文)SysTrack 8 Agent Installation on NonPersistent Terminal Servers

デモサイト
SysTrack Demo アカウントリクエストページ