一、前言
参考资料:
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角色需要使用到18089及18088端口
controller角色需要使用到19089及19088端口
#开放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,可选值为TRACE、DEBUG、INFO、WARN、ERROR,表示日志打印等级 - log_file
默认值为log/system.log,表示日志文件存放位置 - archive_dir
默认值为archive,表示工作负载结果存放位置,当参数值为archive,则工作负载结果存放于0.4.2/archive目录内
- concurrency
-
[driverx]
当有多个driver时,第{n}个driver命名为[driver{n}]- name
用于标识driver节点的标签,名称可以自定义 - url
访问driver节点的地址
- name
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节点的地址
- name
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、概述
在测试参数文件中,auth、storage、storage、work定义中支持config属性配置,该属性包含一个可选的参数列表(使用键值对格式表示,如"a=a_val;b=b_val")
在这里插入图片描述

- 在参数列表中,常用的键包括containers、objects、sizes,用来指定如何选择容器、对象、大小
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 |
|---|

最低0.47元/天 解锁文章
1293

被折叠的 条评论
为什么被折叠?



