COSBench是一个测试云对象存储系统的分布式基准测试工具,有Driver和Controller两个关键组件组成,本文简要介绍通过S3接口使用COSBench测试Ceph的RGW。
ceph集群操作系统版本:centos 7.4,内核 3.10.0
ceph集群版本:Luminous版(版本号:12.2.10)
集群规模:3台服务器
副本数:3
在6台测试客户端创建测试任务,其中10.11.16.47作为controller,10.11.16.48-52作为driver,测试集群的只读性能。
wget https://github.com/intel-cloud/cosbench/releases/download/v0.4.2.c4/0.4.2.c4.zip unzip 0.4.2.c2.zip 复制代码
yun install java curl 复制代码
cd 0.4.2.c4 chmod +x *.sh 复制代码
unset http_proxy 复制代码
[root@conf]# cat controller.conf [controller] drivers = 5 log_level = INFO log_file = log/system.log archive_dir = archive [driver1] name = driver1 url = http://10.11.16.48:18088/driver [driver2] name = driver2 url = http://10.11.16.49:18088/driver [driver3] name = driver3 url = http://10.11.16.50:18088/driver [driver4] name = driver4 url = http://10.11.16.51:18088/driver [driver5] name = driver5 url = http://10.11.16.52:18088/driver 复制代码
[driver] name=driver1 url=http://10.11.16.49:18088/driver 复制代码
sh start-all sh //Controller节点执行 sh start-driver.sh //每个Driver节点执行 复制代码
验证
默认情况下,COSBench的Driver监听端口18088,COSBench的Controller监听端口19088。 登录http://10.11.16.47:19088/controller/这里主要简单介绍一下本文对应的配置文件,具体各配置参数说明需要看COSBench的PDF,可以在COSBench官方GitHub中找到。 在conf目录下新建test.conf文件,配置文件格式如下:
<?xml version="1.0" encoding="UTF-8" ?> <workload name="test_read_only" description="this is a test"> <storage type="s3" config="accesskey=******;secretkey=******;endpoint=域名:端口号;path_style_access=true" /> <workflow> <workstage name="init"> <work type="init" workers="1" config="cprefix=zmtest;containers=r(1,10)" /> </workstage> <workstage name="prepare"> <work type="prepare" workers="1" config="cprefix=zmtest;containers=r(1,10);objects=r(1,100);sizes=c(64)KB" /> </workstage> <workstage name="main"> <work name="main" workers="30" runtime="300"> <operation type="read" ratio="0" config="cprefix=zmtest;containers=u(1,10);objects=u(1,100)" /> <operation type="write" ratio="100" config="cprefix=zmtest;containers=u(1,10);objects=u(101,200);sizes=c(100)KB" /> </work> </workstage> <workstage name="cleanup"> <work type="cleanup" workers="1" config="cprefix=zmtest;containers=r(1,10);objects=r(1,200)" /> </workstage> <workstage name="dispose"> <work type="dispose" workers="1" config="cprefix=zmtest;containers=r(1,10)" /> </workstage> </workflow> </workload> 复制代码
主要分为5个阶段,init阶段负责顺序创建10个空的bucket,bucket前缀为zmtest;
prepare阶段负责向每个bucket中写入100个对象,每个对象大小为64KB,r(1,10)表示从1到10递增;
main阶段负责测试读和写,workers表示并发数,runtime表示运行时间,type表示类型,ratio表示读写比例。由于本文测试只读性能,所以read的比例为100,write为0。u(1,10)表示随机1到10。
cleanup阶段清理object;
dispose阶段清理bucket。
如果我们需要反复测试同一批数据,可以在后续测试总只留下main阶段,其余可以删除。
测试方法有两种,一种是将写好的配置文件通过web的submit new workloads链接提交即可,另一种是执行sh脚本,这里简单介绍执行sh脚本过程。
在Controller节点上执行:
[root@0.4.2.c4]# pwd /root/0.4.2.c4 [root@0.4.2.c4]# sh cli.sh submit conf/test.conf Accepted with ID: w1 复制代码上图参数和之前的不一样,只是为了说明情况。各参数说明如下:Op-type - 操作类型Op-Count - 操作总数Byte-Count - 操作产生的ByteAvg-ResTime - 操作产生的平均时间Avg-ProceTime - 操作的平均时间Throughput - 吞吐量,主要反映了操作的并发程度Bandwidth - 带宽
Succ-Ratio - 操作成功率