━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ケーススタディ
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Horizon 7.x のトラブルシューティング
今回のテーマは、VMware Horizon のトラブルシューティングです。
Horizon の使用中に発生する可能性のある問題を診断および解決するために、様々な手順を使用できます。その中で、VMware のテクニカルサポートで実際に問題を診断・解決する際に使用している手順と、簡単なケーススタディをご紹介します。
なお、今回ご案内する内容は Horizon 7.x を想定したものです。バージョンによっては一部の内容に差異がありますのでご注意ください。
1. Horizon のコンポーネント
VMware Horizon はリモートデスクトップによって、仮想マシンへの社内または社外からリモートアクセスをユーザーに提供できます。Horizon では図1のとおり、Connection Server, View Agent, Horizon Client, View Composer, vCenter Server 等の複数のコンポーネントが連携してリモートデスクトップ機能を構成しています。
図1. Horizon コンポーネント概観
2. ログバンドルの取得
問題が発生した場合、動作が疑わしいコンポーネントのログバンドルを取得します。例えば、社内 VDI でリモートデスクトップへの接続ができない場合は、対象の Connection Server, View Agent 及び Horizon Client のログバンドルを取得します。
VMware Horizon View のログおよび診断情報の収集 (2032715)
VMware View のログ ファイルの場所 (2035956)
3. VDI 接続時のログ追跡
VDI 接続時の基本的な処理の流れとログの出力例を理解することはトラブルシューティングに有効です。図2で、VDI 接続時のログの追跡をご紹介します。
図2. VDI 接続の概要
初めに、ユーザーが Horizon Client から Connection Server へログインします(図2の①)。ここで Connection Server のログには “BROKER_USERLOGGEDIN” というイベントが記録されます。
---/ Connection Server のデバッグログ
① Connection Server へのログオン
2018-03-23T21:23:41.768+09:00 DEBUG (1204-0ECC) <ajp-nio-8009-exec-2> [EventLogger] ([SESSION:14da_***_b4d5]) Info_Event:[BROKER_USERLOGGEDIN] "User VIEW\user1 has logged in": Node=cs.view.local, Severity=AUDIT_SUCCESS, Time=Fri Mar 23 21:23:41 JST 2018, Source=net.propero.modules.properOps.UserSessionTracker, UserSID=S-1-5-21-1086808341-3789769985-2303298689-1238, ClientIpAddress=192.168.2.100, BrokerSessionId=14da_***_b4d5, Module=Broker, UserDisplayName=VIEW\user1, TotalUsers=1, Acknowledged=true
|
続いて、ユーザーが Horizon Client からデスクトッププールを選択すると、Connection Server を経由して仮想デスクトップのリクエスト及びアサインが実行されます(図2の②、③)。
ここで Connection Server ログには “BROKER_DESKTOP_REQUEST” 及び “BROKER_MACHINE_ALLOCATED” というイベントが記録されます。
---/ Connection Server のデバッグログ
② 仮想デスクトップのリクエスト
2018-03-23T21:23:50.864+09:00 DEBUG (1204-0ECC) <ajp-nio-8009-exec-2> [EventLogger] ([SESSION:14da_***_b4d5]) Info_Event:[BROKER_DESKTOP_REQUEST] "User VIEW\user1 requested Pool win10": UserSID=S-1-5-21-1086808341-3789769985-2303298689-1238, SessionType=DESKTOP, Node=cs.view.local, DesktopId=win10, Severity=INFO, Time=Fri Mar 23 21:23:50 JST 2018, Module=Broker, UserDisplayName=VIEW\user1, Source=com.vmware.vdi.broker.DesktopsHandler, Acknowledged=true
…
③ 仮想デスクトップのアサイン
2018-03-23T21:23:50.870+09:00 DEBUG (1204-0ECC) <ajp-nio-8009-exec-2> [EventLogger] ([SESSION:14da_***_b4d5]) Info_Event:[BROKER_MACHINE_ALLOCATED] "User VIEW\user1 requested Pool win10, allocated machine null": ProtocolId=[PCOIP], MachineId=bff1d919-4260-4041-b5e8-42f0947b4339, SessionType=DESKTOP, PoolId=win10, Node=cs.view.local, DesktopId=win10, Severity=INFO, Time=Fri Mar 23 21:23:50 JST 2018, Source=com.vmware.vdi.sessionclientapi.FarmImp, UserSID=S-1-5-21-1086808341-3789769985-2303298689-1238, Module=Broker, UserDisplayName=VIEW\user1, Acknowledged=true
|
そして、Horizon Client と View Agent の間で VDI 接続が確立されます(図2の④、⑤)。
ここで View Agent ログに “AGENT_PENDING” 及び “AGENT_CONNECTED” というイベントが記録されます。
---/ View Agent のデバッグログ
④ View Agent 接続処理開始
2018-03-23T21:23:51.057+09:00 DEBUG (0A14-0BF4) <Thread-17> [EventLoggerService] Info_Event:[AGENT_PENDING] "The agent running on machine W10-1 has accepted an allocated session for user VIEW\user1": MachineId=bff1d919-4260-4041-b5e8-42f0947b4339, SessionType=DESKTOP, PoolId=win10, Node=w10-1.view.local, Severity=INFO, Time=Fri Mar 23 21:23:51 JST 2018, Source=com.vmware.vdi.events.client.EventLogger, UserSID=S-1-5-21-1086808341-3789769985-2303298689-1238, MachineName=W10-1, Module=Agent, UserDisplayName=VIEW\user1, Acknowledged=true {SESSION:14da_***_b4d5}
…
⑤ View Agent 接続処理完了
2018-03-23T21:24:02.588+09:00 DEBUG (0A14-0BF4) <Thread-19> [EventLoggerService] Info_Event:[AGENT_CONNECTED] "User VIEW\user1 has logged in to a new session on machine W10-1": MachineId=bff1d919-4260-4041-b5e8-42f0947b4339, SessionType=DESKTOP, PoolId=win10, Node=w10-1.view.local, Severity=INFO, Time=Fri Mar 23 21:24:02 JST 2018, Source=com.vmware.vdi.events.client.EventLogger, UserSID=S-1-5-21-1086808341-3789769985-2303298689-1238, MachineName=W10-1, Module=Agent, UserDisplayName=VIEW\user1, Acknowledged=true
|
もし VDI の接続ができない場合には、上記の内容から VDI 接続の処理がどこまで進んでいるかをログで確認して、問題を切り分けることが可能です。
4. その他の Connection Server のログのトラブルシューティングの例
Connection Server のログにはコンポーネント毎に問題を解決する有効な情報が含まれています。以下ではログを用いた問題解決のケースをご紹介します。
ケース1 ドメインコントローラで障害が発生した場合の確認方法
Horizon は Windows のアクティブディレクトリの動きに大きく依存しています。ドメインコントローラで障害が発生した場合は、正常にサービスを提供することができません。ここでは、Connection Server のログからドメインコントローラの障害を切り分けるための手法をご紹介します。
---/ Connection Server のデバッグログ
2018-04-04T09:04:55.101+09:00 DEBUG (1CB4-237C) <WSWinAuthDomainTimerThread> [ws_winauth] Result from buildDomainMap is primaryDomain =
view.local = "GC:"
trustedDomains =
allDomains =
view.local = "GC:"
domainHealth =
domain =
name = "VIEW"
dns = "view.local"
isNT4 = "false"
trustType = "PRIMARYDOMAIN"
contactable = "UNCONTACTABLE" ★(異常系の場合)
dnsBag =
VIEW = "view.local"
|
もし、contactable が ”FULLYACCESSIBLE” (正常系)ではなく、”UNCONTACTABLE” (異常系)となっている場合、アクティブディレクトリのドメインコントローラの正常性確認が必要です。具体的には、Connection Server でコマンドプロンプトを管理者権限で起動し、以下のコマンドを実行してステータスを確認します。
(a) ドメインコントローラとの接続を確認します。
¥> nltest /dsgetdc:<ドメイン名>
(b) ドメインコントローラの状態を分析します。
¥> dcdiag /v /s:<ドメインコントローラ名>
¥> dcdiag /test:DNS /e /v /s:<ドメインコントローラ名>
|
ケース2 デスクトップ操作の不調
複数の Connection Server で冗長化している環境において、デスクトップのクローン作成などの vCenter Server へのリクエストが送信されない場合があります。Connection Server 冗長構成時のリクエスト処理時には他の全ての Connection Server に確認応答をもらう必要があり、全ての Connection Server から OK が来たら vCenter Serverにリクエストを送信します。
---/ Connection Server のデバッグログ
2018-04-06T09:21:16.835+09:00 DEBUG (04A8-0A28) <PendingOperation-/DataCenter/vm/win10/w10-2-CloningLC> [PendingOperation] cs - attempting to commitRequest for CloningLC on /DataCenter/vm/win10/w10-2, lockId: /DataCenter/vm/win10/w10-2
2018-04-06T09:21:16.848+09:00 DEBUG (04A8-0A28) <PendingOperation-/DataCenter/vm/win10/w10-2-CloningLC> [PendingOperation] Node cs2 returned VoteCommit with reason OK for request for CloningLC on /DataCenter/vm/win10/w10-2, lockId: /DataCenter/vm/win10/w10-2 OK ★(正常系の確認応答)
|
複数の Connection Server 間のデータの同期にトラブルの可能性がある場合は、ADAM データベースを確認してください。
View 接続サーバをレプリケートできない (2111938)
ADAM データベース間でレプリケーションを強制する (2097587)
|