第四期
OpenStack 架构师 唐杰
内容介绍 目录如下:
OpenStack功能测试详解(一)
OpenStack性能测试详解(二)
OpenStack功能测试详解
在当前开源技术领域,OpenStack已然成为最成功的开源技术,由于开源技术的应用,让很多初创企业看到了未来的方向,也由于开源技术的应用解决了厂商绑定的问题,缩短了企业的创新时间。基于开源技术能够搭建出更加开放、互操作性更强的平台。到目前为止,约有180多个国家的8万多名工程师参与到openstack的开发社区中,在世界范围内基于OpenStack构建了一套又一套云平台,时时刻刻服务于我们的各行各业。
虽然都是基于OpenStack,但又各有不同。OpenStack中关于计算、存储、网络、安全、负载均衡、容器、监控等等配置多达上千项,每一组件又可以和不同的后端实现对接,各种后端实现的配置也有很多技巧。于是,本是同根生的OpenStack,经过不同的工程师、采用不同方案进行部署和调试,便产生了不同的变化,有的OpenStack集群专注于提供高并发的网络服务,有的集群专注于提供海量数据存储与访问,还有的可能擅长其它方面的事情。
为了能充分了解不同集群的特性,有针对地对OpenStack进行功能和性能的测试是十分有必要的。测试让我们了解一个OpenStack环境的极限和瓶颈,了解不同OpenStack环境之间是否具有良好的互操作性,让我们知道在云平台建设上的投资是否物有所值,是否有进一步改进的地方。
本文分别从功能测试和性能测试两个方面来介绍,首先首先是功能测试方面,主要采用的是OpenStack官方所推荐的互操作性测试RefStack。
互操作性测试的目的
互操作性测试是OpenStack愿景落地的重要步骤,通过互操作性测试认证,OpenStack基金会向OpenStack生态圈的成员提出了一系列的要求,从而确保OpenStack市场中不同的产品能够实现高水平的互操作性。 2014年11月,OpenStack董事会提出DefCore(OpenStackCoreDefinition)项目。
该项目目的是认定厂商(Vendor)的部署为正确合法的包含OpenStack的最基本功能。OpenStack希望基于这一项目实现不同OpenStack商业解决方案之间的互操作性。基于OpenStack的云计算运营商可以选择在其环境中部署除OpenStack基本组件外的许多其它组件,但需要满足OpenStack官方定义的最基本功能。
目前,最基本的功能包括计算和对象存储,其中计算中包括了基本的计算、网络、存储相关的要求。根据OpenStack官方网站显示,OpenStack互操作性测试包括三项不同的官方认证,包含OpenStack软件的产品都可以申请运行这些测试项,通过了就可以获得“OpenStack Powered”官方标识。这三项官方的认证是:OpenStackPowered Platform、OpenStack PoweredCompute、OpenStack PoweredObject Storage。其中,OpenStack PoweredPlatform的测试要求包含了OpenStackPowered Compute和OpenStack PoweredObject Storage的测试要求。
互操作性测试工具RefStack
RefStack是一个用于OpenStack云之间的互操作性测试工具集,由服务器和客户端组成。RefStack服务器通过API收集来自不同云供应商的互操作性测试数据,并使用Web展示用户上传的数据并查看DefCOre定义的基本功能的测试结果。RefStack客户端封装了OpenStackTempest测试框架,将根据参数运行Tempest API测试,并按照RefStack的定义来格式化测试结果(一般是json),最后将数据上传到RefStack服务器。要进行测试,只需在测试环境安装refstack-client客户端工具即可,Tempest会自动安装,支持的操作系统包括centos、ubuntu等。
测试流程
(1) 环境准备
* 安装git
yum -y install git
* 获取RefStack-Client
git clonehttps://github.com/openstack/refstack-client
* 安装测试工具
cd refstack-client;
./setup_env
(2) 执行测试
* 在被测试的OpenStack环境中创建相关资源:
用户:创建两个不同的租户test1、test2
镜像:创建两个用于创建云主机的镜像,推荐使用cirrso
网络:创建一个可以被所有租户共享的网络
* 创建refstack调用Tempest进行测试的配置文件:tempest.conf。配置文件中包涵了Tempest执行所有测试用例所需要的资源配置信息,包括Keystone、Nova、Glance等服务。
下面给出一份笔者使用过的tempest.conf配置文件,供大家参考。
[compute]
image_ref = c3947503-e067-4ffb-b1bf-cbde04e9cd06
image_ref_alt =39d9e265-17fb-4fd0-862a-207127747d68
flavor_ref =8cde4ef4-4328-4d3a-bd29-fe1765591cce
flavor_ref_alt =085ab5d1-a242-42a8-af0d-41d1f31fb4f9
fixed_network_name = Admin-Net
volume_device_name = vdb
[identity]
auth_version = v3
uri_v3 = http://10.7.1.100:35357/v3
uri = http://10.7.1.100:35357/
admin_password = 1234qwER
admin_tenant_name = admin
admin_username = admin
admin_domain_name = default
alt_password = 1234qwer
alt_tenant_name = refstack01
alt_username = refstack01
alt = default
password = 1234qwer
tenant_name = refstack02
username = refstack02
domain_name = default
use_dynamic_credentials = true
region = RegionOne
[default]
log_file = tempest.log
log_dir = /tmp/
debug = true
[compute-feature-enabled]
resize = true
[identity-feature-enabled]
api_v2 = true
[validation]
run_validation = true
security_group = true
security_group_rules = true
connect_method = fixed
auth_method = keypair
ip_version_for_ssh = 4
ping_timeout = 200
connect_timeout = 60
ssh_timeout =400
image_ssh_user = cirros
image_ssh_password = cubswin:)
ping_size = 56
ping_count =1
network_for_ssh = Admin-Net
[network]
catalog_type=network
tenant_network_cidr = 172.16.20.0/24
tenant_network_mask_bits = 28
tenant_network_reachable = false
public_network_id =f649913e-a5a2-4c56-a038-7cc70b8545d3
dns_servers = 114.114.114.114
public_router_id =bbcf8001-a1fa-4921-8694-22dd7014a7f4
shared_physical_network = true
[service_available]
neutron = true
*切换到refstack-client目录下运行测试程序
可以先单独运行一个测试用例,比如这里使用管理员账户创建云主机进行测试:
./refstack-client test -c tempest.conf -vv-- --regex \
如果能顺利通过,则可以按照OpenStack组织定义的三类测试用例列表进行测试:Platfrom、Compute、Object Storage,下面命令进行Compute测试列表(2017.09版)的测试:
/refstack-client test -c tempest.conf-vv --test-list \
"https://refstack.openstack.org/api/v1/guidelines/2017.09/tests?target=compute&type=required&alias=true&flag=true"
完成测试后,能看到如下的输出
(3) 测试结果提交
* 账号注册
需要将结果提交到RefStack,首先需要注册相关的账号,RefStack和OpenStack官网是一套账号体系,所以注册openstack官网账号即可:https://www.openstack.org/join/register
* 密钥和签名
在运行refstack-client的主机上,生成密钥对:
ssh-keygen -t rsa -b 4096 -C“"
使用refstack-client和私钥生成签名:
./refstack-client sign ~/.ssh/id_rsa
上传签名和公钥到RefStack服务器:
https://refstack.openstack.org/#/profile
* 使用refstack-client上传指定结果到refstack服务器
./refstack-client uploadrefstack-client/.tempest/.testrepository/56.json --url \
https://refstack.openstack.org/api -i~/.ssh/id_rsa
(4) 提交认证申请
最后,可根据用户的实际需求,向OpenStack基金会提交认证商标申请。
https://www.openstack.org/brand/openstack-powered/
关于OpenStack互操作性测试的内容就到此为止了,通过了互操作性测试,可以认为被测试的基于OpenStack的云平台为正确合法的包含OpenStack的基本功能的部署,能够实现和其它基于OpenStack的解决方案之间的互操作需求。
下篇文章中我们会详细介绍基于Rally的对OpenStack的性能测试。
本期「一起学习云计算」就是以上这些
下期预告:OpenStack性能测试详解(二)
领取专属 10元无门槛券
私享最新 技术干货