Azure Administrator认证学习指南之理解Azure 虚拟机可用性集-37
我们知道,虽然诸如Microsoft Azure 、AWS、阿里云等这样的大型公有云计算平台通过一系列SLA保障用户业务高可用,但是作为底层的服务器、存储、网络、电源等等仍然需要定期更新用于托管VM的基础结构,以修补安全漏洞并提高可靠性和性能。这些更新(Microsoft称为计划的维护事件)通常在不影响来宾VM的情况下执行。但是,有时,访客虚拟机必须重新启动才能完成更新,为了减少对来宾VM的影响,Azure结构被划分为” 更新域”,以确保并非同时重新引导所有来宾VM。
因此微软设计并利用”可用性集”来解决这类问题。可用性集是一种逻辑分组功能,可将部署的VM资源相互隔离。Azure 确保可用性集中部署的 VM 能够跨多个物理服务器、计算机架、存储单元和网络交换机运行。如果发生硬件或软件故障,只有一部分VM会受到影响,整体解决方案仍会保持正常运行。可用性集对于构建可靠的云解决方案至关重要。
通过这种逻辑分组功能,帮助确保应用程序在计划内或计划外维护期间可用。
计划内维护事件是当Microsoft更新托管VM的基础Azure 结构时。执行计划内维护事件是为了修补安全漏洞、提高性能和添加或更新功能。大多数情况下,这些更新完成后不会对来宾VM造成任何影响。但有时VM需要重新启动才能完成更新。如果VM是可用性集的一部分,Azure 结构将按顺序进行更新,这样就不会同时重启所有相关的 VM。VM 将放入不同的更新域。更新域表示 VM组以及可同时重新启动的基础物理硬件。更新域是每个数据中心的逻辑部分,并通过软件和逻辑实现。
计划外维护事件涉及数据中心硬件失败,例如断电或磁盘故障。作为可用性集一部分的 VM 自动切换到工作的物理服务器,以便继续运行 VM。共享公共硬件的虚拟机组位于同一个容错域中。容错域实质上是服务器机架。它提供了不同电源、冷访问层和网络硬件上的工作负载的物理分离,可支持数据中心服务器机架中的物理服务器。 如果支持服务器机架的硬件不可用,那么只有该服务器机架受到中断的影响。
在Microsoft Azure中,微软设计了最多3个容错域,每个容错域都有一个具有专用电源和网络资源的服务器机架;5个逻辑更新域,之后最多可以增加到 20 个。具体可以使用如下图表示:
可用性集不需要任何费用。只需为可用性集中的VM 费。因此,在进行Azure架构设计或者业务部署时强烈建议将每个业务系统或者一组业务系统放在一个可用性集中,以避免VM体系结构中出现单一故障点。
在Azure门户中,选择”所有服务”选择”计算”,点击”可用性集”
使用Azure PowerShell创建可用性集命令如下
New-AzAvailabilitySet -Location “EastUS” -Name “myAvailabilitySet” -ResourceGroupName “myResourceGroupAvailability” -Sku aligned -PlatformFaultDomainCount 2 -PlatformUpdateDomainCount 2 |
使用Azure CLI创建可用性集命令如下
az vm availability-set create –resource-group myResourceGroupAvailability –name myAvailabilitySet –platform-fault-domain-count 2 –platform-update-domain-count 2 |
以下是一个使用Azure CloudShell,将运行Windows Server 2016的Azure VM部署到现有可用性集中的完整脚本,您可以根据您的实际情况进行参数调整。
#设置用于指定Azure VM名称及其大小的变量的值 $vmName = ‘AZ103-vm1’ $vmSize = ‘Standard_DS2_v2’ #指定目标资源组及其位置 $resourceGroup = Get-AzResourceGroup -Name ‘AZ103-RG’ $location = $resourceGroup.Location #指定将新的Azure VM部署到的可用性集,虚拟网络和子网 $availabilitySet = Get-AzAvailabilitySet -ResourceGroupName $resourceGroup.ResourceGroupName -Name ‘az1000301-avset0’ $vnet = Get-AzVirtualNetwork -Name ‘az1000301-RG-vnet’ -ResourceGroupName $resourceGroup.ResourceGroupName $subnetid = (Get-AzVirtualNetworkSubnetConfig -Name ‘subnet0’ -VirtualNetwork $vnet).Id #创建新的网络安全组,公共IP地址和网络接口 $nsg = New-AzNetworkSecurityGroup -ResourceGroupName $resourceGroup.ResourceGroupName -Location $location -Name “$vmName-nsg” $pip = New-AzPublicIpAddress -Name “$vmName-ip” -ResourceGroupName $resourceGroup.ResourceGroupName -Location $location -AllocationMethod Dynamic $nic = New-AzNetworkInterface -Name “$($vmName)$(Get-Random)” -ResourceGroupName $resourceGroup.ResourceGroupName -Location $location -SubnetId $subnetid -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id #指定新Azure VM的本地管理员帐户的凭据 $adminUsername = ‘Student’ $adminPassword = ‘Pa55w.rd1234’ $adminCreds = New-Object PSCredential $adminUsername, ($adminPassword | ConvertTo-SecureString -AsPlainText -Force) #指定将用于置备新Azure VM的Azure Marketplace映像的属性 $publisherName = ‘MicrosoftWindowsServer’ $offerName = ‘WindowsServer’ $skuName = ‘2016-Datacenter’ #指定新的Azure VM的操作系统磁盘类型 $osDiskType = (Get-AzDisk -ResourceGroupName $resourceGroup.ResourceGroupName)[0].Sku.Name #配置新Azure VM的Azure VM配置对象的属性,包括VM大小,其可用性集,网络接口,计算机名称,本地管理员凭据,源映像,操作系统磁盘和启动诊断设置 $vmConfig = New-AzVMConfig -VMName $vmName -VMSize $vmSize -AvailabilitySetId $availabilitySet.Id Add-AzVMNetworkInterface -VM $vmConfig -Id $nic.Id Set-AzVMOperatingSystem -VM $vmConfig -Windows -ComputerName $vmName -Credential $adminCreds Set-AzVMSourceImage -VM $vmConfig -PublisherName $publisherName -Offer $offerName -Skus $skuName -Version ‘latest’ Set-AzVMOSDisk -VM $vmConfig -Name “$($vmName)_OsDisk_1_$(Get-Random)” -StorageAccountType $osDiskType -CreateOption fromImage Set-AzVMBootDiagnostic -VM $vmConfig -Disable #部署Azure VM New-AzVM -ResourceGroupName $resourceGroup.ResourceGroupName -Location $location -VM $vmConfig |
【下一篇】Azure Administrator认证学习指南之创建和部署高可用的Azure VM虚拟机-38