2022年10月10日月曜日

Hyper-V VMの仮想TPM用証明書をフェールオーバークラスターの全ノードに配置する

またひとつ、勉強になった件。

とある理由により、仮想マシンにWindows 11 Enterpriseを入れたわけです。Windows 11は、TPMが必要なので、仮想マシンハードウェアで仮想TPMを有効化しました。

で、これらの仮想マシンは、Azure Stack HCI OSによるAzure Stack HCIクラスターで動作しています。

この仮想マシン群が、うまくライブマイグレーションしないことに気づきました。
フェールオーバークラスターマネージャーでイベント出てます。

当該Hyper-Vノードのイベントログにもちらりほらりとイベントが出ています。

で、色々見ていく中で、下記のイベントを見つけました。

イベントID 24008, Microsoft-Windows-Hyper-V-VMMS

The version of the device 'Microsoft Virtual TPM Device' of the virtual machine 'g2w11e02' is not compatible with device on physical computer 'CONTOSOAX64001'. (Virtual machine ID 8A7E2A27-631D-4038-9993-40BCED805E48)

検索してみました。

  1. Windows 2016 Hyper V Cluster Live Migration Fails with TPM enabled
  2. Allowing an additional host to run a VM with virutal TPM
1番の内容にぴったりくるような。。。
たしかに、それぞれのHyper-Vノードには、それぞれのHyper-Vホスト名の証明書しかないですね。

ということで、別Hyper-Vノードの証明書二つを下記パスにインポートしなければならないようです。

LocalMachine\Shielded VM Local Certificates\

Windows Admin Center (WAC)からエクスポートします。が、pfx形式がないけど大丈夫かな。

うまくいかないぞ。。。

項番1の最後に書いてある通り、秘密キーも持って行かないと駄目です。WACからだとpfxを選べないので、秘密キーが含まれておらず、やはり失敗しました。。。
証明書ストアから、別ホストの証明書を削除しますが、その際、自ホストの証明書を消さないように気を付けましょう!

で、上記項番1からだとった下記ページにあるcertutilでエクスポートしてみます。

certutil -store “Shielded VM Local Certificates”
を実行

Hyper-V 2016 Shielded Virtual Machines on Stand-Alone Hostsにあったエクスポート用のパスワードを流用させていただきつつ、シリアル番号を指定して、pfx形式でエクスポートします。

エクスポートを他方のHyper-Vノードでも繰り返します。

続いて、エクスポートしたpfx形式の証明書を他方のHyper-Vノードへインポートします。
certutil -importPFX "Shielded VM Local Certificates" 証明書ファイルへのパス\証明書ファイル名.pfx

別のHyper-Vノードでもインポートを行います。そうすると各Hyper-Vノードで同じ証明書が配置されることになります。これでライブマイグレーションの準備完了かな。

仮想TPMを使っている仮想マシンをライブマイグレーションしてみます。
問題無いですね。

以上

0 件のコメント:

コメントを投稿