使用 Azure 经典 CLI 创建具有多个 NIC 的 VM(经典版)

可以在 Azure 中创建虚拟机(VM),并将多个网络接口(NIC)附加到每个 VM。 多个 NIC 可实现跨 NIC 的流量类型的分离。 例如,一个 NIC 可能与 Internet 通信,另一个 NIC 仅与未连接到 Internet 的内部资源通信。 许多网络虚拟设备(例如应用程序交付和 WAN 优化解决方案)需要跨多个 NIC 分隔网络流量。

重要

Azure 具有用于创建和处理资源的两个不同的部署模型:资源管理器部署模型和经典部署模型。 本文介绍使用经典部署模型的情况。 Microsoft 建议大多数新部署使用 Resource Manager 模型。 了解如何使用 Resource Manager 部署模型执行这些步骤。

情景

本文档逐步讲解在特定方案中使用 VM 中的多个 NIC 的部署。 在此场景中,Azure 托管了一个双层 IaaS 负载。 每个层部署在虚拟网络(VNet)中的自己的子网中。 前端层由多个 Web 服务器组成,在负载均衡器集中组合在一起以实现高可用性。 后端层由多个数据库服务器组成。 数据库服务器部署有两个 NIC,一个用于数据库访问,另一个用于管理。 此方案还包括网络安全组(NSG),用于控制允许发送到每个子网和部署中的 NIC 的流量。 下图显示了此方案的基本体系结构:

MultiNIC 方案

以下步骤为 WEB 服务器使用名为 IaaSStory 的资源组,为数据库服务器使用名为 IaaSStory-BackEnd 的资源组。

先决条件

在创建 DB 服务器之前,需要创建包含此方案所需的所有资源的 IaaSStory 资源组。 若要创建这些资源,请完成以下步骤。 按照“ 创建虚拟网络 ”一文中的步骤创建虚拟网络。

先决条件:安装 Azure CLI

若要执行本文中的步骤, 请安装 Azure CLI登录到 Azure

注释

如果没有 Azure 帐户,则需要一个。 在此处注册免费试用版。 此外,若要继续作,需要安装 jq 或其他一些 JSON 分析工具或库。

部署后端 VM

后端虚拟机依赖于以下资源的创建:

  • 数据磁盘的存储帐户。 为了获得更好的性能,数据库服务器上的数据磁盘将使用固态驱动器(SSD)技术,这需要高级存储帐户。 确保部署的 Azure 位置支持高级存储。
  • 网络接口卡(NICs)。 每个 VM 都有两个 NIC,一个用于数据库访问,一个用于管理。
  • 可用性集。 所有数据库服务器都将添加到单个可用性集,以确保至少一个 VM 在维护期间启动并运行。

步骤 1 - 启动脚本

可以下载 此处使用的完整 bash 脚本。 完成以下步骤以更改脚本使其适应您的环境:

  1. 根据部署在上述先决条件中的现有资源组,更改以下变量的值。

     location="useast2"
     vnetName="WTestVNet"
     backendSubnetName="BackEnd"
    
  2. 根据要用于后端部署的值更改以下变量的值。

     backendCSName="IaaSStory-Backend"
     prmStorageAccountName="iaasstoryprmstorage"
     image="0b11de9248dd4d87b18621318e037d37__RightImage-Ubuntu-14.04-x64-v14.2.1"
     avSetName="ASDB"
     vmSize="Standard_DS3"
     diskSize=127
     vmNamePrefix="DB"
     osDiskName="osdiskdb"
     dataDiskPrefix="db"
     dataDiskName="datadisk"
     ipAddressPrefix="192.168.2."
     username='adminuser'
     password='adminP@ssw0rd'
     numberOfVMs=2
    

步骤 2 - 为 VM 创建必要的资源

  1. 为所有后端 VM 创建新的云服务。 请注意使用 $backendCSName 变量表示资源组名称,以及使用 $location 变量表示 Azure 区域。

     azure service create --serviceName $backendCSName \
     	--location $location
    
  2. 为要由 VM 使用的 OS 和数据磁盘创建高级存储帐户。

     azure storage account create $prmStorageAccountName \
     	--location $location \
     	--type PLRS
    

步骤 3 - 创建具有多个 NIC 的 VM

  1. 启动一个循环,以基于 numberOfVMs 变量创建多个 VM。

     for ((suffixNumber=1;suffixNumber<=numberOfVMs;suffixNumber++));
     do
    
  2. 对于每个 VM,请指定两个 NIC 中每个 NIC 的名称和 IP 地址。

     nic1Name=$vmNamePrefix$suffixNumber-DA
     x=$((suffixNumber+3))
     ipAddress1=$ipAddressPrefix$x
    
     nic2Name=$vmNamePrefix$suffixNumber-RA
     x=$((suffixNumber+53))
     ipAddress2=$ipAddressPrefix$x
    
  3. 创建 VM。 请注意参数的使用 --nic-config ,其中包含名称、子网和 IP 地址的所有 NIC 的列表。

     azure vm create $backendCSName $image $username $password \
     	--connect $backendCSName \
     	--vm-name $vmNamePrefix$suffixNumber \
     	--vm-size $vmSize \
     	--availability-set $avSetName \
     	--blob-url $prmStorageAccountName.blob.core.windows.net/vhds/$osDiskName$suffixNumber.vhd \
     	--virtual-network-name $vnetName \
     	--subnet-names $backendSubnetName \
     	--nic-config $nic1Name:$backendSubnetName:$ipAddress1::,$nic2Name:$backendSubnetName:$ipAddress2::
    
  4. 对于每个 VM,请创建两个数据磁盘。

     azure vm disk attach-new $vmNamePrefix$suffixNumber \
     	$diskSize \
     	vhds/$dataDiskPrefix$suffixNumber$dataDiskName-1.vhd
    
     azure vm disk attach-new $vmNamePrefix$suffixNumber \
     	$diskSize \
     	vhds/$dataDiskPrefix$suffixNumber$dataDiskName-2.vhd
     done
    

步骤 4 - 运行脚本

下载并更改脚本后,请运行该脚本以创建具有多个 NIC 的后端数据库 VM。

  1. 保存脚本并从 Bash 终端运行它。 你将看到初始输出,如下所示。

     info:    Executing command service create
     info:    Creating cloud service
     data:    Cloud service name IaaSStory-Backend
     info:    service create command OK
     info:    Executing command storage account create
     info:    Creating storage account
     info:    storage account create command OK
     info:    Executing command vm create
     info:    Looking up image 0b11de9248dd4d87b18621318e037d37__RightImage-Ubuntu-14.04-x64-v14.2.1
     info:    Looking up virtual network
     info:    Looking up cloud service
     info:    Getting cloud service properties
     info:    Looking up deployment
     info:    Creating VM
    
  2. 几分钟后,执行将结束,你将看到输出的其余部分,如下所示。

     info:    OK
     info:    vm create command OK
     info:    Executing command vm disk attach-new
     info:    Getting virtual machines
     info:    Adding Data-Disk
     info:    vm disk attach-new command OK
     info:    Executing command vm disk attach-new
     info:    Getting virtual machines
     info:    Adding Data-Disk
     info:    vm disk attach-new command OK
     info:    Executing command vm create
     info:    Looking up image 0b11de9248dd4d87b18621318e037d37__RightImage-Ubuntu-14.04-x64-v14.2.1
     info:    Looking up virtual network
     info:    Looking up cloud service
     info:    Getting cloud service properties
     info:    Looking up deployment
     info:    Creating VM
     info:    OK
     info:    vm create command OK
     info:    Executing command vm disk attach-new
     info:    Getting virtual machines
     info:    Adding Data-Disk
     info:    vm disk attach-new command OK
     info:    Executing command vm disk attach-new
     info:    Getting virtual machines
     info:    Adding Data-Disk
     info:    vm disk attach-new command OK
    

步骤 5 - 在 VM 的作系统中配置路由

Azure DHCP 将默认网关分配给附加到虚拟机的第一个(主)网络接口。 Azure 不会将默认网关分配给附加到虚拟机的其他(辅助)网络接口。 因此,默认情况下无法与辅助网络接口所在子网的外部资源进行通信。 但是,辅助网络接口可以与子网之外的资源进行通信。 若要配置辅助网络接口的路由,请参阅 具有多个网络接口的虚拟机作系统中的路由