为可缩放的应用程序创建虚拟机和存储帐户

本教程是一个系列中的第一部分。 本教程演示如何部署使用 Azure 存储帐户上传和下载大量随机数据的应用程序。 完成后,会有一个控制台应用程序在虚拟机上运行,用于将大量数据上传和下载到存储帐户。

在该系列的第一部分中,你会学习如何:

  • 创建存储帐户
  • 创建虚拟机
  • 配置自定义脚本扩展

如果没有 Azure 订阅,可在开始前创建一个试用帐户

注意

建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

在本地安装并使用 PowerShell,本教程需要 Azure PowerShell 模块 Az 版本 0.7 或更高版本。 运行 Get-Module -ListAvailable Az 即可查找版本。 如果需要进行升级,请参阅 Install Azure PowerShell module(安装 Azure PowerShell 模块)。 此外,还需要运行 Connect-AzAccount -EnvironmentName AzureChinaCloud 以创建与 Azure 的连接。

创建资源组

使用 New-AzResourceGroup 创建 Azure 资源组。 资源组是在其中部署和管理 Azure 资源的逻辑容器。

New-AzResourceGroup -Name myResourceGroup -Location ChinaNorth

创建存储帐户

此示例将 50 个大文件上传到 Azure 存储帐户中的 blob 容器。 存储帐户提供唯一的命名空间来存储和访问 Azure 存储数据对象。 使用 New-AzStorageAccount 命令在创建的资源组中创建存储帐户。

在以下命令中,请将 <blob_storage_account> 占位符替换成自己的 Blob 存储帐户的全局唯一名称。

$storageAccount = New-AzStorageAccount -ResourceGroupName myResourceGroup `
  -Name "<blob_storage_account>" `
  -Location "China North" `
  -SkuName Standard_LRS `
  -Kind Storage `
  -AllowBlobPublicAccess $false

创建虚拟机

创建虚拟机配置。 此配置包括部署虚拟机时使用的设置,例如虚拟机映像、大小和身份验证配置。 运行此步骤时,会提示输入凭据。 输入的值将配置为用于虚拟机的用户名和密码。

使用 New-AzVM 创建虚拟机。

# Variables for common values
$resourceGroup = "myResourceGroup"
$location = "China North"
$vmName = "myVM"

# Create user object
$cred = Get-Credential -Message "Enter a username and password for the virtual machine."

# Create a subnet configuration
$subnetConfig = New-AzVirtualNetworkSubnetConfig -Name mySubnet -AddressPrefix 192.168.1.0/24

# Create a virtual network
$vnet = New-AzVirtualNetwork -ResourceGroupName $resourceGroup -Location $location `
  -Name MYvNET -AddressPrefix 192.168.0.0/16 -Subnet $subnetConfig

# Create a public IP address and specify a DNS name
$pip = New-AzPublicIpAddress -ResourceGroupName $resourceGroup -Location $location `
  -Name "mypublicdns$(Get-Random)" -AllocationMethod Static -IdleTimeoutInMinutes 4

# Create a virtual network card and associate with public IP address
$nic = New-AzNetworkInterface -Name myNic -ResourceGroupName $resourceGroup -Location $location `
  -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id

# Create a virtual machine configuration
$vmConfig = New-AzVMConfig -VMName myVM -VMSize Standard_DS14_v2 | `
    Set-AzVMOperatingSystem -Windows -ComputerName myVM -Credential $cred | `
    Set-AzVMSourceImage -PublisherName MicrosoftWindowsServer -Offer WindowsServer `
    -Skus 2016-Datacenter -Version latest | Add-AzVMNetworkInterface -Id $nic.Id

# Create a virtual machine
New-AzVM -ResourceGroupName $resourceGroup -Location $location -VM $vmConfig

Write-host "Your public IP address is $($pip.IpAddress)"

部署配置

在本教程中,必须在虚拟机上安装一些必备组件。 自定义脚本扩展用于运行完成以下任务的 PowerShell 脚本:

  • 安装 .NET Core 2.0
  • 安装 chocolatey
  • 安装 GIT
  • 克隆示例存储库
  • 还原 NuGet 包
  • 使用随机数据创建 50 个 1 GB 的文件

运行以下 cmdlet,完成虚拟机的配置。 完成此步骤需要 5-15 分钟。

# Start a CustomScript extension to use a simple PowerShell script to install .NET core, dependencies, and pre-create the files to upload.
Set-AzVMCustomScriptExtension -ResourceGroupName myResourceGroup `
    -VMName myVM `
    -Location "China North" `
    -FileUri https://raw.githubusercontent.com/azure-samples/storage-dotnet-perf-scale-app/master/setup_env.ps1 `
    -Run 'setup_env.ps1' `
    -Name DemoScriptExtension

后续步骤

本系列的第一部分中介绍了如何创建存储帐户、部署虚拟机以及如何为虚拟机配置所需的必备组件,例如如何:

  • 创建存储帐户
  • 创建虚拟机
  • 配置自定义脚本扩展

进入本系列的第二部分,使用指数重试和并行方式将大量数据上传到存储帐户。