写作时间:2015年2月22日星期日

1 概述

随着公有云的推广和接受,大家发现公有云的价值和优势,但是在很多场景下,我们仍然需要去部署很多网络虚拟设备,而对于这些部署在 Azure 中的大多数网络虚拟设备,多 NIC 是一个基本要求,同时需要提供管理网络流量的更大能力。多 NIC 功能可让你在 Azure 虚拟机 (VM) 上创建和管理多个虚拟网络接口 (NIC)。你可以隔离前端 NIC 和后端 NIC 之间的流量,或者将数据平面流量与管理平面通信隔离开来。

创建多NIC VM_隔离

示意图

多 NIC 具有以下要求和约束:

1. 多 NIC VM 必须在 Azure 虚拟网络中创建,不支持非 VNet VM。

2. 当前版本不支持在创建 VM 后添加或移除 NIC,只能在创建 VM 时应用多 NIC。

3. 多 NIC VM 无法充当第 3 层 (IP) 网关或路由器来转发流量,数据包必须发往或来自 VM 上的某一个 VNet IP 地址。

4. 只有“默认”NIC 才支持面向 Internet 的 VIP。只有一个 VIP 定向到默认 NIC 的 IP。

5. 目前,多 NIC VM 不支持 PIP。

6. 目前无法向非默认 NIC 应用网络安全组 (NSG) 或强制隧道。

7. VM 内部的 NIC 顺序是随机的,每次更新 Azure 基础结构后可能会更改。但是,IP 地址和相应的以太网 MAC 地址将保持相同。例如,假设 Eth1 的 IP 地址为 10.1.0.100,MAC 地址为 00-0D-3A-B0-39-0D;更新并重新启动 Azure 基础结构后,Eth1 可能会更改为 Eth2,但其 IP 和 MAC 配对将保持相同。客户执行重新启动后,NIC 顺序将保持相同。

8. 支持在同一个虚拟网络子网中使用多个 NIC。

9. VM 大小决定了可为 VM 创建的 NIC 数目。下表列出了 VM 大小对应的 NIC 数目:

VM 大小(标准 SKU)

NIC 数目(每个 VM 允许的最大数目)

A3、A6、D3、G3、D12(4 核)

2

A4、A7、D4、D13(8 核)

4

目前的所有其他大小

1

2 创建对NIC VM

2.1 配置默认存储账户

New-AzureStorageAccount -StorageAccountName "nicvmstorage" -Label "VM-Multi-NICs" -Location "China East"

创建多NIC VM_虚拟机_02

Set-AzureSubscription –SubscriptionName "Microsoft Azure Enterprise 试用版" -CurrentStorageAccount nicvmstorage

2.2 选择一个VM镜像

获取需要部署的VM镜像名称

Get-AzureVMImage | where {$_.Label -like 'windows server*'}

创建多NIC VM_网络虚拟_03

选择刚才列出的OS

$image = Get-AzureVMImage -ImageName "55bc2b193643443bb879a78bda516fc8__Windows-Server-2012-Datacenter-201410.01-en.us-127GB.vhd"

创建多NIC VM_隔离_04

创建VM配置

PS C:\> $vm = New-AzureVMConfig -Name "NGNicVM" -InstanceSize "ExtraLarge" -ImageName –AvailabilitySetName “NGAV01”

创建多NIC VM_虚拟机_05

创建默认管理员和登录名

Add-AzureProvisioningConfig –VM $vm -Windows -AdminUserName “neoni” -Password “P@ssw0rd”

创建多NIC VM_隔离_06

将附加的 NIC 添加到 VM 配置中。对于此操作,需要注意几个事项:

默认NIC 的配置不是通过此 cmdlet 设置的。

SubnetName 必须与所需虚拟网络中的某个子网匹配。

Name 参数在同一个 VM 中必须唯一,但不表示该 VM 中 NIC 的名称。

Add-AzureNetworkInterfaceConfig -Name "Ethernet2" -SubnetName "subnet-2" -StaticVNetIPAddress "10.0.1.100" -VM $vm

创建多NIC VM_虚拟机_07

Add-AzureNetworkInterfaceConfig -Name "Ethernet3" -SubnetName "subnet-3" -StaticVNetIPAddress "10.0.2.100" -VM $vm

创建多NIC VM_隔离_08

指定默认NIC子网和IP

Set-AzureSubnet -SubnetNames "subnet-1" -VM $vm

Set-AzureStaticVNetIP -IPAddress "10.0.0.100" -VM $vm

创建多NIC VM_隔离_09

创建虚拟网络的VM(cloud service需要先存在,并且不能存在有单网卡的VM)

New-AzureVM -ServiceName "niccloudservicetest" –VNetName “ngtest-network” –VM $vm

创建多NIC VM_网络虚拟_10

链接到VM查看

创建多NIC VM_隔离_11

创建多NIC VM_虚拟机_12