在Azure之前的ASM版本或者经典模式中,用户使用Azure Website,Azure Cloud Service等PAAS服务,可以实现一定程度上的自动扩展(auto scaling),但有着诸多限制和缺陷,例如只能在PAAS平台上使用,扩展周期较长,无法支持定制化镜像,无法支持Linux等等,那么在Azure上有没有一种服务,可以给予我们增强的PAAS的自动扩展能力,同时让用户能够像使用IAAS虚拟机一样有最大限度的控制能力昵?

Azure新的资源管理器(ARM)模式中推出了一项全新的服务,叫做虚拟机扩展集合(Virtual Machine Scale Sets),实现了真正的自动化扩展(auto scaling)功能,对于大并发需要自动扩展的场景提供了非常好的功能支持,例如:

  • 细粒度的性能收集和处理(可以每分钟收集性能数据,最小5分钟作为一个处理窗口进行扩展或者收缩)
  • 支持Linux,当然也支持Windows
  • 支持客户自定义镜像,不需要像以前的云服务一样要预先部署
  • 几分钟内部署上百台服务器
  • 可以在扩展集中整合使用负载均衡器,高可用集合,应用程序网关等服务
  • 支持多种不同类型的度量值(cpu/memeory/network/disk)进行扩展

在本文中描述如何通过ARM模板和Powershell,在Azure中国的平台上创建一个Linux的VMSS,实现自动化扩展。对于什么是ARM,什么是ARM模版,ARM和ASM的比较差别等等详见本人其他博客。

  1. 首先确保你有一个中国区Azure的帐号,并且能够正常登录预览版的Azure门户:

     

    https://portal.azure.cn

     

  2. 安装最新的Azure Powershell,目前最新的版本是2.0.1:http://aka.ms/webpi-azps
  3. Azure提供了非常多的样例模版供用户使用,用户可以非常方便的下载,修改和应用这些模版,所有模版都在Github上,具体地址如下:

    https://github.com/Azure/azure-quickstart-templates

  4. 所有的模板都是json文件,可以自己来修改,在上述地址找到模版"201-vmss-ubuntu-autoscale",并下载 azuredeploy.jsonazuredeploy.parameters.json 文件。
  5. 首先打开azuredeploy.json文件,一个基本的ARM模板除了基本信息比如有schema和ContecntVersion外,包含3个部分:parameters,variables,resources

     

    Parameters:定义你在外部要输入的参数值,比如虚拟机的大小,image的名称等

    Variables:默认的一些变量,比如存储类型,网络地址,API版本等等

    Resources:你所用到的系统资源和服务,比如网络,虚拟机扩展插件,负载均衡等等

     

  6. 打开azuredeploy.json文件,首先需要修改一下Ubuntu的image,在中国最新的Ubuntu 14的版本是14.04.3-LTS

    修改成:

  7. 所有存储的端点地址都是global的,需要修改成中国的:

    修改为:

     

     

  8. 对于Linux Diagnostics的存储的Endpoint,这个地方要特别注意,除了需要修改存储的Endpoint之外,还需要添加存储metrics的table的endpoint,否则整个VMSS无法采集到正确的数据到相应的table,也不工作:

    修改为:

     

  9. 我们来看一下自动扩展设置(auto scaling),在定义自动扩展的时候,首先你可以确定一个容量,比如最小VM数量,默认数量,最大可扩展数量:

    然后我们需要定义自动扩展的规则,在什么情况下增加实例,什么情况下降低实例,在本例子中,我们定义了处理器的PercentUserTime,每1分钟采集数据,每5分钟作为一个时间窗口,如果平均值大于60%,那么自动扩展,每次增加一个实例:

  10. 从上面的步骤可以看到,你在Github上拿到的template不能直接使用,因为里面比较多的参数是针对global azure的,需要做一些修改,直接修改好的模板我已经共享到了Github上面,你也可以到如下地址下载使用:

    https://github.com/kingliantop/azurelabs/tree/master/AzureChinaARMTemplate/VMSS-Linux-Autoscale

  11. 打开参数文件azuredeploy.parameters.json,这个文件里面是你针对模板设置参数的地方,比如你要使用什么样的VM大小,用户名密码,初始要多少个VM等等:

    比如我的参数文件如下:

最新文章

  1. 用户 NT AUTHORITY\NETWORK SERVICE 登录失败 解决方法(转载)
  2. Java集合框架的总结
  3. 试用 Nexus OSS 3.0 的docker仓库 (一)
  4. inverse理解
  5. 语音直播是否真能让国内网红向“Creator”转变?
  6. 编写高质量代码改善C#程序的157个建议[用抛异常替代返回错误、不要在不恰当的场合下引发异常、重新引发异常时使用inner Exception]
  7. 从JAVA客户端访问Redis示例(入门)
  8. 发布网站,报Access to the path is denied的解决办法
  9. user Collaborative Filtering
  10. [HAOI2016]找相同字符
  11. 路由刷rom手册
  12. 十二、JDBC
  13. ThinkPhp框架分页查询和部分框架知识
  14. LINUX | 谷歌云开启SSH及设置root密码
  15. char类型的数值转换
  16. 学习windows编程 day4 之 多边矩形填充
  17. Linux命令-文件系统常用命令:df,du,fsck,dumpe2fs
  18. 在linux下安装Avria(小红伞)
  19. Problem D: GJJ的日常之暴富梦(水题)
  20. xcode好玩的条件断点设置. 可以真人发声。

热门文章

  1. 163k地方门户网站系统团购定时结束限量控制
  2. cocos2d安卓android长音效播放不完全
  3. poj3480--John
  4. LeetCode_implement strstr ()
  5. 简述tcp协议对http性能的影响及优化
  6. 【转】基于DM8168的视频智能分析系统的设计方案
  7. Apache POI组件操作Excel,制作报表(一)
  8. [转]Laravel 4之路由
  9. Sql Server 函数的操作实例!(执行多条语句,返回Select查询后的临时表)
  10. oracle 10g 数据库字符集更改