性能测试详解(一)

第四期

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性能测试详解(二)

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171227G0OBNM00?refer=cp_1026

扫码关注云+社区