Azure中的虚拟机现在是支持多网卡(NIC)配置的,但是要想使用多网卡虚拟机需要注意几点,首先是多网卡的虚拟机不能当作三层(IP)网关使用,因为无法转发流量。其次就是不是全部规格(size)的虚拟机都能支持多网卡,除基本(Basic)规格以外,只有以下支持:

大型(A3)A62

超大型(A4)A74

A9:2 个

D3:2 个

D4:4 个

D13:4 个

此外还需要注意多网卡虚拟机必须位于虚拟网络中,且VIP地址只会映射到默认的网卡上,其他细节可参阅微软Azure官网,下面就来看看如何使用多网卡Azure虚拟机。

##################################################################################

首先你要有个虚拟网络,以及必要的子网,具体子网配置情况看需求了,一般来讲多网卡虚拟机是需要对流量进行分流,比如使用单独的NIC来与后端数据通信,默认的NIC来接收外部访问,这是比较典型的场景,在我的Azure订阅中我创建了一个叫做“sstpvnet”的虚拟网络,然后里面有两个子网“outbound”和“inbound”,且它们各有一个172.16.10.0/28的子网地址,如下图:

wKiom1U4xnjBBZ1JAAKreXkBmMI875.jpg

接下来就是创建多网卡虚拟机了,要使用powershell来操作,因为多网卡设置无法通过图形化界面实现,且创建后的虚拟机不能添加NIC,只能是在创建时设置,如下图中所示,首先我习惯定义一个$p_w_picpath变量来获取一个想要的操作系统镜像作为该虚拟机模板,这里我使用了最新发布日期的“windows server 2012 r2 datacenter”的镜像。

然后关键在于第2步,与创建普通虚拟机的区别在于,首先要注意instancesize,不能小于"Large",否则会有提示当前规格不支持多网卡,其次是要注意将这台虚拟机放置在虚拟网络中,然后就是添加额外的新网卡“add-azurenetworkinterfaceconfig”并指定名称“-name”,这里我把它称为“back_end”,这是在传递参数时使用的NIC接口名称,是固定的,但不是在GuestOS里面显示的网卡名称,一定要清楚这个道理,这个back_end可不会在系统里出现的,最后就是给这个额外的NIC附加一个子网内的IP,如下图:

wKioL1U4x9fzjOzqAARWmOhonQI874.jpg

创建启动成功,可以在云服务中看到当前一个VM Role正在部署中,如下图:

wKiom1U4xnqjvGBdAAJIfYsgBh8799.jpg

部署成功后进入GuestOS后可以看到双网卡配置,如下图:

wKioL1U4x9qDP1u9AAUT7pEAyEA511.jpg

可以看到两块网卡所用的IP地址是之前指定的虚拟子网中的IP,也就是outbound和inbound中的IP,如下图:

wKiom1U4xnyi8xl_AAb_EfbIHOM943.jpg

多网卡的功能丰富了Azure虚拟机的作用同时也满足了一些用户场景,而且不需要额外费用:),不过我在部署多网卡虚拟机时发现虚拟机始终处于provisioning状态中。。。知道最后time out,但实际我已经可以进入GuestOS中操作,不知道是不是偶然现象。