【存储测试】cosbench存储性能测试工具

一、前言

参考资料:
https://github.com/intel-cloud/cosbench/blob/master/COSBenchUserGuide.pdf
COSBench测Ceph对象存储:那些网上找不到的细节

1、介绍

cosbench - Cloud Object Storage Beachmark,是Intel开发的一个对象存储基准性能测试工具,支持OpenStack* Swift, Amazon* S3, Amplidata v2.3, 2.5 and 3.1, Scality*, Ceph, CDMI, Google* Cloud Storage, Aliyun OSS对象存储

2、组件

cosbench可以联机测试,主要有以下两个关键组件:

  • driver
    cosbench负载生成器,主要负责工作负载生成,发布针对云对象存储的操作和收集性能统计信息
    可以通过http://{driver-ip}:18088/driver地址访问

  • controller
    cosbench控制器,主要负责协调负载生成器共同执行工作负载,收集来自负载生成器的基准性能测试结果
    可以通过http://{controller-ip}:19088/controller地址访问
    注:controller和driver角色可以部署在同一个节点上

二、安装部署

1、软件包安装

1.1、部署jre环境

下载jre版本包,解压缩至/opt目录下

wget https://javadl.oracle.com/webapps/download/AutoDL?BundleId=242050_3d5a2bb8f8d4428bbe94aed7ec7ae784 -O  jre-8u251-linux-x64.tar.gz
tar -zxvf jre-8u251-linux-x64.tar.gz -C /opt/

配置jre环境变量

echo "export JAVA_HOME=/opt/jre1.8.0_251/" >> /etc/profile
echo "export CLASSPATH=/opt/jre1.8.0_251/lib" >> /etc/profile
echo "export PATH=/opt/jre1.8.0_251/bin:$PATH" >> /etc/profile
source /etc/profile
1.2、安装nmap-ncat

controller和driver之间通信需要依赖nc环境

执行 yum install -y nmap-ncat命令在线安装ncat包

1.3、安装curl

通常情况下,系统默认已经安装curl包
如系统未安装,可通过yum install curl -y命令在线安装

1.4、部署cosbench环境

官方提供的最新版本v0.4.2存在无法启动问题MESSAGE Bundle plugins/cosbench-log4j not found.,具体详见Github-Issues#383
为规避此问题,此处选择的是v0.4.2.c4版本

wget https://github.com/intel-cloud/cosbench/releases/download/v0.4.2.c4/0.4.2.c4.zip
unzip 0.4.2.c4.zip

2、其他调整

2.1、关闭防火墙

使用过程中需要关闭防火墙或者开放指定端口,通过以下任意一种方法均可以

  • 关闭防火墙
    执行systemctl stop firewalld命令即可

  • 开放指定端口
    driver角色需要使用到1808918088端口
    controller角色需要使用到1908919088端口

#开放driver角色服务端口
firewall-cmd --zone=public --add-port=18088/tcp --permanent
firewall-cmd --zone=public --add-port=18089/tcp --permanent
systemctl reload firewalld
#开放controller角色服务端口
firewall-cmd --zone=public --add-port=19088/tcp --permanent
firewall-cmd --zone=public --add-port=19089/tcp --permanent
systemctl reload firewalld
2.2、关闭MD5校验功能

参考Github-Issues#320,基于0.4.2.c4版本,读文件测试过程中会出现无法验证下载文件完整性错误(Unable to verify integrity of data download),导致读取测试任务中断(Terminate),故此处关闭S3的MD5校验功能

修改所有节点0.4.2.c4/cosbench-start.sh配置文件,在java后添加参数-Dcom.amazonaws.services.s3.disableGetObjectMD5Validation=true

[root@node241 0.4.2.c4]# cat cosbench-start.sh | grep java
/usr/bin/nohup java -Dcom.amazonaws.services.s3.disableGetObjectMD5Validation=true  -Dcosbench.tomcat.config=$TOMCAT_CONFIG -server -cp main/* org.eclipse.equinox.launcher.Main -configuration $OSGI_CONFIG -console $OSGI_CONSOLE_PORT 1> $BOOT_LOG 2>&1 &

此处,在测试过程中发现如果不关闭MD5校验功能,实际执行读成功率近乎为0,读性能数据也接近为0;关闭MDS校验功能后读成功率为100%,读性能数据正常展示。
在这里插入图片描述

三、配置使用

cosbench工具使用按照流程可分为以下几个步骤:参数配置服务启动提交测试分析结果
示例使用三个节点联机测试,配置示意如下:

节点主机名 节点IP地址 cosbench角色
node241 66.66.66.241 controller、driver
node242 66.66.66.242 driver
node243 66.66.66.243 driver

1、参数配置

controller和driver依赖不同系统配置来启动服务,在启动controller和driver服务时,需要先行定义角色配置

1.1、controller配置

controller在初始化时读取conf/controller.conf配置文件启动控制器服务

[root@node241 0.4.2.c4]# cat conf/controller.conf
[controller]
concurrency=1
drivers=3
log_level=INFO
log_file=log/system.log
archive_dir=archive

[driver1]
name=driver1
url=http://66.66.66.241:18088/driver

[driver2]
name=driver2
url=http://66.66.66.242:18088/driver

[driver3]
name=driver3
url=http://66.66.66.243:18088/driver
  • [controller]

    • concurrency
      默认值为1,表示可以同时执行的工作负载数量
    • drivers
      默认值为1,表示此controller控制的driver数量
    • log_level
      默认值为INFO,可选值为TRACEDEBUGINFOWARNERROR,表示日志打印等级
    • log_file
      默认值为log/system.log,表示日志文件存放位置
    • archive_dir
      默认值为archive,表示工作负载结果存放位置,当参数值为archive,则工作负载结果存放于0.4.2/archive目录内
  • [driverx]
    当有多个driver时,第{n}个driver命名为[driver{n}]

    • name
      用于标识driver节点的标签,名称可以自定义
    • url
      访问driver节点的地址
1.2、driver配置

driver在初始化时读取conf/driver.conf配置文件启动负载器服务

[root@node241 0.4.2.c4]# cat conf/driver.conf 
[driver]
name=127.0.0.1:18088
url=http://127.0.0.1:18088/driver
  • [driver]
    • name
      用于标识driver节点的标签,名称可以自定义
    • url
      访问driver节点的地址

2、服务启动

2.1、controller启动

在controller角色节点执行以下命令启动controller

[root@node241 0.4.2.c4]# sh start-controller.sh

#检查controller服务启动情况
[root@node241 0.4.2.c4]# lsof -i:19088
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    30012 root   88u  IPv6 184509      0t0  TCP *:19088 (LISTEN)
[root@node241 0.4.2.c4]# ps -aux | grep 30012
root     30012  0.6  4.2 4585852 165528 pts/0  Sl   15:51   0:06 java -Dcosbench.tomcat.config=conf/controller-tomcat-server.xml -server -cp main/org.eclipse.equinox.launcher_1.2.0.v20110502.jar org.eclipse.equinox.launcher.Main -configuration conf/.controller -console 19089

注:若节点需要同时启动controller和driver角色,也可以使用sh start-all.sh命令启动(start-all.sh=start-driver.sh+start-controller.sh

2.2、driver启动

在所有driver角色节点执行以下命令启动driver

[root@node242 0.4.2.c4]# sh start-driver.sh

#检查driver服务启动情况
[root@node242 0.4.2.c4]# lsof -i:18088
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    23102 root  100u  IPv6 161668      0t0  TCP *:18088 (LISTEN)
[root@node242 0.4.2.c4]# ps -aux | grep 23102
root     23102  0.2  5.2 4597000 203344 pts/0  Sl   15:12   0:07 java -Dcosbench.tomcat.config=conf/driver-tomcat-server.xml -server -cp main/org.eclipse.equinox.launcher_1.2.0.v20110502.jar org.eclipse.equinox.launcher.Main -configuration conf/.driver -console 18089

3、提交测试

可以使用以下两种方法提交测试(示例测试参数文件为config.xml)

  • 使用命令行接口
    在controller节点cosbench目录下,使用sh cli.sh submit {test.xml}命令提交测试
[root@node241 0.4.2.c4]# sh cli.sh submit conf/config.xml
  • 使用web控制台
    web访问控制台地址http://{controller-ip}:19088/controller,点击submit new workloadsurl,提交测试文件即可
    在这里插入图片描述

4、分析结果

  • 使用命令行接口
    在controller节点cosbench目录下,使用sh cli.sh info命令查看当前运行任务

  • 使用web控制台
    web访问控制台地址http://{controller-ip}:19088/controller,点击对应任务view detailsurl,查看当前运行状态及结果
    在这里插入图片描述

四、选择表达式

1、概述

在测试参数文件中,authstoragestoragework定义中支持config属性配置,该属性包含一个可选的参数列表(使用键值对格式表示,如"a=a_val;b=b_val")
在这里插入图片描述
在这里插入图片描述

  • 在参数列表中,常用的键包括containersobjectssizes,用来指定如何选择容器、对象、大小

2、选择器

表达式 格式 注释
constant c(number) 仅使用指定数字 一般在常用于对象大小定义,如sizes=c(512)KB,则表示对象大小为512KB
uniform u(min, max) 从(min,max)中均匀选择 u(1,100)表示从1到100中均匀地选取一个数字,选择是随机的,有些数字可能被选中多次,有些数字永远不会被选中
range r(min,max) 从(min,max)递增选择 r(1,100)表示从1到100递增地选取一个数字(每个数字只被选中一次),这通常被用于特殊work(init、prepare、cleanup、dispose)
sequential s(min,max) 从(min,max)递增选择 s(1,100)表示从1到100递增地选取一个数字(每个数字只被选中一次),这通常被用于常规work
histogram h(min1|max1|weight1,…) 它提供了一个加权直方图生成器,要配置它,需要指定一个逗号分隔的桶列表,其中每个桶由一个范围和一个整数权重定义。例如: h(1|64|10,64|512|20,512|2048|30)KB 其中定义了一个配置文件,其中(1,64)KB被加权为10,(64,512)KB被加权为20,(512,2048)KB被加权为30.权重之和不一定是100

注:一般常用的选择器通常为c(number)、u(min,max)、s(min,max)

3、参数组合

基于元素类型和工作类型的选择器有额外的约束,下面两个表列出了允许的组合

  • 元素类型选择器
Key constant (c(num
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值