SE の雑記

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

複数 NIC を持った仮想マシンの作成

without comments

複数の NIC を備えた VM の作成
Azure VM での複数の NIC のサポート、Azure へのネットワーク仮想アプライアンスの導入
Microsoft Azure の仮想ネットワーク上に複数NICの仮想マシンを配置してみる
ですでに情報が公開されていますが、まだ触っていなかったのでちょっと試してみました。
割と普通なブログ さんで紹介されている方法は NIC を 2 つ持つ仮想マシン (Large で可能)、MSDN で紹介されている方法は NIC を 3 つ持つ仮想マシン (Extra Large で可能) の作成方法となっているようです。

複数 NIC については自分が参加している VNet のサブネットに応じた NIC を追加するための機能となるかと。

  • VNet #1
    • Subnet-1-1
    • Subnet-1-2
  • VNet #2
    • Subnet-2-1
    • Subnet-2-2

となっている場合には、

  • Subnet-1-1 の IP アドレスを持つ NIC / Subnet-1-2 の IP アドレスを持つ NIC
  • Subnet-2-1 の IP アドレスを持つ NIC / Subnet-2-2 の IP アドレスを持つ NIC

というような構成になるかと。
異なる VNet のネットワークをつなぐための NIC は作成できないのかなと思っています。
また、作成時の注意点としては、

  • Large 以上の VM
  • 現状は VM の作成時にのみ複数 NIC を持った仮想マシンを作成でき、既存の仮想マシンに NIC を追加することができない

のがポイントとなるかと。
現状は PowerShell からのみ複数 NIC を持った仮想マシンの作成が可能です。
それでは、作成の方法を見ていきたいと思います。
現状、仮想ネットワークとして以下のような構成が行われています。
image
この仮想ネットワークに対して、以下の PowerShell で仮想マシンを作成します。
# サービス名はユニークなものを任意に設定してください。

$AdminUser = "<管理者ユーザー名>"
$AdminPassword = "<管理者パスワード>"
$ServiceName = "<サービス名>" # クラウドサービス名のため取得できるサービス名を指定する
$Location = "japan west"
# サブスクリプションの選択
if ($Subscription -eq $null){
    Add-AzureAccount
    $Subscription = Get-AzureSubscription | Out-GridView -OutputMode Single
    Select-AzureSubscription $Subscription.SubscriptionName -Current
    # CurrentStorageAccount が設定されていない場合は以下で設定
    # Set-AzureSubscription -SubscriptionName $Subscription.SubscriptionName -CurrentStorageAccountName "<ストレージアカウント名>"
}
# Windows Server 2012 R2 の最新のイメージを取得
$image = Get-AzureVMImage | where {$_.OS -eq "Windows" -and $_.ImageFamily -eq "Windows Server 2012 R2 Datacenter"} | sort PublishDate -Descending | select -First 1
# AzureVM の基本設定
$VM = New-AzureVMConfig -Name "MultiNicVM" -InstanceSize "Large" -ImageName $image.ImageName
Add-AzureProvisioningConfig -VM $vm -Windows -AdminUsername $AdminUser -Password $AdminPassword
# NW 設定
$VNetSite = Get-AzureVNetSite | Out-GridView -OutputMode Single
$VMNW = @()
# プライマリ NIC の選択
$VMNW += $VNetSite.Subnets | Out-GridView -OutputMode Single
# セカンダリ NIC の選択
$VMNW += $VNetSite.Subnets | Out-GridView -OutputMode Single
# 既定の NIC の設定
Set-AzureSubnet -SubnetNames $VMNW[0].Name -VM $VM
# セカンダリ NIC の追加
Add-AzureNetworkInterfaceConfig -Name "Ethernet 2" -SubnetName $VMNW[1].Name -VM $VM
# 仮想マシンの作成
$VM | New-AzureVM -ServiceName $ServiceName -Location $Location -VNetName $VNetSite.Name -WaitForBoot

選択としては以下の 4 項目を設定します。

  • サブスクリプションを選択
  • 仮想マシンを作成する仮想ネットワークを選択
  • 仮想ネットワーク内のサブネットでプライマリ NIC で使用するネットワークを選択
  • 追加する NIC で使用するサブネットを選択

久しぶりに New-AzureVM を触ってみたのですが、上記のスクリプトの内容だと ?Location を設定しないと、「CreateService」ではなく「ExisitngService」での動作となってしまい、新規にサービス名を作成するという動作にすることができませんでした。
これで、複数 NIC を持った仮想マシンを作成することが可能です。
image
同一の仮想ネットワーク内の通信に使用するので、

  • Windows ファイアウォールで特定のサブネットからのみ接続可能という指定によるセキュリティ設定
  • ネットワークトラフィックの分離

あたりの用途で使うことになるのでしょうかね。
容易に仮想ネットワーク間を接続するための方法として使えるようになるとよいのですが。

Written by Masayuki.Ozawa

12月 31st, 2014 at 1:31 am

Leave a Reply