SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Azure の Nested VM の後で見る用のメモ

leave a comment

ブチザッキ兄さんDv3 / Ev3 VM と Nested Virtualization を見ればすべて解決ですが、自分メモとして。

Azure のサブスクリプションの利用料金に余裕があるうちは、デモ環境を Azure 上に持っておきたいなと思いまして。
投稿を書いている時点の、MS の公式なアナウンスとしては、次の二つになるかと。

Nested VM の情報については、入れ子になった仮想化による仮想マシンでの Hyper-V の実行 から確認できます。

新しい VM のサイズ


新しい VM のサイズとして、「Dv3」「Ev3」(旧 D11 ~ D14) が使用できるようになりました。

現時点で利用可能なリージョンとしては、次のリージョンとなる感じでしょうか。

  • 米国
    • 米国西部 2
    • 米国東部 2
  • ヨーロッパ
    • 西ヨーロッパ
  • アジア
    • 東南アジア

現時点では、米国西部2 を使うと安そうでした。
私の検証の範囲であれば、D8 v3 ぐらいのスペックがあれば、いろいろと検証できそうかなと。

サイズ
コア RAM 一時ストレージ
データディスク本数
料金
米国西部 2 米国東部 2 西ヨーロッパ 東南アジア
D2 v3 2 8.00 GiB 16 GB
4 本
\19.59/時間 \21.53/時間 \21.63/時間 \22.14/時間
D4 v3 4 16.00 GiB 32 GB
8 本
\39.17/時間 \43.05/時間 \43.25/時間 \44.27/時間
D8 v3 8 32.00 GiB 64 GB
16 本
\78.34/時間 \86.19/時間 \86.50/時間 \88.54/時間
D16 v3 16 64.00 GiB 128 GB
32 本
\156.68/時間 \172.38/時間 \173.00/時間 \177.08/時間
D32 v3 32 128.00 GiB 256 GB \313.35/時間 \344.66/時間 \345.99/時間 \354.15/時間
D64 v3 64 256.00 GiB 512 GB \626.69/時間 \689.32/時間 \691.97/時間 \708.29/時間
E2 v3 2 16.00 GiB 32 GB
4 本
\22.95/時間 \25.30/時間 \25.71/時間 \25.71/時間
E4 v3 4 32.00 GiB 64 GB
8 本
\45.90/時間 \50.49/時間 \51.41/時間 \51.41/時間
E8 v3 8 64.00 GiB 128 GB
16 本
\91.80/時間 \100.98/時間 \102.82/時間 \102.82/時間
E16 v3 16 128.00 GiB 256 GB
32 本
\183.60/時間 \198.29/時間 \205.64/時間 \205.64/時間
E32 v3 32 256.00 GiB 512 GB
32 本
\367.20/時間 \403.92/時間 \411.27/時間 \411.27/時間
E64 v3 64 432.00 GiB 864 GB
32 本
\692.18/時間 \761.43/時間 \775.20/時間 \775.20/時間

Hyper-V の有効化
初期の状態は Hyper-V は有効になっていませんので、Hyper-V の有効化を実施します。

Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart

 
仮想ハードディスク配置用の記憶域スペースの作成
Hyper-V の仮想ハードディスクを配置するディスクについては、I/O 性能が求められるため、記憶域スペースを使用したディスクとして切り出しておく必要があるかと。
接続されたディスクで記憶域スペースを構築するためには次のようなスクリプトを実行するとよいかと。

# ディスクの列数の指定
$Columns = (Get-PhysicalDisk -CanPool $true).Count
# ストライピングサイズの指定
$Interleave = 64KB
# 記憶域スペースの作成
New-StoragePool -FriendlyName datapool `
-StorageSubSystemFriendlyName "*$($ENV:COMPUTERNAME)*" `
-PhysicalDisks (Get-PhysicalDisk -CanPool $true)
# 仮想ディスクの作成
New-VirtualDisk -StoragePoolFriendlyName datapool -FriendlyName datadisk `
-UseMaximumSize -ResiliencySettingName Simple -NumberOfColumns $Columns -Interleave $Interleave

 
NAT ネットワークの設定
基本的な作業は https://github.com/charlieding/Virtualization-Documentation/tree/live/hyperv-tools/Nested で公開されているドキュメントを見るとよいかと。
ネットワークについては NAT スイッチ経由での接続となるため、Github で公開されているドキュメントの内容や、NAT ネットワークの設定 の内容を参考に、仮想マシンからの通信に必要なネットワークを作成していきます。
基本的な構文としては次のようになります。

New-VMSwitch -SwitchName "NAT Switch" -SwitchType Internal
$ifindex = (Get-NetAdapter | ? Name -Match "NAT Switch").ifIndex
New-NetIPAddress -IPAddress "192.168.0.1" -PrefixLength "24" -InterfaceIndex $ifindex
New-NetNat -Name "NAT Network" -InternalIPInterfaceAddressPrefix 192.168.0.0/24

 
これで、Hyper-V の「内部ネットワーク」のスイッチが作成され、そのスイッチが「192.168.0.1」のゲートウェイとして動作するようになりますので、作成した仮想マシンはこの仮想スイッチに接続をして、指定したプレフィックスのレンジの IP アドレスの割り当てと、ゲートウェイとして指定した IP アドレスを設定することで仮想マシンから外部ネットワークにアクセスが可能になります。
Github のドキュメントでは、VM ホストにDHCP / DNS を設定して、自動的な IP の割り当てを行っており、IP の自動割り当てについても考慮点として出てきそうですね。
内部ネットワークを適切に設定することで、「Nested の仮想マシン -> 外部ネットワーク」への接続ができるようになります。
情報を探したのですが、「外部ネットワーク -> Nested の仮想マシン」のアクセス方法がわかっていないですね…。
Hyper-V ホストからは Nested の仮想マシンに NAT スイッチ経由でアクセスできるのですが、ホスト以外からのアクセス方法がわからず。
ブチザッキ兄さんに「Add-NetNatStaticMapping」でマッピングしたら NAT 配下の VM にアクセスできると教えていただき、試してみたところ、さくっとできました。

ネットワークセキュリティグループの許可が必要となりますが、仮想マシンへの 13389 のアクセスを Nested VM 上の仮想マシンの 3389 にリダイレクトさせる場合は、次のようになります。

$NatName = "NAT Network"

Add-NetNatStaticMapping -NatName $NatName -Protocol TCP -ExternalIPAddress 0.0.0.0 -ExternalPort 13389 -InternalIPAddress 192.168.0.100 -InternalPort 3389

仮想マシンのプロダクトキー
Azure の仮想マシンは、KMS に対して認証が行われています。
Nested VM の仮想マシンの認証についても考慮をしておく必要があります。
単純な方法としては AVMA の利用でしょうか。
AVMA を試してみたところ、Nested VM な仮想マシンでも認証を行うことができました。

slmgr -ipk <avma のプロダクトキー>
実行方法の例 :
slmgr -ipk TMJ3Y-NTRTM-FJYXT-T22BY-CWG3J
slmgr -ato

 
AVMA のプロダクトキーについては、Automatic Virtual Machine Activation から確認することができます。
もう一つの方法としては、KMS の利用になるかと。
KMS のプロダクトキーについては、Appendix A: KMS Client Setup Keys から確認できます。
KMS ホストの認識に関しては、オプションにより手動で設定しています。

slmgr -ipk <プロダクトキー>
実行方法の例 :
slmgr -ipk CB7KF-BWN84-R7R2Y-793K2-8XDDG
slmgr -skms kms.core.windows.net:1688
slmgr -ato
Share

Written by Masayuki.Ozawa

7月 30th, 2017 at 2:42 pm

Posted in Microsoft Azure

Tagged with

Leave a Reply