十一 OpenStack遥测与堆栈扩展(Heat)

(本文所有提及OSP=OpenStack Platform)

1 分析自动扩展

1)Ceilometer简介:

  • Ceilometer是OpenStack 遥测服务,为基于OpenStack 的云提供用户级使用情况数据
  • 遥测服务收集的数据可用于记账、系统监控和警报等
  • Ceilometer从现有OpenStack 组件或底层技术(如Libvirt)发送的通知中
  • 收集数据收集的数据汇总到MongoDB
  • 数据库中收集的数据可用于触发警报,能用于自动收缩或扩展一组实例,还可用于监控OpenStack资源

2)遥测术语

  • 通知代理: notification agent获取OpenStack 通知总线上生成的事件,并将它们转换为遥测样本(sample)
  • 轮询代理: polling agent是在控制节点或者计算节点上运行的服务,用于测量使用情况并将结果发送到收集器
  • 数据存储:datastore记录遥测服务所收集数据的存储系统
  • 量表: meter是针对资源的不同度量。例如,一个实例具有多个量表,如实例正常运行时间、CPU使用量、磁盘I/O等。计量: metering是收集度量信息的过程
  • 通知: notification是来自外部OpenStack 组件的消息,如Nova或Glance 的信息。通知一般通过通知器组件发送到遥测服务并被其接收。
  • 资源: resource资源是被计量的OpenStack 资源,如实例、卷或镜像。样本: sample特定遥测量表的数据样本,如实例的CPU使用量

3)通过遥测跟踪资源:

  • 管理员可以根据部署的OpenStack服务,使用遥测服务来跟踪其架构中的各种资源
  • 遥测数据收集包括:
    1. 项目的VCPU数
    2. CPU使用量(百分比)
    3. 正在运行的实例数
    4. 已使用的内存大小
    5. 传入和传出的网络数据包数

4)遥测数据存储:

  • 在数据存储中存储事件、样本、警报定义和警报
  • 随着指标数据的增多,存储可能会成为性能瓶颈,影响遥测基础架构的性能推荐将指标数据存储在遥测数据库外
  • OpenStack遥测服务支持许多后端服务来存储指标、警报和事件数据

Gnocchi :

Gnocchi是用于存储指标和资源数据的时间序列数据库
时间序列数据库对基于时间戳索弓|的数组进行了优化
此数据库是OpenStack项目的一部分,能够存储统计数据和大量指标数据此数据库可以轻松扩展,以满足云计算的要求

Aodh :

Aodh用于根据警报定义来触发警报操作
警报操作可生成HTTP回应或日志记录,或利用Zaqar 发送通知到消息传递服务

Panko :

Panko存储事件数据,用户能够捕获给定时间上OpenStack资源的状态信息此存储可以扩展,并可存储生命周期较长(与遥测服务相比)的数据

5)遥测服务:

遥测服务构建自下列代理和服务:
1. openstack aodh-alarm-evaluator :当统计数据超过给定时段定义的阈值而触发警报
2. openstack-aodh-alarm-notifier :触发警报时执行用户定义的操作
3. openstack- aodh-api :提供对数据存储中警报信息的访问权限
4. openstack-ceilometer-api:此API服务器在管理节点上运行,提供对Ceilometer数据库中数据的访问权限
5. openstack-ceilometer-collector: 在Ceilometer 管理服务器,上运行,监控消息队列。将通知消息并转译为遥测消息,再将消息发回到具有相关主题的消息总线。遥测消息不经修改写入到数据存储中
6. openstack ceilometer-compute :在每个计算节点上运行,用于轮询资源使用情况
7. openstack-ceilometer-notification :将指标从各种OpenStack 服务推送到收集器服务
8. openstack ceilometer-central :负责轮询公共REST API来检索OpenStack资源的其他信息的代理。此服务收集通知服务没有提供的那些服务信息

6)查看Ceilometer指标:

  • 下列步骤概述了获取OpenStack 计量服务可用量表(meter) 的列表的流程:
  • 使用ceilometer meter-list 命令列出租户可以访问的所有可用指标。–query 选项可将输出限定为特定的资源、项目或用户
  • ceilometer sample-list命令检索遥测服务能够针对特定量表名称收集的数据样本。
  • –query选项可以搭配此命令,以便基于资源ID和时间戳来约束查询
  • ceilometer statistics -meter METER_NAME命令显示给定量表的不同值。例如,
  • 用户可以查询cpu_util 量表的平均值。–aggregate 选项可用于显示特定数据聚合函数。可用的聚合有count、min、max、 sum、stddev 和avg
  • 管理警报:
  • 警报在指定时限内观察单个指标,并且执行与该警报关联的一个或多个操作
  • 例如,警报可以在实例平均CPU使用量在3个连续的10 分钟期间超过70%时触发
  • 遥测警报具有三种可能的状态:
    1. ok :指标在为警报定义的阈值范围内
    2. alarm :指标超出为警报定义的阈值范围
    3. insufficient data :警报刚启动,指标不可用,或者指标尚无充足的数据来确定警报状态

7)在Ceilometer 中创建警报:

  • ceilometer alarm-threshold-create 此命令创建的警报基于一个静态阈值和一个比较运算符,如大于号或小于号
  • ceilometer alarm-gnocchi-aggregation-by-metrics -threshold-create:在Ceilometer 将Gnocchi数据库作后端时,可利用此命令创建警报。此命令基于统计计算结果来创建警报。该警报使用基于指标的聚合
  • ceilometer alarm-gnocchi-aggregation-by-resources -threshold-update:在Ceilometer将Gnocchi 数据库作后端时,可利用此命令创建警报。此命令基于统计计算结果来创建警报。该警报使用基于资源类型的聚合
  • ceilometer alarm-gnocchi-resources-threshold-update:在Ceilometer数据库作后端时,可利用此命令创建警报。此命令基于统计计算结果来创建警报。该警报使用基于资源类型和资源ID的聚合
    $ ceilometer alarm-threshold-create --name high_cpu_util --description 'High CPU Util' --meter-name cpu_util --threshold 70.0 --comparison-operatorgt --statistic avg --period 70 --evaluation-periods 2 --alarm-action 'log:// --queryresource id='RESOURCEID'
    它创建的警报会在个别实例的平均CPU使用量在3个连续的10分钟期间超过70%时触发。该警报的通知发送到日志。需要管理员凭据才能将警报通知发送到日志

8)管理警报:

下列步骤概述了创建、查看和删除警报的流程。
1. 以具备admin 角色的用户身份, 使用ceilometer alarm-threshold-create命令创建一个基于统计计算 结果的新警报。
2. 使用ceilometer alarm-list命令列出环境中配置的、并可被项目访问的所有警报。
3. 若要更新基于统计计算结果的警报, 可使用ceilometer alarm-threshold-update 命令。
4. 达到阈值时,警报的状态会从ok转换为alarm。 使用ceilometer alarm-history命令来跟踪警报在其生命周期内的历史记录,并且查看警报状态转换时的时间戳。
5. 不再需要某一个警报时,可使用 ceilometer alarm-update --enabled False -a ALARM-ID命令来禁用该警报。
6. 若要永久删除警报,可使用ceilometer alarm-delete 命令

2 Heat堆栈(Stack)

1)Heat简介:

  • 编排能够自动化调配虚拟网络、存储和服务器等云资源
  • Heat项目为OpenStack 提供编排功能。它由各种服务组成,其中包括引擎(engine)服务、应用编程接口(API) 服务, 以及面向Amazon 编排服务CloudFormation的实现
  • 编排向系统管理员提供了解析基于文本的指令的统一接口,用以服务部署
  • 管理员编写模板来指定要在云中生成的资源,实例或卷编排堆栈(stack) 由一个模板或多个嵌套的模板组成
  • Heat编排服务也提供自动扩展功能,根据资源使用情况动态调整云基础架构Heat编排服务支持扩展和收缩资源,可以回收未用的资源

2)使用模板的优点有:

  • 可访问所有底层服务API
  • 模块化, 以资源为导向。将基础架构元素定义为对象
  • 可以作为嵌套堆栈反复定义和重新利用。编排堆栈使得云基础架构能够以模块化方式定义和重新利用
  • 利用可插拔式资源实施,能够定义自定义资源可以定义高可用性功能
  • 可以通过版本控制系统进行管理

3)Heat编排服务组件:

  • openstack-heat-api: API服务提供REST API,利用远程过程调用(RPC) 将Heat请求转发到Heat引擎
  • openstack. heat-engine :读取模板, 编排各种OpenStack资源的创建和启动。将事件状态报告回Heat 堆栈所有者
  • openstack-heat-api-cfn :此服务由CloudFormation 兼容模板使用,以利用远程过程调用将请求转发到Heat引擎
  • 编排数据库: OpenStack编排服务要求使用数据库。它将MariaDB 数据库用作数据存储,并且创建一个名为heat 的数据库来存储数据。数据库连接设置在/etc/heat/heat.conf中

4)Heat模板分析:

  • 定义Heat 模板版本:
  • 每个HOT模板都必须包含当前版本值的heat template_ version键(HOT当前版本)
  • Heat模板版本定义可以在模板中使用的新功能
  • 利用Horizon 控制面板或OpenStackCLI, 可以列出可用的Heat 模板版本openstack orchestration template version list

5)定义堆栈输入参数:

  • parameters 部分定义可用参数的列表
  • 对于每个参数,堆栈所有者需要至少定义数据类型、可选的默认值(未另外指定时使用)、可选的描述以及用于验证数据自身的约束.

6)定义堆栈要创建的资源:

  • 模板的resources部分定义了在通过模板部署堆栈时Heat 将创建的项,可能包括存储、网络、端口、路由器、安全组、防火墙规则,或者任何其他可用资源
  • 资源需为某种type,使用openstack orchestration resource typelist命令,列出可用的资源类型

7)创建Heat环境文件:

  • 传递到HOT模板的参数值可以手动指定,或利用环境文件来指定
  • 环境文件必须使用YAML格式编写
  • 用户可以创建全局环境文件,存储在默认目录: /etc/heat/environment.d。环境文件中传递的值会覆盖现有的资源。例如,用户可以在环境文件中指定自己的密码,并在部署堆栈时使用此密码

3 自动扩展

1)自动扩展的优点:

  • 自动扩展为满足服务要求而自动扩展或收缩堆栈部署,RHOSP 中通过编排服务来实施自动扩展
  • 例如,一个Web应用。其使用量在一周的开始和末尾很小,但在周中,需求明显升高。传统上,可以通过两种方式规划所需的资源
    1.为整个星期调配额外容量的资源以满足需求增高的需要。缺点是会造成未使用的容量,抬高了应用的运行成本
    2.配置应用负载只达到需求资源的平均值。这种做法在成本上更为优化,但存在周中需求激增时用户体验较差
  • 通过运用自动扩展,只有需要增大容量来应对需求激增时才添加资源到Web应用堆栈中。这些资源在不需要时终止,从而节省成本

2)向云基础架构添加自动扩展能力,云提供商可以获得以下好处:

  • 自动扩展使得云资源能够以应对需求的必要容量来运行
  • 自动扩展能够缩减基础架构成本,因为它可以根据需求动态调配或终止资源

3)自动扩展工作方式:

  • 自动扩展组定义要调配的资源。它启动由所需容量或最小参数定义的数量的实例
  • 定义的遥测警报根据警报规则触发自动扩展以扩展或收缩堆栈。创建的警报主要有两个,一个用于扩展,另一个用于收缩。这些警报的警报操作调用与扩展策略和收缩策略关联的URL
  • 自动扩展策略定义在扩展或收缩时需要添加或删除的资源数量。它使用定义的自动扩展组。可以为基础架构自动扩展定义多项自动扩展策略,从而根据不同的使用模式来调整

4)通过编排服务使用自动扩展:

Heat编排服务使管理员能够动态扩展或收缩其堆栈。编排服务与遥测警报通信,以确定触发扩展事件的条件。管理员可以监控各种不同资源,包括:
1.CPU负载
2.CPU使用量百分比
3.磁盘使用量
4.网络使用量

5)下列Heat编排资源类型用于创建自动扩展的资源:

  • OSs::Heat::AutoScalingGroup :此资源类型用于定义自动扩展资源组。必要属性包括max_ size、 min_ size 和resource。 可选属性包括cooldown、desired_ capacity 和rolling_ updates
  • OS::Heat::ScalingPolicy :此资源类型用于定义自动扩展策略,以管理由
  • 0S::Heat::AutoScalingGroup定义的自动扩展组的扩展。必要属性包括adjustment_ type、 auto_ scaling_ group_ id和scaling_ adjustment。 可选属性包括cooldown和d min adjustment_ step
  • Os::Ceilometer::Alarm :此资源类型用于定义基于所收据数据样本阈值评估的Ceilometer遥测警报。必要属性包括meter_ name 和threshold。 可选属性包括period. statistics、alarm actions、 comparison operator 和evaluation_ periods。 管理员可以定义在受监控资源满足指定条件时要执行的操作
  • OS::Neutron::LBaaS::HealthMonitor :此资源允许管理员创建运行状况监控器(由Neutron LBaaSv2支持)。运行状况监控器是一种Neutron 网络服务,用于检查实例是否仍然在指定的协议和端口上运行。必要属性包括delay.max_ retries、pool、 timeout 和type。 可选属性包括expected_ codes、http method 和url_path
  • OS::Neutron::LBaaS::Pool :此资源管理Neutron 池,后者代表一组节点。池定义节点所驻留的子网、平衡算法和节点本身。管理员可以使用此资源创建面向前端的负载平衡器,后者本身将传入请求重新路由到后端服务器。必要属性包括lb_algorithm、 listener 和protocol。 可选属性包括session persistence
  • OS::Neutron::LBaaS::L oadBalancer :此资源可以和OS::Neutron::LBaaS::Pool 资源搭配, 用于管理Neutron 负载平衡器。它定义将传入请求路由到Neutron 池中定义的实例的负载平衡器。必要属性包括pool_id 和protocol port

你可能感兴趣的:(OpenStack)