puppet-rally

  1. 基础知识
  2. 先睹为快 - 一言不合,立马动手?
  3. 核心代码讲解 - 如何做到管理Rally服务?
  4. 小结
  5. 动手练习 - 光看不练假把式

本节作者:余兴超
阅读级别:选读
阅读时间: 40分钟

基础知识

Rally项目是Openstack性能测试服务,可以被用于Openstack CI/CD中的基本工具链中,以提高Openstack的SLA。下图给出了Rally与Deployment,Verify,Benchmark之间的关系以及其执行流程。不过Rally当前的主要工作仍然集中在benchmark上,社区的进度比较缓慢。

puppet-rally - 图1

架构简介

Openstack大多数项目属于as-a-service类型,因此Rally提供了service和CLI两种方式:

  • Rally as-a-Service 以web service方式对外提供服务
  • Rally as-an-App 作为轻量级命令行工具使用

puppet-rally - 图2

先睹为快

puppet-rally模块目前没有使用Release机制管理,请使用master分支代码

在终端下执行以下命令:

  1. puppet apply -e 'include rally'

然后就可以开始使用rally了,是不是so easy?

核心代码讲解

puppet-rally模块中,我们主要介绍class rallyclass rally::settings

class rally

  1. include ::rally::db #配置数据库
  2. include ::rally::logging #配置日志
  3. include ::rally::settings #rally.conf配置文件
  4. # Keep backward compatibility
  5. $openstack_client_http_timeout_real = pick($::rally::settings::openstack_client_http_timeout,$openstack_client_http_timeout)
  6. # rally软件包的安装
  7. package { 'rally':
  8. ensure => $ensure_package,
  9. name => $::rally::params::package_name,
  10. tag => ['openstack', 'rally-package'],
  11. }
  12. # 是否清理非Puppet管理的配置
  13. resources { 'rally_config':
  14. purge => $purge_config,

class rally::settings

rally配置文件中涉及到各个服务的参数设置,以cinder为例,在[benchmark]下就有以下参数:

  • $volume_create_poll_interval
  • $volume_create_prepoll_delay
  • $volume_create_timeout
  • $volume_delete_poll_interval
  • $volume_delete_timeout

puppet-rally模块下,将各服务的参数设置,拆为单独的class,放置在settings/目录下,统一被rally::settings调用:

  1. class rally::settings (
  2. $project_domain = $::os_service_default,
  3. $resource_deletion_timeout = $::os_service_default,
  4. $resource_management_workers = $::os_service_default,
  5. $user_domain = $::os_service_default,
  6. $openstack_client_http_timeout = undef,
  7. ) {
  8. #管理rally各服务的配置
  9. include ::rally::settings::cinder
  10. include ::rally::settings::ec2
  11. include ::rally::settings::glance
  12. include ::rally::settings::heat
  13. include ::rally::settings::ironic
  14. include ::rally::settings::manila
  15. include ::rally::settings::murano
  16. include ::rally::settings::nova
  17. include ::rally::settings::sahara
  18. include ::rally::settings::swift
  19. # 此类等待https://review.openstack.org/#/c/337412/被Merge
  20. include ::rally::settings::tempest
  21. rally_config {
  22. 'cleanup/resource_deletion_timeout': value => $resource_deletion_timeout;
  23. 'users_context/project_domain': value => $project_domain;
  24. 'users_context/resource_management_workers': value => $resource_management_workers;
  25. 'users_context/user_domain': value => $user_domain;
  26. }
  27. }

小结

本节简要介绍了Rally服务以及如何使用puppet-rally模块部署Rally服务。当前,Rally服务作为Openstack平台的性能测试项目,目前的使用场景还是比较有限的,因为当前Rally只能支持API级别的性能测试,并且多数API的后端操作是异步的,如果只关注API的响应结果,意义不大。不过值得庆幸的是,Rally项目有来自国内两家公司的core reviewer(Kun Huang和Li Yingjun),我们期待着Newton版本中Rally的发展和变化。

动手练习

  1. 设置glance_image_create_timeout为60s
  2. 使用MySQL替换默认的SQlite作为数据库后端
  3. 当前puppet-rally能否支持从源码安装Rally?需要如何修改?