本教程介紹如何使用稱作“可用性集”的功能提高 Azure 上虛擬機(jī)解決方案的可用性和可靠性。 可用性集可確保在 Azure 上部署的 VM 能夠跨多個隔離的硬件群集分布。 這樣,就可以確保當(dāng) Azure 中發(fā)生硬件或軟件故障時,只有一部分 VM 會受到影響,整體解決方案仍可使用和正常工作。
本教程介紹如何執(zhí)行下列操作:
創(chuàng)建可用性集
在可用性集中創(chuàng)建 VM
檢查可用的 VM 大小
本教程需要 Azure PowerShell 模塊 3.6 或更高版本。 運(yùn)行Get-Module -ListAvailable AzureRM即可查找版本。 如果需要進(jìn)行升級,請參閱Install Azure PowerShell module(安裝 Azure PowerShell 模塊)。
可用性集概述
可用性集是一種邏輯分組功能,在 Azure 中使用它可以確保將 VM 資源部署在 Azure 數(shù)據(jù)中心后,這些資源相互隔離。 Azure 確??捎眯约胁渴鸬?VM 能夠跨多個物理服務(wù)器、計(jì)算機(jī)架、存儲單元和網(wǎng)絡(luò)交換機(jī)運(yùn)行。 如果出現(xiàn)硬件或 Azure 軟件故障,只有一部分 VM 會受到影響,整體應(yīng)用程序仍會保持運(yùn)行,可供客戶使用。 如果想要構(gòu)建可靠的云解決方案,可用性集是一項(xiàng)關(guān)鍵功能。
假設(shè)某個基于 VM 的典型解決方案包含 4 個前端 Web 服務(wù)器,以及 2 個托管數(shù)據(jù)庫的后端 VM。 在 Azure 中,需要在部署 VM 之前先定義兩個可用性集:一個可用性集用于 Web 層,另一個可用性集用于數(shù)據(jù)庫層。 創(chuàng)建新的 VM 時,可在 az vm create 命令中指定可用性集作為參數(shù),Azure 會自動確保在可用性集中創(chuàng)建的 VM 在多個物理硬件資源之間保持獨(dú)立。 如果運(yùn)行某個 Web 服務(wù)器或數(shù)據(jù)庫服務(wù)器的物理硬件有問題,可以確信 Web 服務(wù)器和數(shù)據(jù)庫 VM 的其他實(shí)例會保持運(yùn)行狀態(tài),因?yàn)樗鼈兾挥诓煌挠布稀?/p>
Note
在 Azure 中國區(qū)使用 Azure CLI 2.0 之前,請先運(yùn)行az cloud set -n AzureChinaCloud來改變云環(huán)境。如果想切回國際版 Azure,請?jiān)俅芜\(yùn)行az cloud set -n AzureCloud。
在 Azure 中部署基于 VM 的可靠解決方案時,使用可用性集。
創(chuàng)建可用性集
可以使用New-AzureRmAvailabilitySet創(chuàng)建一個可用性集。 在本示例中,將 myResourceGroupAvailability 資源組中名為 myAvailabilitySet 的可用性集的更新域數(shù)和容錯域數(shù)均設(shè)置為 2。
創(chuàng)建資源組。
PowerShell復(fù)制
New-AzureRmResourceGroup-NamemyResourceGroupAvailability-LocationChinaEast
使用 -sku aligned 參數(shù)通過New-AzureRmAvailabilitySet創(chuàng)建托管的可用性集。
PowerShell復(fù)制
New-AzureRmAvailabilitySet`-LocationChinaEast `-NamemyAvailabilitySet `-ResourceGroupNamemyResourceGroupAvailability `-skualigned `-PlatformFaultDomainCount2`-PlatformUpdateDomainCount2
在可用性集內(nèi)創(chuàng)建 VM
必須在可用性集中創(chuàng)建 VM,確保它們正確地分布在硬件中。 創(chuàng)建后,無法將現(xiàn)有 VM 添加到可用性集中。
同一位置的硬件分為多個更新域和容錯域。 更新域是一組可同時重啟的 VM 和基礎(chǔ)物理硬件。 同一個容錯域內(nèi)的 VM 共享公用存儲,以及公用電源和網(wǎng)絡(luò)交換機(jī)。
使用New-AzureRMVMConfig創(chuàng)建 VM 配置時,可以使用-AvailabilitySetId參數(shù)指定可用性集的 ID。
在可用性集中使用New-AzureRmVM創(chuàng)建兩個 VM。
PowerShell復(fù)制
$availabilitySet=Get-AzureRmAvailabilitySet`-ResourceGroupNamemyResourceGroupAvailability `-NamemyAvailabilitySet$cred=Get-Credential-Message"Enter a username and password for the virtual machine."$subnetConfig=New-AzureRmVirtualNetworkSubnetConfig`-NamemySubnet `-AddressPrefix192.168.1.0/24$vnet=New-AzureRmVirtualNetwork`-ResourceGroupNamemyResourceGroupAvailability `-LocationChinaEast `-NameMYvNET `-AddressPrefix192.168.0.0/16`-Subnet$subnetConfigfor($i=1;$i-le2;$i++){$pip=New-AzureRmPublicIpAddress`-ResourceGroupNamemyResourceGroupAvailability `-LocationChinaEast `-Name"mypublicdns$(Get-Random)"`-AllocationMethodStatic `-IdleTimeoutInMinutes4$nsgRuleRDP=New-AzureRmNetworkSecurityRuleConfig`-NamemyNetworkSecurityGroupRuleRDP$i`-ProtocolTcp `-DirectionInbound `-Priority1000`-SourceAddressPrefix* `-SourcePortRange* `-DestinationAddressPrefix* `-DestinationPortRange3389`-AccessAllow$nsg=New-AzureRmNetworkSecurityGroup`-ResourceGroupNamemyResourceGroupAvailability `-LocationChinaEast `-NamemyNetworkSecurityGroup$i`-SecurityRules$nsgRuleRDP$nic=New-AzureRmNetworkInterface`-NamemyNic$i`-ResourceGroupNamemyResourceGroupAvailability `-LocationChinaEast `-SubnetId$vnet.Subnets[0].Id `-PublicIpAddressId$pip.Id `-NetworkSecurityGroupId$nsg.Id# Here is where we specify the availability set$vm=New-AzureRmVMConfig`-VMNamemyVM$i`-VMSizeStandard_D1 `-AvailabilitySetId$availabilitySet.Id$vm=Set-AzureRmVMOperatingSystem`-ComputerNamemyVM$i`-Credential$cred`-VM$vm`-Windows`-EnableAutoUpdate`-ProvisionVMAgent$vm=Set-AzureRmVMSourceImage`-VM$vm`-PublisherNameMicrosoftWindowsServer `-OfferWindowsServer `-Skus2016-Datacenter `-Versionlatest$vm=Set-AzureRmVMOSDisk`-VM$vm`-NamemyOsDisk$i`-DiskSizeInGB128`-CreateOptionFromImage `-CachingReadWrite$vm=Add-AzureRmVMNetworkInterface-VM$vm-Id$nic.IdNew-AzureRmVM`-ResourceGroupNamemyResourceGroupAvailability `-LocationChinaEast `-VM$vm}
創(chuàng)建和配置這兩個 VM 需要幾分鐘的時間。 完成后,將擁有兩個跨基礎(chǔ)硬件分布的虛擬機(jī)。
如果通過轉(zhuǎn)到“資源組”>“我的資源組可用性”>“我的可用性集”在門戶中查看可用性集,則應(yīng)查看如何跨 2 個容錯域和更新域分布 VM。

檢查可用的 VM 大小
稍后可向可用性集添加更多 VM,但需了解在硬件上可用的 VM 大小。 使用Get-AzureRMVMSize列出可用性集的硬件群集上所有可用的大小。
PowerShell復(fù)制
Get-AzureRmVMSize`-AvailabilitySetNamemyAvailabilitySet `-ResourceGroupNamemyResourceGroupAvailability
后續(xù)步驟
在本教程中,你已學(xué)習(xí)了如何執(zhí)行以下操作:
創(chuàng)建可用性集
在可用性集中創(chuàng)建 VM
檢查可用的 VM 大小
請轉(zhuǎn)到下一教程,了解虛擬機(jī)規(guī)模集。
立即訪問http://market.azure.cn