一.为什么要用Rally Docker
1.为什么要通过Docker使用Rally
众所周知,软件产品部署环境的变化(譬如,从A环境到B环境等),会导致测试环境响应的变化。那么,有没有一种办法,可以更好的解决这种环境迁移导致的诸多问题。即让测试环境更加自主、可控和轻量。
Docker时代的来临,无疑,为我们提供了一把新的钥匙。
通常,为了构建这样的一个测试平台,即便是熟练者往往也需要花费30分钟以上的时间。通过使用Docker容器化,将Rally独立于宿主机OS,而单独运行在容器中,可以做到系统隔离,平台复用和分布式测试等高效用途。
社区对OpenStack的集成测试工具采用Tempest,性能测试采用Rally。众所周知,性能测试一般是在一个软件产品在某个迭代内开发完毕,上线部署之前执行。
作为OpenStack测试领域内的急先锋,Rally当然也不例外。典型的应用场景:一是对内部基于OpenStack开发的产品做性能测试;二是做服务实施时,给客户做的POC以及上线之前的性能测试等。需要尤为注意的是,由于性能测试依赖于硬件物理资源配置,所以应当根据实际情况出发,甄别出不同环境下的性能测试差异。
2.什么是Rally
Rally 常用于模拟高并发场景的压力测试。比如OpenStack API在并发下的响应时间和请求成功率,从而测试出OpenStack的规模和性能。Rally特性如下:
- Rally 会自动部署一个OpenStack的环境, 并运行tempest来验证环境;
- Rally会模拟生成用户负载,以提供性能测试问题;
- Rally通过Ceilomter来收集 Hypervisor 和VM的数据,并放在Rally的数据库中;
- Rally 最终会生成可读性极佳的性能测试报告;
- Deploy engine:并不是一个OpenStack的部署器(deployer),而是一个类似于插件的结构(pluggable mechanism),可以很好的与流行的部署器如DevStack、Fuel等结合使用;
- Verification:使用Tempset来验证已部署的OpenStack云环境的功能性;
- Benchmark engine:允许在云环境中制造并发负载,进行压力测试;
目前,有如下一些公司但不限于在社区贡献Rally:
使用Rally的三个高水平案例
从上图可以知道,Rally典型的作用有:
- 自动化测试和分析,了解新并入的代码对OpenStack的影响;
- 使用Rally profiler来检测性能问题;
- 测试不同部署方式对于操作系统性能的影响;
- 创建针对不同规模的负载压力;
- 检测不同负载下,基本云主机操作的性能情况;
- 测试涉及到OpenStack的几乎所有使用场景;
- 最核心的是,Rally可以是QA测试、DevOps、CI/CD中不可或缺的重要组成部分;
二.安装和使用Docker
备注:
这里,我的操作环境是Rally docker和由DevStack安装的OpenStack环境均构建在同一个CentOS 7虚拟机中。
1)Docker软件包已经包含在默认的CentOS-Extras软件源里,安装命令如下:
# yum -y install epel-release
# yum install docker -y
2)当Docker安装完成之后,你需要启动docker进程:
# systemctl restart docker
3)如果我们希望Docker默认开机启动,如下操作:
# systemctl enable docker
4)配置Docker加速器。这里我们使用daocloud提供的docker镜像加速服务:
#sed -i 's|other_args="|other_args="--registry-mirror=http://768e1313.m.daocloud.io |g' /etc/sysconfig/docker
#sed -i "s|OPTIONS='|OPTIONS='--registry-mirror=http://768e1313.m.daocloud.io |g" /etc/sysconfig/docker
#sed -i 'N;s|\[Service\]\n|\[Service\]\nEnvironmentFile=-/etc/sysconfig/docker\n|g' /usr/lib/systemd/system/docker.service
# sed -i 's|fd://|fd:// $other_args |g' /usr/lib/systemd/system/docker.service
5)重启服务:
# systemctl daemon-reload
# systemctl restart docker
6)现在,我们来验证 Docker 是否正常工作以及为下一步安装Rally做足准备。为此,我们需要下载centos 7镜像。
# docker pull centos:7
7)下一步,我们运行下边的命令来查看镜像,确认镜像是否存在:
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
docker.io/centos 7 eeb3a076a0be Less than a second ago 196.7 MB