美文网首页
cosbench通过aws-S3协议测试对象存储服务

cosbench通过aws-S3协议测试对象存储服务

作者: 时彬斌 | 来源:发表于2019-05-16 16:45 被阅读0次

    COSBench是Intel团队基于java开发,对云存储的测试工具,全称是Cloud object Storage Bench,本文主要针对的是支持aws-s3协议的存储服务进行测试,包括seaweedfs、以及华为云存储。
    --配置信息基于xml配置,也可以在cosbench的
    github地址:https://github.com/intel-cloud/cosbench
    本文下载的是最新的0.4.2.c4版本,可以根据自己的需求去下载github上的相应的release版本, 本文所说的cosbench的下载地址: https://github.com/intel-cloud/cosbench/releases/download/v0.4.2.c4/0.4.2.c4.zip
    也可以直接在girhub的release目录下下载。下载后解压如下所示:

    0.4.2.c4/
    0.4.2.c4.zip
    total 4132
    drwxr-xr-x 15 root root    4096 May 15 11:34 ./
    drwxr-xr-x  3 root root    4096 May 13 11:07 ../
    -rw-r--r--  1 root root  348912 Jul  9  2014 3rd-party-licenses.pdf
    drwxr-xr-x 34 root root    4096 May 16 12:01 archive/
    -rw-r--r--  1 root root    5266 Apr 27  2016 BUILD.md
    -rw-r--r--  1 root root      10 Jun 15  2016 BUILD.no
    -rw-r--r--  1 root root    7178 Apr 27  2016 CHANGELOG
    -rw-r--r--  1 root root    2639 Jul  9  2014 cli.sh
    drwxr-xr-x  4 root root    4096 May 16 14:40 conf/
    -rw-r--r--  1 root root  985318 Jul  9  2014 COSBenchAdaptorDevGuide.pdf
    -rw-r--r--  1 root root    2974 May 13 15:08 cosbench-start.sh
    -rw-r--r--  1 root root    1423 Dec 30  2014 cosbench-stop.sh
    -rw-r--r--  1 root root 2516640 Apr 27  2016 COSBenchUserGuide.pdf
    drwxr-xr-x  4 root root    4096 Jun 17  2016 ext/
    -rw-r--r--  1 root root      16 May 15 11:34 ip-port.list
    drwxr-xr-x  5 root root    4096 Jun 17  2016 javadoc/
    drwxr-xr-x  2 root root    4096 Jun 17  2016 lib-src/
    -rw-r--r--  1 root root     578 Jul  9  2014 LICENSE
    drwxr-xr-x  2 root root    4096 Jun 17  2016 licenses/
    drwxr-xr-x  3 root root    4096 May 15 11:34 log/
    drwxr-xr-x  2 root root    4096 May 15 11:34 main/
    -rw-r--r--  1 root root     478 Jul  9  2014 NOTICE
    drwxr-xr-x  4 root root    4096 Jun 17  2016 osgi/
    -rw-r--r--  1 root root  201244 Jul  9  2014 pkg.lst
    -rw-r--r--  1 root root    2182 Apr 27  2016 README.md
    drwxr-xr-x  2 root root    4096 Jun 17  2016 scripts/
    -rw-r--r--  1 root root     131 May 16 11:54 start
    -rw-r--r--  1 root root     716 Jul  9  2014 start-all.bat
    -rw-r--r--  1 root root     727 Apr 27  2016 start-all.sh
    -rw-r--r--  1 root root     788 Jul  9  2014 start-controller.bat
    -rw-r--r--  1 root root    1062 Jul  9  2014 start-controller.sh
    -rw-r--r--  1 root root     783 Jul  9  2014 start-driver.bat
    -rw-r--r--  1 root root    1910 Apr 27  2016 start-driver.sh
    -rw-r--r--  1 root root     127 May 16 12:01 stop
    -rw-r--r--  1 root root     724 Apr 27  2016 stop-all.sh
    -rw-r--r--  1 root root     809 Jul  9  2014 stop-controller.sh
    -rw-r--r--  1 root root    1490 Apr 27  2016 stop-driver.sh
    -rw-r--r--  1 root root     278 Apr 27  2016 TODO.md
    -rw-r--r--  1 root root       5 Apr 27  2016 VERSION
    -rw-r--r--  1 root root     677 Jul  9  2014 web.bat
    drwxr-xr-x  3 root root    4096 Jun 17  2016 work/
    drwxr-xr-x  5 root root    4096 May 13 11:09 workloads/
    drwxr-xr-x  3 root root    4096 Jun 17  2016 workspace/
    

    基本概念介绍,可以参看上图中的COSBenchUserGuide.pdf 文件:
    下面我们开始测试之旅吧:
    进入conf目录下:

    -rw-r--r--  1 root root 2000 Jul  9  2014 ampli-config-sample.xml
    -rw-r--r--  1 root root 1189 Jul  9  2014 cdmi-base-config-sample.xml
    -rw-r--r--  1 root root 1537 Jul  9  2014 cdmi-swift-config-sample.xml
    -rw-r--r--  1 root root  914 May 16 11:54 config.xml
    drwxr-xr-x  3 root root 4096 May 15 11:34 .controller/
    -rw-r--r--  1 root root  163 Apr  8  2015 controller.conf
    -rw-r--r--  1 root root  439 Jul  9  2014 controller-tomcat-server.xml
    -rw-r--r--  1 root root  168 Jul  9  2014 cosbench-users.xml
    -rw-r--r--  1 root root 2341 Jul  9  2014 delay-stage-config-sample.xml
    drwxr-xr-x  3 root root 4096 May 15 11:34 .driver/
    -rw-r--r--  1 root root   64 May 15 11:34 driver_1.conf
    lrwxrwxrwx  1 root root   13 May 15 11:34 driver.conf -> driver_1.conf
    -rw-r--r--  1 root root   55 Apr 27  2016 driver_template.conf
    -rw-r--r--  1 root root  439 May 15 11:34 driver-tomcat-server_1.xml
    -rw-r--r--  1 root root  439 Apr  7  2015 driver-tomcat-server2.xml
    -rw-r--r--  1 root root  439 Apr 27  2016 driver-tomcat-server_template.xml
    lrwxrwxrwx  1 root root   26 May 15 11:34 driver-tomcat-server.xml -> driver-tomcat-server_1.xml
    -rw-r--r--  1 root root 1337 Jul  9  2014 filewriter-config-explanation.txt
    -rw-r--r--  1 root root 1339 Jan 27  2016 gcs-config-sample.xml
    -rw-r--r--  1 root root  846 Jan 27  2016 gcs-service-account-sample.json
    -rw-r--r--  1 root root 1555 Jul  9  2014 hashcheck.xml
    -rw-r--r--  1 root root 1078 Jul  9  2014 librados-config-sample.xml
    -rw-r--r--  1 root root 1510 Jul  9  2014 librados-sample-annotated.xml
    -rw-r--r--  1 root root 1648 Jul  9  2014 noop-config.xml
    -rw-r--r--  1 root root 1543 Jul  9  2014 noop-read-config.xml
    -rw-r--r--  1 root root 1571 Jul  9  2014 noop-write-config.xml
    -rw-r--r--  1 root root 4647 Jun  8  2016 openio-config-sample.xml
    -rw-r--r--  1 root root 2174 Jul  9  2014 reusedata.xml
    -rw-r--r--  1 root root 1253 May 14 14:37 s3-config-sample.xml
    -rw-r--r--  1 root root 1855 Jul  9  2014 splitrw.xml
    -rw-r--r--  1 root root 1127 Jul  9  2014 sproxyd-config-sample.xml
    -rw-r--r--  1 root root 1716 Apr 27  2016 swift-config-sample.xml
    -rw-r--r--  1 root root 1630 Jul  9  2014 workload-config.xml
    -rw-r--r--  1 root root 1038 May 13 16:01 workload-s3-config.xml
    

    如上图所示,我们可以看到cosbench已经给我们提供了和你丰富的测试样例,本文主要是对S3协议的测试就看到了s3-config-sample.xml文件,我们就编写一个S3的测试脚本:

    <?xml version="1.0" encoding="UTF-8" ?>
    <workload name="s3-sample" description="sample benchmark for s3">
    
      <storage type="s3" config="accesskey=xxxx;secretkey=xxxxx;endpoint=http://192.168.1.1" />
    
      <workflow>
        //初始化创建一个桶信息 cprefix 代表桶名的前缀,conttainers和前缀拼接成桶的唯一id。多个桶时r(1,n) n代表桶的个数理论上是100以内 s3的要求
        <workstage name="init">
          <work type="init" workers="1" config="cprefix=bucketname-;containers=r(1,1)" />
        </workstage>
    //向桶里放大小为sizes的对象信息,oprefix同样代表对象名的前缀,objects和oprefix拼成对象的唯一标识
        <workstage name="putobject">
          <work name="putobject" workers="200" totalOps="300000">
            <operation type="write" ratio="100" config="cprefix=bucketname-;containers=r(1,1);oprefix=objects-50k-1-;objects=s(1,300000);sizes=c(50)KB" />
          </work>
        </workstage>
    
      </workflow>
    
    </workload>
    
    

    : 对于putobject的config编写要注意,s3的bucketname 和objectid都是唯一的,当对同一个对象(bucketname和objectid一样)进行反复put操作代表的是更新操作,测试的内容就发生了根本变化,
    故每次测试时,要不就是重新填写桶的名称,要不就修改对象的前缀保证唯一性,不会影响我们的测试结果此处我们修改对象的前缀比如
    objects-50k-1-
    若是下次测试是100k的就把oprefix=objects-100k-1-
    若是要重新测试100k的就把oprefix=objects-100k-2-
    目的是保证测试的时候不受objectid+bucketname一样导致数据从新建操作变成了更新操作。
    最后执行测试:
    1.启动cosbench,进入上述的0.4.2.c4/ 目录下,此处为ubuntu系统故使用了一下命令:

    0.4.2.c4# sh start-all.sh
    Launching osgi framwork ...
    Successfully launched osgi framework!
    Booting cosbench driver ...
    Starting    cosbench-log_0.4.2    [OK]
    Starting    cosbench-tomcat_0.4.2    [OK]
    Starting    cosbench-config_0.4.2    [OK]
    Starting    cosbench-http_0.4.2    [OK]
    Starting    cosbench-cdmi-util_0.4.2    [OK]
    Starting    cosbench-core_0.4.2    [OK]
    Starting    cosbench-core-web_0.4.2    [OK]
    Starting    cosbench-api_0.4.2    [OK]
    Starting    cosbench-mock_0.4.2    [OK]
    Starting    cosbench-ampli_0.4.2    [OK]
    Starting    cosbench-swift_0.4.2    [OK]
    Starting    cosbench-keystone_0.4.2    [OK]
    Starting    cosbench-httpauth_0.4.2    [OK]
    Starting    cosbench-s3_0.4.2    [OK]
    Starting    cosbench-librados_0.4.2    [OK]
    Starting    cosbench-scality_0.4.2    [OK]
    Starting    cosbench-cdmi-swift_0.4.2    [OK]
    Starting    cosbench-cdmi-base_0.4.2    [OK]
    Starting    cosbench-driver_0.4.2    [OK]
    Starting    cosbench-driver-web_0.4.2    [OK]
    Successfully started cosbench driver!
    Listening on port 0.0.0.0/0.0.0.0:18089 ...
    Persistence bundle starting...
    Persistence bundle started.
    ----------------------------------------------
    !!! Service will listen on web port: 18088 !!!
    ----------------------------------------------
    
    ======================================================
    
    Launching osgi framwork ...
    Successfully launched osgi framework!
    Booting cosbench controller ...
    Starting    cosbench-log_0.4.2    [OK]
    Starting    cosbench-tomcat_0.4.2    [OK]
    Starting    cosbench-config_0.4.2    [OK]
    Starting    cosbench-core_0.4.2    [OK]
    Starting    cosbench-core-web_0.4.2    [OK]
    Starting    cosbench-controller_0.4.2    [OK]
    Starting    cosbench-controller-web_0.4.2    [OK]
    Successfully started cosbench controller!
    Listening on port 0.0.0.0/0.0.0.0:19089 ...
    Persistence bundle starting...
    Persistence bundle started.
    ----------------------------------------------
    !!! Service will listen on web port: 19088 !!!
    ----------------------------------------------
    

    2.将修改的测试用例加入到测试计划中

    sh cli.sh submit conf/config.xml
    #出现下列内容代表成功
    Accepted with ID: w54
    

    3.查看测试内容
    可以在浏览器中输入:http://ip:19088/controller/index.html
    ip: 为启动cosbench的ip地址
    查看测试信息和测试结果,以及在运行中的测试。
    在这个界面可以上传测试计划,就是将编写好的xml文件上传到测试服务器上并执行,如下图所示:

    红色框内
    测试结果都会保存在服务端的archive/ 目录下,供你随时翻阅。

    4.停止服务

    0.4.2.c4# sh stop-all.sh
    Stopping cosbench controller ...
    Successfully stopped cosbench controller.
    
    ======================================================
    
    127.0.0.1:18088
    18088
    Stopping cosbench driver ...
    Successfully stopped cosbench driver.
    
    1. read 异常问题修复:
     com.amazonaws.AmazonClientException: Unable to verify integrity of data download.  Client calculated content hash didn't match hash calculated by Amazon S3.  The data may be corrupt.
            at com.amazonaws.services.s3.internal.DigestValidationInputStream.validateMD5Digest(DigestValidationInputStream.java:79)
            at com.amazonaws.services.s3.internal.DigestValidationInputStream.read(DigestValidationInputStream.java:61)
            at com.amazonaws.internal.SdkFilterInputStream.read(SdkFilterInputStream.java:72)
            at com.amazonaws.services.s3.model.S3ObjectInputStream.read(S3ObjectInputStream.java:155)
            at com.amazonaws.services.s3.model.S3ObjectInputStream.read(S3ObjectInputStream.java:147)
            at com.intel.cosbench.driver.operator.Reader.copyLarge(Reader.java:120)
            at com.intel.cosbench.driver.operator.Reader.doRead(Reader.java:92)
            at com.intel.cosbench.driver.operator.Reader.operate(Reader.java:69)
            at com.intel.cosbench.driver.operator.AbstractOperator.operate(AbstractOperator.java:76)
            at com.intel.cosbench.driver.agent.WorkAgent.performOperation(WorkAgent.java:197)
            at com.intel.cosbench.driver.agent.WorkAgent.doWork(WorkAgent.java:177)
            at com.intel.cosbench.driver.agent.WorkAgent.execute(WorkAgent.java:134)
            at com.intel.cosbench.driver.agent.AbstractAgent.call(AbstractAgent.java:44)
            at com.intel.cosbench.driver.agent.AbstractAgent.call(AbstractAgent.java:1)
            at java.util.concurrent.FutureTask.run(FutureTask.java:262)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
            at java.lang.Thread.run(Thread.java:745)
    

    出现以上异常的情况,是因为S3的sdk对获取到的大小进行了校验,关闭校验即可满足:
    修改cosbench-start.sh 文件,修改如下:

     # 1. 先通过stop-all.sh关闭cosbench服务
     # 2. 增加参数 -Dcom.amazonaws.services.s3.disableGetObjectMD5Validation=true 
     /usr/bin/nohup java -Dcosbench.tomcat.config=$TOMCAT_CONFIG -Dcom.amazonaws.services.s3.disableGetObjectMD5Validation=true -server -cp main/*org.eclipse.equinox.launcher.Main -configuration $OSGI_CONFIG -console $OSGI_CONSOLE_PORT 1> $BOOT_LOG 2>&1 &
    # 3. 修改完成后保存重启服务
    

    相关文章

      网友评论

          本文标题:cosbench通过aws-S3协议测试对象存储服务

          本文链接:https://www.haomeiwen.com/subject/gxhiaqtx.html