為可擴充的應用程式建立虛擬機器和儲存體帳戶

本教學課程是一個系列的第一部分。 本教學課程會示範如何部署應用程式,以透過 Azure 儲存體帳戶上傳和下載大量隨機資料。 當您完成後,您就有可在虛擬機器上執行的主控台應用程式,並可將大量資料上傳和下載到儲存體帳戶。

在系列的第一部分中,您將了解如何:

  • 建立儲存體帳戶
  • 建立虛擬機器
  • 設定自訂指令碼擴充功能

如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶

注意

建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 請參閱安裝 Azure PowerShell 以開始使用。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az

Azure Cloud Shell

Azure Cloud Shell 是裝載於 Azure 中的互動式殼層環境,可在瀏覽器中使用。 您可以使用 Bash 或 PowerShell 搭配 Cloud Shell,與 Azure 服務共同使用。 您可以使用 Cloud Shell 預先安裝的命令,執行本文提到的程式碼,而不必在本機環境上安裝任何工具。

要啟動 Azure Cloud Shell:

選項 範例/連結
選取程式碼或命令區塊右上角的 [試試看]。 選取 [試試看] 並不會自動將程式碼或命令複製到 Cloud Shell 中。 Screenshot that shows an example of Try It for Azure Cloud Shell.
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 Button to launch Azure Cloud Shell.
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 Screenshot that shows the Cloud Shell button in the Azure portal

若要使用 Azure Cloud Shell:

  1. 啟動 Cloud Shell。

  2. 選取程式碼區塊 (或命令區塊) 上的 [複製] 按鈕以複製程式碼或命令。

  3. 透過在 Windows 和 Linux 上選取 Ctrl+Shift+V;或在 macOS 上選取 Cmd+Shift+V,將程式碼或命令貼到 Cloud Shell 工作階段中。

  4. 選取 Enter 鍵執行程式碼或命令。

如果您選擇在本機安裝和使用 PowerShell,則本教學課程需要 Azure PowerShell 模組 Az 版本 0.7 或更新版本。 執行 Get-Module -ListAvailable Az 以尋找版本。 如果您需要升級,請參閱安裝 Azure PowerShell 模組。 如果您在本機執行 PowerShell,則也需要執行 Connect-AzAccount 以建立與 Azure 的連線。

建立資源群組

使用 New-AzResourceGroup 來建立 Azure 資源群組。 資源群組是在其中部署與管理 Azure 資源的邏輯容器。

New-AzResourceGroup -Name myResourceGroup -Location EastUS

建立儲存體帳戶

此範例會將 50 個大型檔案上傳至 Azure 儲存體帳戶的 Blob 容器。 儲存體帳戶提供唯一命名空間來儲存及存取您的 Azure 儲存體資料物件。 在使用 New-AzStorageAccount 命令來建立的資源群組中,建立儲存體帳戶。

在下列命令中,使用您自己的全域唯一名稱來替代見到 <blob_storage_account> 預留位置的 Blob 儲存體帳戶。

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

建立虛擬機器

建立虛擬機器組態。 此組態包括部署虛擬機器時所使用的組態,例如虛擬機器映像、大小和驗證組態。 執行此步驟時,系統會提示您輸入認證。 您輸入的值會設定為虛擬機器的使用者名稱和密碼。

使用 New-AzVM 來建立虛擬機器。

# Variables for common values
$resourceGroup = "myResourceGroup"
$location = "eastus"
$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 個包含隨機資料的 1GB 檔案

執行下列 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 EastUS `
    -FileUri https://raw.githubusercontent.com/azure-samples/storage-dotnet-perf-scale-app/master/setup_env.ps1 `
    -Run 'setup_env.ps1' `
    -Name DemoScriptExtension

下一步

在此系列的第一部分,您已了解如何建立儲存體帳戶、部署虛擬機器,以及為虛擬機器設定必要條件,例如如何:

  • 建立儲存體帳戶
  • 建立虛擬機器
  • 設定自訂指令碼擴充功能

接著請前往此系列的第二個部分,使用指數式重試和平行處理原則來將大量資料上傳至儲存體帳戶。