当前位置: 首页 > Microsoft Azure > 正文

Azure Administrator认证学习指南之在Azure 中使用虚拟机规模集-44

什么是虚拟机规模集?

虚拟机规模集是一种Azure计算资源,可用于部署和管理一组相同的VM。 由于所有VM的配置都相同,因此无需对VM进行任何预先配置。这样就可以更方便地构建面向大型计算、大数据、容器化工作负荷的大规模服务。


    Azure中的虚拟机规模集具有以下特性和功能

  • 轻松的门户创建体验。您现在可以从Azure门户、Azure CLI或Azure PowerShell直接创建Linux和Windows VM规模集。使用负载均衡器NAT规则自动创建这些规模集以启用SSH或RDP连接。
  • 简单的缩放属性。更改设置的比例中的虚拟机数量是一个简单的调用(例如,通过REST,SDK或命令行)。

您还可以在同一VNET或订阅中创建多个VM Scale Set。即使用VM Scale Set作为缩放单元,并构建由多个缩放集组成的更大的组。这就是Azure Batch等高级服务构建大型计算池的方式。

  • 集成自动缩放。为规模集设置自动缩放规则很容易。您可以设置VM的最大,最小和默认数量,并根据资源消耗定义触发器 – 操作规则。您可以设置标准审核日志和电子邮件通知,还可以定义自定义通知和操作(例如Runbook)的webhook。Pagerduty等合作伙伴已添加Azure支持。
  • 集成负载平衡。Azure负载均衡器和Application Gateway与规模集无缝集成。当规模集的大小增加并创建新VM时,将生成匹配的负载均衡器NAT规则,从而确保VM始终具有连接路径。这种对入站连接的控制使得扩展设置VM本身比具有IP地址的独立VM更安全,这需要网络安全组来锁定端口。
  • Visual Studio支持。Azure SDK为Visual Studio提供Azure模板,以部署标准Linux和Windows模板,以将规模集部署为Azure Resource Manager项目的一部分。
  • 支持手动部署操作系统映像更新,无需停机。如果需要在不关闭规模集的情况下更新虚拟机映像,则可以更新”模型”(规模集的定义和属性),然后手动将更新推送到选定的VM。

除了Batch之外,更高级别的Azure服务(例如Container Service,Batch和Service Fabric)也使用规模集作为其底层基础架构,以简化大规模部署并使部署云规模体系结构变得更加容易。


在使用虚拟机规模集之前,我们需要知道虚拟机和规模集的区别。

规模集是使用虚拟机构建的。使用规模集时,会提供管理层和自动层来运行和缩放应用程序。可以改用手动方式来创建和管理单个VM,也可以集成现有的工具,以便构建类似级别的自动化。下表概述了规模集的优势(与手动管理多个VM实例相比)。

手动部署VM高可用 虚拟机规模集
添加额外的VM实例 用于创建、配置和确保符合性的手动过程 自动根据中心配置进行创建
流量均衡和分发 用于创建和配置 Azure 负载均衡器或应用程序网关的手动过程 可以自动创建 Azure 负载均衡器或应用程序网关以及与之集成
高可用性和冗余性 手动创建可用性集,或者跨可用性区域分发和跟踪 VM 跨可用性区域或可用性集自动分发VM实例
VM缩放 手动监视和Azure自动化 根据主机指标、来宾中指标或计划自动缩放

从以上简单比较看出,规模集非常适合用于部署高可用性基础结构(其中的一组计算机采用类似配置)。但是,有些功能只能在规模集中使用,还有些功能只能在VM中使用。若要就何时使用每种技术做出明智的决策,我们首先应该大致了解可在规模集中使用,但不能在VM中使用的一些常用功能:

特定于规模集的功能

指定规模集配置后,可以更新”容量”属性以并行部署更多的 VM。 这比编写一个脚本来协调众多VM的同时部署要简单得多。

可以使用Azure自动缩放来自动缩放规模集,但不能使用它来自动缩放单个VM。

可以重置规模集VM的映像,但不能重置单个VM 的映像。

可以过度预配规模集VM以提高可靠性和加快部署速度。 除非编写自定义代码,否则在单个VM上无法做到这一点。

可以指定升级策略,方便在规模集中的各个VM上实施升级。 使用单个VM时,必须自行协调更新。

特定于VM的功能,某些功能目前仅在VM中可用:

可将数据磁盘附加到特定的单 VM,但附加的数据磁盘是针对规模集中的所有VM配置的。

可将非空数据磁盘附加到单个VM,但不能附加到规模集中的VM。

可以创建单个VM的快照,但不能创建规模集中VM的快照。

可以从单个VM捕获映像,但不能从规模集中的VM捕获映像。

可将单个VM从本机磁盘迁移到托管磁盘,但对于规模集中的 VM,无法执行此操作。

可将 IPv6 公共IP地址分配给单个VM的NIC,但对于规模集中的VM,无法执行此操作。可将 IPv6公共IP地址分配到单个VM或规模集VM前面的负载均衡器。(注意,Azure China暂时不支持IPv6)

另外,规模集不需额外付费。只需为基础的计算资源(例如VM实例、负载均衡器或托管磁盘存储)付费。在使用VM的过程中,管理和自动化功能(例如自动缩放和冗余性)不需额外付费。

由于我的国际版账户最近额度使用完了,需要等到下一个计费周期,所以这里使用Azure China环境进行演示

登陆Azure China帐户

Login-AzureRmAccount –EnvironmentName AzureChinaCloud

    使用New-AzureRmResourceGroup命令创建资源组

New-AzureRmResourceGroup -ResourceGroupName “TingVMSS” -Location “ChinaNorth”


    使用 Get-Credential 设置 VM 实例的管理员用户名和密码


使用New-AzureRmVmss创建一个虚拟机规模集。若要将流量分配到单独的 VM 实例,则还要创建负载均衡器。负载均衡器包含的规则可在TCP 端口80 上分配流量,并允许TCP 端口3389上的远程桌面流量,以及TCP端口5985上的 PowerShell远程流量:


使用以下命令查看创建的VM实例


因为我的是一个DEMO场景,所以没有定义较多的脚本参数。例如VM 型号需要根据自己的需求进行指定

    使用以下命令查看特定VM实例的其他信息


前面我们也谈到过,虚拟机规模集使用前端负载均衡器进行访问。将公共IP地址分配给负载均衡器,由后者将流量路由到各个VM实例。默认情况下,会将网络地址转换 (NAT) 规则添加到Azure负载均衡器,由后者将远程连接流量转发给给定端口上的每个VM。


使用Get-AzureRmPublicIpAddress查看负载均衡器的公共IP地址


远程连接VM实例指定所需VM实例的公共IP地址和端口号


当前创建的规模集VM实例数量2


若要增加或减少规模集中的VM实例数,可以手动更改容量。规模集会创建或删除所需数量的VM实例,然后配置分发流量所需的负载均衡器。


更新规模集容量需要花费一会儿时间。若要查看规模集中当前包含的实例数,请使用 Get-AzureRmVmss


返回Portal页面查看之前创建的信息





对于以上所使用的脚本,参考如下

#登陆Azure China帐户

Login-AzureRmAccount –EnvironmentName AzureChinaCloud

#创建资源组

New-AzureRmResourceGroup -ResourceGroupName “TingVMSS” -Location “ChinaNorth”

#定义虚拟机规模集帐户和密码

$cred = Get-Credential

#创建虚拟机规模集

New-AzureRmVmss -ResourceGroupName “TingVMSS” -VMScaleSetName “WebServers” -Location “ChinaNorth” -VirtualNetworkName “WebvNet” -SubnetName “FrontEndSubnet” -PublicIpAddressName “PIP-WebServers” -LoadBalancerName “WebServers-SLB” -Credential $cred

#查看规模集中的 VM 实例

Get-AzureRmVmssVM -ResourceGroupName “TingVMSS” -VMScaleSetName “WebServers”

#查看特定VM实例信息

Get-AzureRmVmssVM -ResourceGroupName “TingVMSS” -VMScaleSetName “WebServers” -InstanceId “3”

#定义负载均衡器信息

$SLB = Get-AzureRmLoadBalancer -ResourceGroupName “TingVMSS” -Name “WebServers-SLB”

#查看负载均衡器入站规则

Get-AzureRmLoadBalancerInboundNatRuleConfig -LoadBalancer $SLB | Select-Object Name,Protocol,FrontEndPort,BackEndPort

#查看负载均衡器的公共 IP 地址

Get-AzureRmPublicIpAddress -ResourceGroupName “TingVMSS” -Name “PIP-WebServers” | Select IpAddress

#连接VM实例

mstsc /v 42.159.80.248:50001

#定义虚拟机规模集信息

$vmss = Get-AzureRmVmss -ResourceGroupName “TingVMSS” -Name “WebServers”

#定义规模集数量

$vmss.sku.capacity = 3

Update-AzureRmVmss -ResourceGroupName “TingVMSS” -Name “WebServers”  VirtualMachineScaleSet $vmss

#查看更新后的VM实例数

Get-AzureRmVmss -ResourceGroupName “TingVMSS” -Name “WebServers”


本文固定链接: http://365vcloud.azurewebsites.net/2020/04/10/using-virtual-machine-scale-sets-in-azure/ | 365vCloud的云计算之旅

该日志由 TingXu 于2020年04月10日发表在 Microsoft Azure 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: Azure Administrator认证学习指南之在Azure 中使用虚拟机规模集-44 | 365vCloud的云计算之旅
关键字: , ,

Azure Administrator认证学习指南之在Azure 中使用虚拟机规模集-44:等您坐沙发呢!

发表评论

您必须 [ 登录 ] 才能发表留言!