業務で社内にSystem Centerを使ったプライベートクラウドを作成し、エンジニアが自由に検証サーバーを作成できるセルフサービスの仕組みをSCACを使って提供しているのですが、実際に利用してもらうとすぐに「コンソールに接続できない」という問題が発生してしまいました。SCACを使ってWebブラウザから簡単に利用できなければ意味が無いのに、コンソールが開かないのでは全く意味がありません。情報があまりなく、解決まで結構時間がかかってしまったのですが、先日やっと解決出来たのでこちらでも紹介しておきます。
現象
現状は以下です。
- エンドユーザーがSCACから仮想マシンを作成し、コンソールを開くと、接続できず、以下のようになる。
- 必ず接続できないわけではなく、接続できる場合もある。接続できない場合もある。何に依存しているのかは不明。法則性は無いように見える。
さらに調査を進めていくとSCACだけの現象では無いことがわかりました。
- SCVMMのコンソールをエンドユーザーが自身の端末に導入し、そこからコンソールを開いても同じ現象が発生する(場合が多い)。
- SCVMMのVirtualMachineManager.exeを直接利用しても、Hyper-Vのvmconnect.exeを直接利用しても結果は同じ。
原因
色々と情報を探した所、結局これはHyper-Vに対しての権限が足りないことが原因で発生していました。説明と回避方法が以下のブログで紹介されていました。
- [Allowing non-Administrators to control Hyper-V - Ben Armstrong - Site Home - MSDN Blogs](http://blogs.msdn.com/b/virtual_pc_guy/archive/2008/01/17/allowing-non-administrators-to-control-hyper-v.aspx)
上記の記事によると、そもそも管理者以外はHyper-Vコンソールは利用できないとのことです。でもそうだとすると、エンドユーザーは100%の確立でコンソールに接続できないはずなので今回発生している事象とは異なります。しかし、回避策は今回の事象でも有効でした。
回避策
承認マネージャーにて権限を割り当ててあげることで問題を回避出来ました。以下の手順を全てのHyper-Vホスト上で実施する必要があります。
「ファイル名を指定して実行」から「mmc」を起動します。
mmcにて承認マネージャーを追加します。
承認ストアとして「C:\ProgramData\Microsoft\Windows\Hyper-V\InitialStore.xml」を開きます。
Administratorの役割に、コンソールを開く権限が必要なユーザー、グループを追加します。(※Administratorでは権限が強すぎるかもしれません。その場合役割自体を定義するのだと思われます(未検証)。)
ここまでの操作でXMLファイルには自動的に保存が完了しています。mmcを閉じる際に以下のように質問されますが、どのように操作しても目的の操作には影響有りません。
これでどのコンソールからでもきちんと接続が可能です。これでやっとまともに利用できます。
接続形態
ところで、そもそもこれらのコンソールはどのような接続形態になっているのかわかっていなかったのですが、調べた所以下の説明が見つかりました。
- [How Virtual Machine Manager Administrator Console uses VirtualMachineViewer.exe - Virtual Machine Management - Site Home - TechNet Blogs](http://blogs.technet.com/b/m2/archive/2008/06/02/how-virtual-machine-manager-administrator-console-uses-virtualmachineviewer-exe.aspx)
これによると、直接仮想マシンに接続するのではなく、RDPを使ってHyper-Vホストに接続し、そこからコンソールに接続する流れになっているとのこと。Remote Desktop Serviceも入っていないのに通常のRDPの2セッションの上限は超えられるし、Remote Appのようにアプリケーションの画面のみ表示しているようなイメージで動作もしているし…、なかなかおもしろいですね。