使用 PowerShell 创建具有多个 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 PowerShell 模块

若要执行本文中的步骤,需要 安装和配置 Azure PowerShell ,始终按照说明登录到 Azure 并选择订阅。

Note

如果你没有 Azure 帐户,需要获取一个。 可以在此处注册 1 元试用帐户

创建后端 VM

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

  • 后端子网。 各数据库服务器将分别属于各个子网,以便隔离流量。 以下脚本需要在名为 WTestVnet的虚拟网络中存在此子网。
  • 数据磁盘的存储帐户。 为了提高性能,数据库服务器上的数据磁盘使用固态驱动器 (SSD) 技术,这需要高级存储帐户。 请确保部署到的 Azure 位置支持高级存储。
  • 可用性集。 所有数据库服务器都会添加到单个可用性集,以确保在维护期间至少有一个 VM 已启动且正在运行。

步骤 1 - 启动脚本

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

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

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

    $backendCSName         = "IaaSStory-Backend"
    $prmStorageAccountName = "iaasstoryprmstorage"
    $avSetName             = "ASDB"
    $vmSize                = "Standard_DS3"
    $diskSize              = 127
    $vmNamePrefix          = "DB"
    $dataDiskSuffix        = "datadisk"
    $ipAddressPrefix       = "192.168.2."
    $numberOfVMs           = 2
    

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

需要为所有 VM 的数据磁盘创建新的云服务和存储帐户。 还需要为 VM 指定映像和本地管理员帐户。 若要创建这些资源,请完成以下步骤:

  1. 创建新的云服务。

    New-AzureService -ServiceName $backendCSName -Location $location
    
  2. 创建新的高级存储帐户。

    New-AzureStorageAccount -StorageAccountName $prmStorageAccountName `
    -Location $location -Type Premium_LRS
    
  3. 将上面创建的存储帐户设置为订阅的当前存储帐户。

    $subscription = Get-AzureSubscription | where {$_.IsCurrent -eq $true}  
    Set-AzureSubscription -SubscriptionName $subscription.SubscriptionName `
    -CurrentStorageAccountName $prmStorageAccountName
    
  4. 为 VM 选择映像。

    $image = Get-AzureVMImage `
    | where{$_.ImageFamily -eq "SQL Server 2014 RTM Web on Windows Server 2012 R2"} `
    | sort PublishedDate -Descending `
    | select -ExpandProperty ImageName -First 1
    
  5. 设置本地管理员帐户凭据。

    $cred = Get-Credential -Message "Enter username and password for local admin account"
    

步骤 3 - 创建 VM

需要使用循环创建所需数量的 VM,并在循环中创建所需的 NIC 和 VM。 若要创建 NIC 和 VM,请执行以下步骤。

  1. 启动 for 循环,基于 $numberOfVMs 变量的值重复执行命令,从而以所需次数创建一个 VM 和两个 NIC。

    for ($suffixNumber = 1; $suffixNumber -le $numberOfVMs; $suffixNumber++){
    
  2. 创建 VMConfig 对象,它为 VM 指定映像、大小和可用性集。

    $vmName = $vmNamePrefix + $suffixNumber
    $vmConfig = New-AzureVMConfig -Name $vmName `
        -ImageName $image `
        -InstanceSize $vmSize `
        -AvailabilitySetName $avSetName
    
  3. 将 VM 预配为 Windows VM。

    Add-AzureProvisioningConfig -VM $vmConfig -Windows `
        -AdminUsername $cred.UserName `
        -Password $cred.GetNetworkCredential().Password
    
  4. 设置默认 NIC,并为其分配静态 IP 地址。

    Set-AzureSubnet         -SubnetNames $backendSubnetName -VM $vmConfig
    Set-AzureStaticVNetIP   -IPAddress ($ipAddressPrefix+$suffixNumber+3) -VM $vmConfig
    
  5. 为每个 VM 添加第二个 NIC。

    Add-AzureNetworkInterfaceConfig -Name ("RemoteAccessNIC"+$suffixNumber) `
    -SubnetName $backendSubnetName `
    -StaticVNetIPAddress ($ipAddressPrefix+(53+$suffixNumber)) `
    -VM $vmConfig
    
  6. 为每个 VM 创建两个数据磁盘。

    $dataDisk1Name = $vmName + "-" + $dataDiskSuffix + "-1"    
    Add-AzureDataDisk -CreateNew -VM $vmConfig `
    -DiskSizeInGB $diskSize `
    -DiskLabel $dataDisk1Name `
    -LUN 0
    
    $dataDisk2Name = $vmName + "-" + $dataDiskSuffix + "-2"   
    Add-AzureDataDisk -CreateNew -VM $vmConfig `
    -DiskSizeInGB $diskSize `
    -DiskLabel $dataDisk2Name `
    -LUN 1
    
  7. 创建每个 VM,并结束循环。

    New-AzureVM -VM $vmConfig `
    -ServiceName $backendCSName `
    -Location $location `
    -VNetName $vnetName
    }
    

步骤 4 - 运行脚本

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

  1. 保存脚本并从 PowerShell 命令提示符或 PowerShell ISE 运行它。 会看到最初的输出,如下所示。

     OperationDescription    OperationId                          OperationStatus
    
     New-AzureService        xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Succeeded
     New-AzureStorageAccount xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Succeeded
    
     WARNING: No deployment found in service: 'IaaSStory-Backend'.
    
  2. 在凭据提示中填写所需信息,并单击“确定”。 返回以下输出。

     New-AzureVM             xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Succeeded
     New-AzureVM             xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Succeeded