在I版本号中,Heat中加入了对于AutoScaling资源的支持。github上也提供了相应的AutoScaling的模板(https://github.com/openstack/heat-templates/blob/master/hot/autoscaling.yaml),同一时候也支持使用ceilometer的alarm来触发Scaling Policy,可是在实践的过程中可能会碰到一些问题。本文就该特性以及问题做一个简单的总结

AutoScaling定义的流程

  1. 首先定义一个Auto Scaling Group,该Group 定义了能够持有资源的类型以及的最大、最小资源数
  2. 依据需求定义Alarm的触发条件,比如当CPU利用率在一分钟内平均值超过50%时触发警报,支持的的指标能够通过ceilometer meter-list命令查询
  3. 针对某个详细的Alarm。定义Policy,比如CPU利用率长时间偏高时,就在AutoScalingGroup中又一次初始化一个同样实例,该Policy须要与 步骤一  中定义的Group绑定
  4. 为了更好的提高资源利用率,在定义自己主动收缩机制的同一时候能够定义负载均衡(Neutron LBAAS)。

定义AutoScaling的过程中涉及到的资源例如以下图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJpY19zdW5haA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

AutoScaling的工作流程

  1. Ceilometer通过获取实例的监控參数,发现实例的某项指标出现异常。且符合已经定义的Alarm触发规则
  2. 触发Policy.在生成Policy和Alarm时,Alarm会设置其alarm_actions属性,该属性的值能够理解为调用特定Policy服务的URL,此时该URL被调用
  3. Policy被调用。依据配置。决定添加还是降低实例

工作流程大概例如以下:

AutoScaing实战

为了简单。下载https://github.com/openstack/heat-templates/blob/master/hot/autoscaling.yaml。以此为基础进行调整

模板文件没什么好说。用到了HOT模板的一些资源。主要说下在创建的过程中碰到的问题

  1. 该模板中的Alarm创建出来后,查看alarm 列表能够发现Continues属性都是false( 假设查看明细该属性相应的是repeat_actions属性)该属性的为false代表alarm_action仅仅会被运行一次,所以为了达到更好的演示效果。须要将其改动为True
  2. 为了达到演示的效果,能够将Alarm的Period设置的短一点。比方说10s
  3. 假设Alarm的状态长时间为insufficent_data,说明ceilometer长时间没有採集到监控指标的数据。为了达到更好的演示效果能够调整/etc/ceilometer/pipeline.yaml文件里採集指标的间隔。默认的间隔是600秒,能够将其设置为小于CoolDown或是Alarm Period   的时间
  4. 对于运行的过程,主要能够參考heat-engine.log, heat-api-cfn.log, alarm-evaluator.log等日志
  5. 当前的版本号运行过程中有下面错误产生,能够參考https://review.openstack.org/#/c/92887/进行解决

    2014-08-0105:38:08.410 3834 ERROR heat.engine.service[req-96a84baa-6b6f-4a4e-a2f3-90c0a02612e7 None] Unable to retrieve stack40e7560e-848e-4d78-bac0-8eb4f26ac22f
    for periodic task

下图为相关的资源列表

下图为Alarm的列表

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJpY19zdW5haA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

下图为某个Alarm的history

IceHouse中的alarm是一个监控特定指标的对象。alarm的状态包含:

1、OK。

表示指标正常

2、ALARM。

表示指标异常。

假设连续几个周期都处于ALARM状态,那么就会触发一个或多个policy。进而触发scaling group的扩缩。

3、INSUFFICIENT_DATA。表示数据不可用。出现这个状态主要是由于 缺少监控指标的数据,处于这个状态的Alarm也不会被触发。假设为了測试目的。能够通过改动/etc/ceilometer/pipeline.yaml文件里的interval參数来调整收集数据的间隔

最新文章

  1. .NET/ASP.NET MVC(模块化开发AraeRegistration)
  2. Swift 03.Dictionary
  3. android studio中如何设置注释模板
  4. ext 自带搜索功能
  5. hibernate基础增删查改简单实例
  6. kafka系列教程2(设计构造及原理1)
  7. DEEPIN下搭建FTP服务器步骤(备忘录)
  8. android 双向滑动 seekbar
  9. 遇到java.lang.OutOfMemoryError: Java heap space问题【持续跟踪中...】
  10. [置顶] How to create Oracle 11g R2 database manually in ASM?
  11. SQL构架(转)
  12. 循序渐进之Spring AOP(3) - 配置代理
  13. bzoj4326 运输计划
  14. JSP连接MySQL时出现--错误:Access denied for user 'root'@'localhost' (using password: YES)'解决方案
  15. codeforces gym #102082C Emergency Evacuation(贪心Orz)
  16. dart正则
  17. [转]oracle分页用两层循环还是三层循环?
  18. python中的进程池和线程池
  19. js的事件委托机制
  20. zabbix-agentd 安装

热门文章

  1. CH Round #46A 磁力块
  2. 我的spark python 决策树实例
  3. 杂项-DB:OLAP(联机分析处理)
  4. linux IPtable防火墙 禁止和开放端口(转)
  5. php简单测试slim框架的功能
  6. 最详细的CentOS 6与7对比(一):常见设置对比
  7. 深入理解 python 元类
  8. QlikSense移动端使用攻略
  9. Windows 下修改 MySQL 编码为 utf8
  10. 关于Eclipse安装Scala插件不显示