在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參数来调整收集数据的间隔

OpenStack Heat总结之:Icehouse中通过Heat+Ceilometer实现Autoscaling的更多相关文章

  1. 探索 OpenStack 之(17):计量模块 Ceilometer 中的数据收集机制

    本文将阐述 Ceilometer 中的数据收集机制.Ceilometer 使用三种机制来收集数据: Notifications:Ceilometer 接收 OpenStack 其它服务发出的 noti ...

  2. 探索 OpenStack 之(16):计量模块 Ceilometer 介绍及优化

    0. 背景 0.1 为什么要有 Ceilometer? 通常云,特别是公有云在计费方面有三个层次: 计量 (Metering): 收集资源的使用数据,其数据信息主要包括:使用对象(what), 使用者 ...

  3. Python调用 Openstack 主要服务(keystone,nova,glance,neutron,heat)

    由于Openstack更新很快,现在准备搭建基于Queen版本的Openstack,Queen版本要求keystone版本为V3,所以之前大多数接口都不能用了,百度了一下都没有比较新的实例,官方文档又 ...

  4. OpenStack三个节点icehouse

    一.环境准备 1.架构 创建3台虚拟机,分别作为controll节点.network节点和compute1节点. Controller节点:1processor,2G memory,5G storag ...

  5. openstack 问题一览(持续总结中)

    ★名词 Qemu:它也是一种虚拟化技术,主要提供对IO,网络等外设的虚拟化管理.结合KVM(对CPU和内存管理),提供较为完整的虚拟化管理功能. Libvirt:提供了针对各种虚拟机技术的接口,来管理 ...

  6. 华为OpenStack开源团队人才招募中

    职位要求: 1. 三年以上软件开发经验,编程技能良好. 2. 熟练使用Python.Java.Go或其他语言开发. 3. 有OpenStack经验或者存储经验优先考虑. 4. 良好的学习和沟通能力,责 ...

  7. OpenStack 部署总结之:在CentOS 6.5上使用RDO单机安装icehouse(Ml2+GRE)

    本文主要介绍怎样在CentOS6.5上通过RDO来安装icehouse,因为安装的过程中涉及的软件较多,以及依赖关系比較复杂,建议使用一个全新的操作系统来进行安装. 安装步骤详细例如以下 (1)安装操 ...

  8. OpenStack Heat 介绍

    Heat 是一个基于模板来编排复合云应用的服务. 它目前支持亚马逊的 CloudFormation 模板格式,也支持 Heat 自有的 Hot 模板格式.模板的使用简化了复杂基础设施,服务和应用的定义 ...

  9. 【译】OpenStack Heat基础介绍

    原文:http://blog.scottlowe.org/2014/05/01/an-introduction-to-openstack-heat/ 本文将简要地介绍OpenStack Heat. H ...

随机推荐

  1. PHP 比 Java 的开发效率高在哪?

    PHP 比 Java 的开发效率高在哪? 现在很多互联网应用都是php开发的,在很多人的观念里已经把php与java分到了两个开发领域,php是互联网,java是企业应用. 都说php的开发效率高,更 ...

  2. CodeForces 651A(水题)

    Friends are going to play console. They have two joysticks and only one charger for them. Initially ...

  3. RabbitMQ(三) 集群配置

    RabbitMQ--集群配置 之前不管是搞Redis.SQL.Mongo还是其他的东西,一律都没说过集群要怎么搞,电脑实在是带不动.说透彻点就是懒,懒得搭也懒得写,今日深刻意识到错误,做学问是不能懒的 ...

  4. BZOJ 2729 高精度+组合数学

    思路: 考虑 把男生排成一排 女生和老师往里插 分成两种情况. 1. 女生中间夹着老师 2. 女生中间没有夹着老师 求一下组合* 阶乘就好了 先放Python代码 简洁易懂 def fact(n): ...

  5. POJ 2406 KMP next数组的应用

    题意:让你找最小重复串的个数 加深KMP中对next数组的理解 #include <cstdio> #include <cstring> using namespace std ...

  6. Docker installs

    docker要求系统内核必须在3.10以上uname -r 命令查看你当前的内核版本 1.更新yum源并删除旧版docker yum remove docker docker-common docke ...

  7. 第4章 部署模式 Deployment Plan(部署规划)

    已开发了基于组件的应用程序,该应用程序在逻辑上构造为多层结构,如 Three-Layered Services Application. 中所述.您希望将它分布到一组在物理上为多级结构的服务器上,如 ...

  8. 依赖注入与Service Locator

    为什么需要依赖注入? ServiceUser是组件,在编写者之外的环境内被使用,且使用者不能改变其源代码. ServiceProvider是服务,其类似于ServiceUser,都要被其他应用使用,不 ...

  9. nodejs -- crypto MD5签名

    MD5使用方法: const crypto = require('crypto'); var obj = crypto.createHash('md5'); // 可多次调用 update obj.u ...

  10. JQuery学习笔记系列(一)----选择器详解

    笔者好长时间没有更新过博客园的笔记了,一部分原因是去年刚刚开始工作一段时间忙碌的加班,体会了一种每天加班到凌晨的充实感,之后闲暇时间了也因为自己懒惰没有坚持记笔记的习惯,现在重新拾起来. 借用古人的一 ...