在实际使用过程当中,使用VMSS有一些最佳实践的建议和限制,便于你在做自动扩展设计的时候进行考虑:

关于VMSS

  • 如果你使用的是系统镜像,一个扩展集中虚拟机数量不能超过100
  • 无论是在ASM还是ARM模式下,如果使用自定义的镜像,新创建的虚拟机必须位于自定义镜像的存储账号内(以后会改,暂时不可以)
  • 如果使用的是自定义镜像,一个扩展集中虚拟机数量默认不能超过20,如果你打开了超量部署,最高不能超过40
  • 目前在VMSS中,暂时不支持数据磁盘,但已经在内部开发测试了,希望不久的将来可以支持
  • 在你一次创建多个VMSS的时候,在一个地区,10分钟内,总的虚拟机数量不能超过500
  • 在一个vNet里面虚拟机数量不能超过4096个
  • 建议一个存储账号中虚拟机数量不要超过20,以保证性能,详细设置方法请参考前面例子中的ARM模板
  • 在一个扩展集中创建多个存储账号的时候,建议以不同的字母作为开头,

关于VMSS的自动扩展Auto Scale

  • 在VMSS中你的虚拟机在做Auto Scale的时候,无论是增减或者减少虚拟机,虚拟机会分布在更新域(UD)和错误域(FD),所以虚拟机的序号在减少的时候会从序号最高的开始,虚拟机增加的时候也会从当前最高序号开始,这也是为什么你在前面做测试的时候看到增加或者减少虚拟机的时候虚拟机序号变化并不连续
  • 在你进行自动扩展的时候,你会看到实际启动的虚拟机数量多于每次增加的虚拟机数量,这是因为默认情况下超量部署(overprovisioning)是打开的,为了增加自动扩展虚拟机部署成功率,多启动的虚拟机并不计费,稍后会自动删除,你也可以关闭超量部署,在模板中设置"overprovision": "false"
  • 在设置自动化扩展的时候,确保你的最大值,最小值之间有足够的大小间隔,比如最小2,最大5等,并且你的自动扩展的增长和下降总是成对出现的,比如你只设置了增长规则,那么当压力上升是,虚拟机增加,但如果你没有设置减少规则,那么即使虚拟机负载降低到了阈值,也不会收缩
  • 关于自动扩展的规则算法,比较有意思,你设置的压力负载,指的是整个扩展集合里面所有虚拟机压力的平均值,而不是单个实例的值。举个例子,如果你定义自动扩展的规则为:
    • 如果CPU的平均负载大于80%的时候,增加一个实例
    • 如果CPU的平均负载低于60%的时候,减少一个实例

例如初始的虚拟机为2台,如果两个实例的平均负载超过80%的时候,就会增加一台虚拟机达到3台;现在假定增加一台后,平均CPU降低到了60%,那么这个时候会不会降低实例自动收缩昵?实际上不会,自动扩展里面有一个算法,很有意思,他会计算,比如这个例子中,3台虚拟机的负载是60X3=180,如果降低一台,那么每台的平均负载就是180/2=90,90%的平均负载,一旦减少实例,就意味着马上又要增加,所以不会自动收缩;过段时间,当平均的负载降到50%,如果降低到2台,就意味着降低后的负载是(50X3)/2=75, 平均负载是75%,那么就会发生自动收缩。

  • 可以针对一个操作,定义多个自动扩展的操作,比如你可以同时定义CPU,memory作为自动扩展和自动收缩的条件,任何一个条件满足的时候,都会自动扩展,然后只有所有条件满足的时候,才会自动收缩,例如:
    • 如果CPU超过75%,增加一个实例
    • 如果Memory超过75%,增加一个实例
    • 如果CPU低于30%,减少一个实例
    • 如果memory低于50%,减少一个实例

    那么,当CPU到达76%,或者memory达到76%,都会增加一个实例;只有CPU低于30%,并且memory低于50%,两个条件同时满足,才会减少实例.

  • 有非常多的度量值可以用来作为衡量负载增加或者减少的规则依据,对于Linux虚拟机和Windows虚拟机,可以从如下地址获得:

https://azure.microsoft.com/en-us/documentation/articles/insights-autoscale-common-metrics/

管理工具VMSS Editor

那么除了目前新的portal和Powershell的意外,有没有别的管理工具可以直观的,可视化的对VMSS扩展集进行管理昵?答案是肯定的,感谢微软的PM Guy Bowerman和Stan Peng同学,使得这个非常强大的工具可以同时在Azure中国和global工作。

下面我们看看如何配置和使用这个工具。

1.首先你需要有一个python 3.x的环境,可以去python官方下载并安装。

2.安装python的AzureRm基本模块,如果你要连接的是global的Azure,请执行:

pip install azurerm

如果是要连接中国的Azure,请安装Stan修改过的模块:

pip install mcazurerm

3. 从Github上克隆源代码到本地,当然你使用任何的IDE都是可以的,地址如下,两个都可以:

https://github.com/gbowerman/vmssdashboard

https://github.com/pjshi23/mcvmsseditor

4. 创建你的VMSS虚拟机集合,前面例子已经介绍的非常详细,再次不赘述

5. 在执行VMSS editor来管理VMSS之前,你需要在Azure上创建service principle,以下例子介绍如何通过Powershell来创建SP:

#使用ARM模式登陆Azure

Login-AzureRmAccount -EnvironmentName AzureChinaCloud

#创建AD应用,修改密码为你的密码

$app = New-AzureRmADApplication -DisplayName "vmssdemo" -HomePage "https://www.contoso.org/vmssdemo"

-IdentifierUris "https://www.contoso.org/vmssdemo" -Password "YOURPASSWD"

#可以查看你获得的AD Application的相关信息

Get-AzureRmADApplication -DisplayNameStartWith vm

可以看到你的application id,ObjectID等信息。

#创建service principle

New-AzureRmADServicePrincipal -ApplicationId $app.ApplicationId

#分配角色,请注意,角色必须为Contributor

New-AzureRmRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $app.ApplicationId.Guid

#获得你的tenantID信息

(Get-AzureRmSubscription).TenantId

6. 获得了以上信息之后,在你下载下来的VMSS editor目录下,创建一个文件vmssconfig.json,在文件中输入以下信息并保存:

{

"tenantId": "b7bc9fa1-XXXXX",

"appId": "2bc07bb2-XXXXXXXXXX",

"appSecret": "YOURPASSWORD",

"subscriptionId": "fc92f523-XXXXXXXX"

}

7. 运行python vmsseditor.py,选择"show details",可以看到你当前的自动扩展集合,你的实例版本,虚拟机size等信息:

可以看到,当前是2台虚拟机,分布在两个不同的FD和UD中,针对不同的FD,我们可以控制实例,比如删除,重启,升级等等。

8. 我们来进行手工扩展,修改capacity为6,并点击scale,可以看到实例分布在不同的FD进行启动:

实际上可以看到,VMSS启动了7台虚拟机,这实际上这就是之前说的overprovining,提高扩展成功的概率,多出的实例不收费,全部正常运行后,6台实例如下:

9. 如果我们修改capacity的值为2,进行scale in,可以看到VMSS立即开始收缩,从序号高的开始删除虚拟机,最终剩下0和1:

该VMSS editor源代码是开放的,也就是说任何人可以修改并添加自己的代码进去,也可以学习了解如何python SDK进行VMSS控制,了解更多VMSS逻辑。

转载于:https://www.cnblogs.com/cloudapps/p/6072354.html

深入理解Azure自动扩展集VMSS(3)相关推荐

  1. VMSS上用Managed Disk和Data Disk进行自动扩展(1)

    虚拟机自动扩展集(VMSS)是Azure上一个非常强大的功能,在我之前的系列文档中已经做了详细的介绍,在此就不赘述了:我同时也提到,在使用Azure传统存储账号的时候,也存在诸多限制,比如你需要计算每 ...

  2. ICLR 2022 | 无需训练!As-ViT:自动扩展视觉Transformer

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 转载自:机器之心 | 编辑:小舟 来自德克萨斯大学奥斯汀分校.悉尼科技大学和谷歌的研究者提出了一个无需训练就 ...

  3. 微服务架构开发实战:如何实现微服务的自动扩展?

    微服务架构开发实战:如何实现微服务的自动扩展? 程序员高级码农II 2020-09-25 07:25:00 如何实现微服务的自动扩展 前面讲了一些关于自动扩展的理论知识,但如何实现自动扩展,并不是三言 ...

  4. 无需训练,自动扩展的视觉Transformer来了

    来自德克萨斯大学奥斯汀分校.悉尼科技大学和谷歌的研究者提出了一个无需训练就能自动扩展框架 As-ViT,其能以高效和有原则的方式自动发现和扩展 ViT. 当前 Vision Transformers ...

  5. 树莓派Pi OS备份镜像设置自动扩展磁盘,完全基于树莓派原版系统实现方式(镜像备份全流程)

    写入树莓派官方镜像的时候,我们会发现当树莓派第一次启动后,磁盘空间会自动扩充到整个TF卡.那么当我们自己制作镜像的时候,能不能去除未使用的空间,制作体积较小的镜像,并在该镜像启动时自动扩展,从而适应不 ...

  6. 弹性伸缩:实现自动扩展和缩减容器的秘诀

    在当今的云计算环境中,弹性伸缩是确保应用程序在高流量或高峰期能够正常工作的关键.Rancher是一个领先的开源容器平台,提供了一系列强大的功能,其中包括通过webhook微服务实现Service/Ho ...

  7. OpenStack 企业私有云的若干需求(2):自动扩展支持

    本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...

  8. mysql的表空间是否自动扩展_Oracle修改指定表空间为自动扩展

    1.数据文件自动扩展的好处 1)不会出现因为没有剩余空间可以利用到数据无法写入 2)尽量减少人为的维护 3)可以用于重要级别不是很大的数据库中,如测试数据库等 2.数据文件自动扩展的弊端 1)如果任其 ...

  9. 查询表空间状态,创建表空间,让表空间的大小自动扩展,删除表空间

    通过select * from DBA_DATA_FILES可以看到现在数据库中的表空间和状态. 其中AUTOEXTENSIBLE为是否自动扩展. 如果需要关闭自动扩展: alter database ...

  10. 修改数据库文件为自动扩展以达到表空间自动扩展的目的

    转自:http://space.itpub.net/519536/viewspace-605541 表空间自动扩展 1.数据文件自动扩展的好处 1)不会出现因为没有剩余空间可以利用到数据无法写入 2) ...

最新文章

  1. Android多线程
  2. 对Fragment生命周期的理解以及其与Activity的关联
  3. 尘锋2021产品发布会圆满落幕,双向赋能引领行业发展
  4. Jenkins集成java非maven/ant项目的打包思路
  5. 【超经典】Java多态有什么好处?怎样用?
  6. deeplabv2实现并训练自己的数据
  7. 使用Vivado保存仿真波形数据并读取
  8. Hello Rails
  9. 锁失效_关于bigtable中chubby锁失效时的一点思考
  10. 八.创建型设计模式——Singleton Pattern(单例模式)
  11. JS按字节截取字符长度实例
  12. W5500调试的部分问题和注意点
  13. js rsa验签_【HAVENT原创】前端使用 jsrsasign 进行 RSA 加密、解密、签名、验签
  14. 【期货交易】期货持仓量浅析,持仓是什么?
  15. 计算机怎么通电启动,电脑通电自动开机怎么设置
  16. iOS 当使用DES解密遇到和解密不一致或者为空的时候问题
  17. 80核处理器_最受欢迎的处理器 酷睿i5-9400F果然霸榜了
  18. VS Code CentOS7.7 终端字体设置
  19. openssl之EVP系列之4---EVP_Encrypt系列函数详解(一)
  20. 大学计算机实验二报告表答案,北理大学计算机实验基础实验二实验报告表答案...

热门文章

  1. 超实用:小团队如何从零搭建一个自动化运维体系?
  2. 今天,强行打个广告!
  3. 状态管理模式 — Vuex如何使用?
  4. PAT乙级真题 | 1006 换个格式输出整数
  5. 重新安装Linux自带的JDK
  6. 代理模式和php实现
  7. 18-09-06天津 关于Excel的一些操作
  8. x264 编码数配置
  9. day20 文件上传
  10. codeforces 701A A. Cards(水题)