写作时间:2015年2月22日星期日
1 概述
随着公有云的推广和接受,大家发现公有云的价值和优势,但是在很多场景下,我们仍然需要去部署很多网络虚拟设备,而对于这些部署在 Azure 中的大多数网络虚拟设备,多 NIC 是一个基本要求,同时需要提供管理网络流量的更大能力。多 NIC 功能可让你在 Azure 虚拟机 (VM) 上创建和管理多个虚拟网络接口 (NIC)。你可以隔离前端 NIC 和后端 NIC 之间的流量,或者将数据平面流量与管理平面通信隔离开来。
示意图
多 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"
Set-AzureSubscription –SubscriptionName "Microsoft Azure Enterprise 试用版" -CurrentStorageAccount nicvmstorage
2.2 选择一个VM镜像
获取需要部署的VM镜像名称
Get-AzureVMImage | where {$_.Label -like ‘windows server*‘}
选择刚才列出的OS
$image = Get-AzureVMImage -ImageName "55bc2b193643443bb879a78bda516fc8__Windows-Server-2012-Datacenter-201410.01-en.us-127GB.vhd"
创建VM配置
PS C:\> $vm = New-AzureVMConfig -Name "NGNicVM" -InstanceSize "ExtraLarge" -ImageName –AvailabilitySetName “NGAV01”
创建默认管理员和登录名
Add-AzureProvisioningConfig –VM $vm -Windows -AdminUserName “neoni” -Password “[email protected]”
将附加的 NIC 添加到 VM 配置中。对于此操作,需要注意几个事项:
默认NIC 的配置不是通过此 cmdlet 设置的。
SubnetName 必须与所需虚拟网络中的某个子网匹配。
Name 参数在同一个 VM 中必须唯一,但不表示该 VM 中 NIC 的名称。
Add-AzureNetworkInterfaceConfig -Name "Ethernet2" -SubnetName "subnet-2" -StaticVNetIPAddress "10.0.1.100" -VM $vm
Add-AzureNetworkInterfaceConfig -Name "Ethernet3" -SubnetName "subnet-3" -StaticVNetIPAddress "10.0.2.100" -VM $vm
指定默认NIC子网和IP
Set-AzureSubnet -SubnetNames "subnet-1" -VM $vm
Set-AzureStaticVNetIP -IPAddress "10.0.0.100" -VM $vm
创建虚拟网络的VM(cloud service需要先存在,并且不能存在有单网卡的VM)
New-AzureVM -ServiceName "niccloudservicetest" –VNetName “ngtest-network” –VM $vm
链接到VM查看