使用 PowerShell 建立具有多個 NIC 的 VM (傳統)
您可以在 Azure 中建立虛擬機器 (VM) 並將多個網路介面 (NIC) 連接至每個 VM。 有多個 NIC 時,可透過各個 NIC 分隔不同的流量類型。 例如,一個 NIC 可能與網際網路進行通訊,而另一個 NIC 則只與未連線到網際網路的內部資源進行通訊。 透過多個 NIC 分隔網路流量是許多網路虛擬設備 (例如應用程式交付和 WAN 最佳化解決方案) 所需的功能。
重要
Azure 針對建立和使用資源方面,有二種不同的的部署模型:Resource Manager 和傳統。 本文涵蓋之內容包括使用傳統部署模型。 Microsoft 建議讓大部分的新部署使用 Resource Manager 模式。 瞭解如何使用Resource Manager部署模型來執行這些步驟。
狀況
本文件會逐步說明一個在 VM 中使用多個 NIC 的部署特殊案例。 在此案例中, Azure 中託管了兩層式 IaaS 工作負載。 在虛擬網路 (VNet) 中每一層皆部署在各自的子網路。 前端層是由數個 Web 伺服器組成,在負載平衡器以群組方式結合,以達高可用性。 後端層是由數個資料庫伺服器所組成。 這些資料庫伺服器各自會部屬兩個 NIC,一個用資料庫存取,另一個用於管理。 此案例也包括了網路安全群組 (NSG),用來控制每個子網路可允許哪些流量通過,以及部署中的 NIC 。 下圖顯示此案例的基本架構:
在下列步驟中,WEB 伺服器使用名為 IaaSStory 的資源群組,而 DB 伺服器使用名為 IaaSStory-BackEnd 的資源群組。
必要條件
您需要建立 IaaSStory 資源群組,其中含有此案例的所有必要資源,才能建立 DB 伺服器。 若要建立這些資源,請完成下列步驟。 依照建立虛擬網路文章中的步驟建立虛擬網路。
必要條件:安裝 Azure PowerShell 模組
若要執行本文中的步驟,您需要安裝和設定 Azure PowerShell 模組。 請務必完成所有的指示。 安裝完成之後,請登入 Azure 並選取您的訂用帳戶。
注意
您需有 Azure 帳戶,才能完成這些步驟。 如果您沒有 Azure 帳戶,您可以註冊 免費試用。
建立後端 VM
後端 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
選取 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
設定本機系統管理員帳戶認證。
$cred = Get-Credential -Message "Enter username and password for local admin account"
步驟 3:建立 VM
您需要使用迴圈建立所需數量的 VM,並在迴圈中建立必要的 NIC 和 VM。 若要建立 NIC 和 VM,請執行下列步驟。
啟動
for
迴圈,根據$numberOfVMs
變數值,視需要的次數重複命令來建立一部 VM 和兩個 NIC。for ($suffixNumber = 1; $suffixNumber -le $numberOfVMs; $suffixNumber++){
建立指定 VM 影像、大小和可用性設定組的
VMConfig
物件。$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 不會將預設閘道指派給連接至虛擬機器的其他 (次要) 網路介面。 因此,依預設,您無法與次要網路介面中子網路之外的資源進行通訊。 不過,次要網路介面可與它們的子網路之外的資源通訊。 若要設定次要網路介面的路由,請參閱下列文章: