可以在 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 CLI
若要执行本文中的步骤, 请安装 Azure CLI 并 登录到 Azure。
注释
如果没有 Azure 帐户,则需要一个。 在此处注册免费试用版。 此外,若要继续作,需要安装 jq 或其他一些 JSON 分析工具或库。
部署后端 VM
后端虚拟机依赖于以下资源的创建:
- 数据磁盘的存储帐户。 为了获得更好的性能,数据库服务器上的数据磁盘将使用固态驱动器(SSD)技术,这需要高级存储帐户。 确保部署的 Azure 位置支持高级存储。
- 网络接口卡(NICs)。 每个 VM 都有两个 NIC,一个用于数据库访问,一个用于管理。
- 可用性集。 所有数据库服务器都将添加到单个可用性集,以确保至少一个 VM 在维护期间启动并运行。
步骤 1 - 启动脚本
可以下载 此处使用的完整 bash 脚本。 完成以下步骤以更改脚本使其适应您的环境:
根据部署在上述先决条件中的现有资源组,更改以下变量的值。
location="useast2" vnetName="WTestVNet" backendSubnetName="BackEnd"
根据要用于后端部署的值更改以下变量的值。
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 创建必要的资源
为所有后端 VM 创建新的云服务。 请注意使用
$backendCSName
变量表示资源组名称,以及使用$location
变量表示 Azure 区域。azure service create --serviceName $backendCSName \ --location $location
为要由 VM 使用的 OS 和数据磁盘创建高级存储帐户。
azure storage account create $prmStorageAccountName \ --location $location \ --type PLRS
步骤 3 - 创建具有多个 NIC 的 VM
启动一个循环,以基于
numberOfVMs
变量创建多个 VM。for ((suffixNumber=1;suffixNumber<=numberOfVMs;suffixNumber++)); do
对于每个 VM,请指定两个 NIC 中每个 NIC 的名称和 IP 地址。
nic1Name=$vmNamePrefix$suffixNumber-DA x=$((suffixNumber+3)) ipAddress1=$ipAddressPrefix$x nic2Name=$vmNamePrefix$suffixNumber-RA x=$((suffixNumber+53)) ipAddress2=$ipAddressPrefix$x
创建 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::
对于每个 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。
保存脚本并从 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
几分钟后,执行将结束,你将看到输出的其余部分,如下所示。
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 不会将默认网关分配给附加到虚拟机的其他(辅助)网络接口。 因此,默认情况下无法与辅助网络接口所在子网的外部资源进行通信。 但是,辅助网络接口可以与子网之外的资源进行通信。 若要配置辅助网络接口的路由,请参阅 具有多个网络接口的虚拟机作系统中的路由。