可以在 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 的流量。 下图显示了此方案的基本体系结构:
以下步骤为 WEB 服务器使用名为 IaaSStory 的资源组,为数据库服务器使用名为 IaaSStory-BackEnd 的资源组。
先决条件
在创建 DB 服务器之前,需要创建包含此方案所需的所有资源的 IaaSStory 资源组。 若要创建这些资源,请完成以下步骤。 按照“ 创建虚拟网络 ”一文中的步骤创建虚拟网络。
先决条件:安装 Azure PowerShell 模块
若要执行本文中的步骤,需要 安装和配置 Azure PowerShell 模块。 请务必完成所有指令。 安装完成后,请登录到 Azure,然后选择订阅。
注释
需要一个 Azure 帐户来完成这些步骤。 如果没有 Azure 帐户,可以注册 免费试用版。
创建后端 VM
后端虚拟机依赖于以下资源的创建:
- 后端子网。 数据库服务器将属于单独的子网,用于隔离流量。 以下脚本要求此子网存在于名为 WTestVnet 的 vnet 中。
- 数据磁盘的存储帐户。 为了获得更好的性能,数据库服务器上的数据磁盘将使用固态驱动器(SSD)技术,这需要高级存储帐户。 确保部署的 Azure 位置支持高级存储。
- 可用性集。 所有数据库服务器都将添加到单个可用性集,以确保至少一个 VM 在维护期间启动并运行。
步骤 1 - 启动脚本
可以下载 此处使用的完整 PowerShell 脚本。 请按照以下步骤更改脚本,使其在你的环境中运行。
根据先决条件中已部署的现有资源组,更改以下变量的值。
$___location = "West US" $vnetName = "WTestVNet" $backendSubnetName = "BackEnd"
根据要用于后端部署的值更改以下变量的值。
$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 指定映像和本地管理员帐户。 若要创建这些资源,请完成以下步骤:
创建新的云服务。
New-AzureService -ServiceName $backendCSName -Location $___location
创建新的高级存储帐户。
New-AzureStorageAccount -StorageAccountName $prmStorageAccountName ` -Location $___location -Type Premium_LRS
将上面创建的存储帐户设置为订阅的当前存储帐户。
$subscription = Get-AzureSubscription | where {$_.IsCurrent -eq $true} Set-AzureSubscription -SubscriptionName $subscription.SubscriptionName ` -CurrentStorageAccountName $prmStorageAccountName
选择虚拟机的映像。
$image = Get-AzureVMImage ` | where{$_.ImageFamily -eq "SQL Server 2014 RTM Web on Windows Server 2012 R2"} ` | sort PublishedDate -Descending ` | select -ExpandProperty ImageName -First 1
设置本地管理员帐户凭据。
$cred = Get-Credential -Message "Enter username and password for local admin account"
步骤 3 - 创建 VM
需要使用循环创建任意数量的 VM,并在循环中创建必要的 NIC 和 VM。 若要创建 NIC 和 VM,请执行以下步骤。
启动
for
循环,重复命令来创建一个 VM 和两个 NIC,重复次数取决于变量$numberOfVMs
的值。for ($suffixNumber = 1; $suffixNumber -le $numberOfVMs; $suffixNumber++){
创建一个
VMConfig
对象,指定 VM 的映像、大小和可用性集。$vmName = $vmNamePrefix + $suffixNumber $vmConfig = New-AzureVMConfig -Name $vmName ` -ImageName $image ` -InstanceSize $vmSize ` -AvailabilitySetName $avSetName
将 VM 预配为 Windows VM。
Add-AzureProvisioningConfig -VM $vmConfig -Windows ` -AdminUsername $cred.UserName ` -Password $cred.GetNetworkCredential().Password
设置默认 NIC 并为其分配静态 IP 地址。
Set-AzureSubnet -SubnetNames $backendSubnetName -VM $vmConfig Set-AzureStaticVNetIP -IPAddress ($ipAddressPrefix+$suffixNumber+3) -VM $vmConfig
为每个 VM 添加第二个 NIC。
Add-AzureNetworkInterfaceConfig -Name ("RemoteAccessNIC"+$suffixNumber) ` -SubnetName $backendSubnetName ` -StaticVNetIPAddress ($ipAddressPrefix+(53+$suffixNumber)) ` -VM $vmConfig
为每个 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
创建每个 VM 并结束循环。
New-AzureVM -VM $vmConfig ` -ServiceName $backendCSName ` -Location $___location ` -VNetName $vnetName }
步骤 4 - 运行脚本
下载并更改脚本后,请运行该脚本,创建具有多个 NIC 的后端数据库 VM。
保存脚本并从 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'.
填写凭据提示中所需的信息,然后单击“ 确定”。 返回以下输出。
New-AzureVM xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Succeeded New-AzureVM xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Succeeded
步骤 5 - 在 VM 的作系统中配置路由
Azure DHCP 将默认网关分配给附加到虚拟机的第一个(主)网络接口。 Azure 不会将默认网关分配给附加到虚拟机的其他(辅助)网络接口。 因此,默认情况下无法与辅助网络接口所在子网的外部资源进行通信。 但是,辅助网络接口可以与子网之外的资源进行通信。 若要配置辅助网络接口的路由,请参阅以下文章: