连冠华,云计算资深架构师

本文通过测试自动扩展功能开始,逐步介绍如下主题:

  1. VMSS 自动扩展测试及告警规则配置
  2. VMSS 中 Autoscale 基本原理及诊断
  3. VMSS 实践及建议
  4. VMSS 手动扩展
  5. VMSS 中使用定制化镜像

VMSS 自动扩展测试及邮件告警规则配置

在你初始创建了 VMSS 之后,默认情况下的扩展集中的虚拟机个数是你在模板本文中指定的虚拟机容量,在之前的测试中默认情况下,创建的虚拟机为 2 台。

1.创建完成后,ssh 登陆到虚拟机,安装压力测试软件 stress 和 CPU 监控软件 sar:

$ sudo apt-get install sysstat atsar

 

$ sudo apt-get install stress

 

2.在你的生产环境中,你可能需要知道你的当前虚拟机集合的工作负载情况,一个非常有用的功能就是自动告警,你可以设置当某个指标的负载大于阈值的时候,给你发送邮件,或者触发一个操作,通过这个功能我们也可以了解通过自动扩展,你的工作负载的压力是否缓解,具体操作如下:

选择你创建的 VMSS 名称,选择“概述”,可以看到有一个 CPU 百分比:

 

单击 CPU 百分比,选择“添加警报”,在度量值选择 “CPU user time”,阈值 50:

 

系统采集的周期最短为 5 分钟,留为默认值,可以选择将告警信息发送给账户所有者或者指定其他邮件,你也可以定义一个 webhook 地址,触发相应的操作,点击确定完成配置:

 

 

 

 

 

 

 

 

 

 

3.现在使用 stress 为虚拟机加压,并使用 sar 监控测虚拟机 CPU 负载,可以看到,在加压工具作用下,CPU 负载始终保持在 80% 以上,按照 auto scale 的设置,当这种负载持续 5 分钟后就会触发自动扩展操作:

 

4.加压超过 5 分钟的时候,根据我们设置的规则,你会收到一封 Azure 的邮件,提示你的应用负载超过阈值,发生报警:

 

5.我们登陆到portal,选择虚拟机扩展集,可以看到虚拟机自动扩展开始,新的虚拟机被启动,并按照规则逐渐增加:

 

6.当我们停掉压力测试工具,或者压力低于阈值的时候也会收到一封提示邮件提醒我们压力告警已经解除:

 

7.在 Azure 的管理界面上,打开虚拟机扩展集,大约 5 分钟的时间,你也会看到,由于负载低于我们设置的阈值,auto scale 的 scale in 开始工作,开始停止并删除虚拟机,每次删除一个,最终会保持最小值一个:

8.通过自动扩展的活动日志,你也可以看到当前进行自动扩展的详情:

 

从上述测试可以看到,VMSS 的自动扩展功能会严格按照我们定义的阈值进行增加 VM(Scale out)或者减少VM的操作(Scale in),并且通过设置告警规则,我们可以根据得到的阈值进行相应的操作,比如发邮件告警或者触发一些预定义的操作。