OpenStack计费服务Cloudkitty分析(一)

我们都知道云计算是一种按需付费的服务模式,在OpenStack 中完成计费服务的组件是Cloudkitty,很高兴能在今天晚上与大家交流探讨OpenStack计费服务--Cloudkitty。

谈到计费就不得不先说说OpenStack的计量服务,虽然前期在计量服务上走了些“弯路”,但现在ceilometer、gnocchi、aodh、panko项目的稳步并进算是峰回路转。这其中Ceilometer负责采集计量数据并加工预处理;Gnocchi主要用来存储时序计量数据和提供资源索引;Panko主要提供事件存储服务;aodh主要提供预警和计量通知服务。Ceilometer一分为四,各司其职,因此计费服务的数据源就有了保障(说明:Cloudkitty并非仅能用于OpenStack计费,这取决于collector的具体实现)。

Gnocchi的一个核心功能是资源索引器,通过资源也可以快速知道此资源的基本信息和其所具有的metric(例如instance资源具有cpu_util, memory.usage等metric)。另一个功能是存储计量数据即所有metric的measures(<时间,值>)信息。而metric的measures信息在使用上面会涉及到大量的查询过滤和聚合操作,早期Ceilometer将measures数据存于SQL数据库中的一张表里,由此所带来的延迟在实际使用中是不能忍受的,但在Gnocchi中得到了解决,并且不会随着云环境中资源和时间的增加而产生新的性能瓶颈。

Gnocchi的数据归档策略解释了其中的原因:归档策略决定了points的数量,而每个point的存储空间为9字节,所以每个metric对应文件的存储空间是可预知的;Gnocchi在收到新的measures时,会动态根据预先定义的聚合方法进行聚合操作,并维护存储在文件中的points信息;在使用API获得某个metric的计量信息时,这些计量信息会直接从metric所对应的文件中读取得到points,故时间复杂度为O(1)不存在性能瓶颈。

由此可见,类似于Ceilometer计量数据存储的问题都可以采用gnocchi,那么计费服务产生的费用数据的存储也类似。

Cloudkitty Official包括cloudkitty, cloudkitty-dashboard, python-cloudkittyclient三个部分,Cloudkitty是核心功能组件,包含Tenant fetcher,Collector,Rating和Storage四大核心模块;cloudkitty-dashboard为管理员提供简洁的操作设定界面和为用户提供直观的视图界面;python-cloudkittyclient为管理员提供命令行交互接口。

当然,我们关注的核心是Cloudkitty,基本可以用上面的二十四行代码描述。整体上Cloudkitty计费引擎以定时(CONF.collect.period)task的形式执行计费任务;每一轮计费任务之初要知道需要为哪些租户进行计费get_tenants(),再依次对每个租户的每一项服务进行计费;首先会通过collector模块从计量数据源中获得计费数据data;其次将数据交给计费模型根据定价规则完成费用计算;最后使用storage模块将费用数据持久化存储保存。

下面将依次详细介绍Cloudkitty的四大核心模块。每个模块都使用了stevedore,即插件形式的多种实现,均具有良好的可配置性,拓展性和灵活性。

Tenant Fetcher模块是要告诉Cloudkitty此轮计费任务应该为谁计费。可以从cvs文件(FakeFetcher)和keystone(KeystoneFetcher)中知道需要对谁的资源/服务进行计费。其中广泛使用keystone,支持V2和V3版本。所以对于想要计费的租户需要执行命令’keystone user-role-add --user cloudkitty --role rating --tenant xxx’,将cloudkitty用户加入xxx租户并赋予rating角色。

Collector和Transformer模块是收集和格式化计费源数据。从collector的实现上来看,Cloudkitty不仅仅能为OpenStack计费,而且能为其它有计费需求的平台计费,仅需实现和配置相应的collector模块即可。常用的collector模块是CeilometerCollector和GnocchiCollector,分别使用Ceilometer和gnocchi的API获取计量数据,而在OpenStack环境中GnocchiCollector必将成为核心的收集器。

由Collector的retrieve方法获得计费所需要的计量数据形如item格式,再由Transformer将之格式化为data格式,最终交付给计费模块处理。

本文转载自:

http://www.zerotc.com/newsdetail/161.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值