OpenStack Benchmark - Rally
作为以基于OpenStack的云平台的基准测试工具 -- Rally, 其功能不仅是测试云的性能&&稳定性,
还可以安装OpenStack,以及以良好的表现形式(web 页面)展现测试结果。
关于Rally的更多介绍可以参考 Rally wiki。
- Rally 安装
git clone https://github.com/stackforge/rally.git && cd rally
./install_rally.sh --target /home/rally #install Rally in a virtualenv in /home/rally
- Rally 初始化
可以把Rally理解为OpenStack
的一个client,首先是通过设置一些环境变量使client与OpenStack
的Keystone
服务进行通信。
为了方便,(1)可以把这些变量放到一个脚本文件中,该脚本文件一般称为openrc 文件,比如:
export OS_PROJECT_DOMAIN_ID=default
export OS_USER_DOMAIN_ID=default
export OS_PROJECT_NAME=admin
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http://[KeystoneService_Host_IP]:35357/v3
也可以(2)把这些变量存放到一个json文件中:
{
"type": "ExistingCloud",
"auth_url": "http://[KeystoneService_Host_IP]:5000/v2.0/",
"region_name": "RegionOne",
"endpoint_type": "public",
"admin": {
"username": "admin",
"password": "password",
"tenant_name": "demo"
},
"https_insecure": False,
"https_cacert": "",
}
创建测试环境:
rally deployment create --filename xxx.json --name existing
或者
. openrc admin admin
rally deployment create --fromenv --name=existing
完成之后,可以通过rally deployment check/list/destroy
命令检查测试环境是否成功等其他事情。
- Rally 测试
Rally本身提供了丰富的测试用例,保存在samples/tasks/scenarios/
目录下。我们可以按照自己的需求方便地扩展用例,将测试用例以JSON的格式保存。
rally task start samples/tasks/scenarios/nova/boot-and-delete.json
一个一个执行比较慢,如果想一次性执行完,可以参考下面的脚本让多个脚本自动运行。
CASESDIR="/home/rally/testCases"
RESULTDIR="/home/rally/testResults"
for myfile in ${CASESDIR}/*; do
myfile_name=$(basename -s .json "$myfile")
sleep 5
rally -v task start $myfile > $RESULTDIR/$myfile_name.result
sleep 10
done
注意事项
- 虽然Rally作为一个轻量级的服务运行(没有后台进程),仍然建议把Rally运行在一台单独的机器上,
而不是云系统中的某个物理节点上,这样测试环境不影响测试对象系统。- 如果Rally运行在单独一台机器上,必须事先修改其
/etc/hosts
文件,使其能够正确解析controller
的地址,
因为我们安装OpenStack的时候,节点之间的通信是通过主机名而不是IP地址,否则测试过程中会出现无法连接的错误。