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

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

Important

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

方案

本文档将指导你完成在特定方案中使用 VM 中的多个 NIC 的部署。 在此方案中,你在 Azure 中托管两层 IaaS 工作负荷。 每个层部署在虚拟网络 (VNet) 中其自己的子网中。 前端层由几个 Web 服务器组成,这些服务器在负载均衡器集中组合在一起以实现高可用性。 后端层由几个数据库服务器组成。 这些数据库服务器将部署为每个具有两个 NIC,一个用于数据库访问,另一个用于管理。 此方案还包括网络安全组 (NSG) 以控制哪些流量允许到达部署中的每个子网和 NIC。 下图显示了此方案的基本体系结构。

MultiNIC 方案

以下步骤使用名为 IaaSStory 的资源组作为主资源组,并在名为 IaaSStory-BackEnd 的资源组中实现后端服务器。

先决条件

需要先创建具有此方案需要的所有资源的 IaaSStory 资源组,才能创建数据库服务器。 若要创建这些资源,请完成以下步骤。 若要创建虚拟网络,请完成创建虚拟网络一文中的步骤。

先决条件:安装 Azure CLI

若要执行本文中的步骤,需要安装适用于 Mac、Linux 和 Windows 的 Azure 命令行界面 (Azure CLI),并且需要登录到 Azure

Note

如果你没有 Azure 帐户,需要获取一个。可以在此处注册试用帐户。此外,若要顺利完成整个过程,需要安装 jq 或其他某种 JSON 解析工具或库。

部署后端 VM

后端 VM 取决于以下资源的创建:

  • 数据磁盘的存储帐户。 为了提高性能,数据库服务器上的数据磁盘使用固态驱动器 (SSD) 技术,这需要高级存储帐户。 请确保部署到的 Azure 位置支持高级存储。
  • NIC。 每个 VM 都会具有两个 NIC,一个用于数据库访问,另一个用于管理。
  • 可用性集。 所有数据库服务器都会添加到单个可用性集,以确保在维护期间至少有一个 VM 已启动且正在运行。

步骤 1 - 启动脚本

可在 此处下载所用的完整 bash 脚本。 完成以下步骤,更改脚本,以便用于具体环境:

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

    location="chinaeast"
    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 的名称和 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 参数的用法,其中包含所有 NIC 的列表(包含名称、子网和 IP 地址)。

    azure vm create $backendCSName $image $username $password \
        --connect $backendCSName \
        --vm-name $vmNamePrefix$suffixNumber \
        --vm-size $vmSize \
        --availability-set $avSetName \
        --blob-url $prmStorageAccountName.blob.core.chinacloudapi.cn/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