cosbench的安装与集群中使用
cosbench的安装与集群中使用
1.安装
# 安装JDK
[root@k8s-01 ~]# yum install java nmap-ncat
# 通过wget下载,或者直接通过浏览器输入下面的链接下载
[root@k8s-01 ~]# wget https://github.com/intel-cloud/cosbench/releases/download/v0.4.2.c4/0.4.2.c4.zip
# 解压
[root@k8s-01 ~]# unzip 0.4.2.c4.zip
# 解压后文件说明
[root@k8s-01 ~]# cd 0.4.2.c4
[root@k8s-01 0.4.2.c4]# ls -al *.sh
-rw-r--r-- 1 root root 2639 Jul 9 2014 cli.sh # munipulate workload through command line
-rw-r--r-- 1 root root 2944 Apr 27 2016 cosbench-start.sh # start internal scripts called by above scripts
-rw-r--r-- 1 root root 1423 Dec 30 2014 cosbench-stop.sh # stop internal scripts called by above scripts
-rw-r--r-- 1 root root 727 Apr 27 2016 start-all.sh # start both controller and driver on current node
-rw-r--r-- 1 root root 1062 Jul 9 2014 start-controller.sh # start controller only on current node
-rw-r--r-- 1 root root 1910 Apr 27 2016 start-driver.sh # start driver only on current node
-rw-r--r-- 1 root root 724 Apr 27 2016 stop-all.sh # stop both controller and driver on current node
-rw-r--r-- 1 root root 809 Jul 9 2014 stop-controller.sh # stop controller olny on current node
-rw-r--r-- 1 root root 1490 Apr 27 2016 stop-driver.sh # stop diriver only on current node
2.使用
1.启动
启动前
# 删除http_proxy环境变量
[root@k8s-01 0.4.2.c4]# unset http_proxy
启动 #注意要在cosbench解压之后的目录下进行操作,因为start-all.sh 中的变量获取的是相对路径
[root@k8s-01 0.4.2.c4]# sh start-all.sh
绝对路径启动
[root@k8s-01 0.4.2.c4]# cd /root/cosbench; sh start-all.sh
停止所有服务
sh stop-all.sh
杀死进程
pkill -9 cosbench
2.查看是否启动
# 查看java进程
[root@k8s-01 0.4.2.c4]# ps -ef |grep java
root 2209528 1 1 11:13 pts/5 00:00:05 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
root 2209784 1 1 11:13 pts/5 00:00:05 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
root 2220882 2134956 0 11:21 pts/5 00:00:00 grep --color=auto java
# ip访问地址
http://${IP}:19088/controller/
3.运行配置文件
[root@k8s-01 0.4.2.c4]# sh cli.sh submit s3-config-sample.xml
Accepted with ID: w1
4.名词解释
-
Op-Type : 操作类型
-
Op-Count : 操作总数
-
Byte-Count : 操作产生的 Byte
-
Avg-ResTime : 操作产生的平均时间
-
Avg-ProcTime : 操作的平均时间,这个是主要的延时参考,它反映了平均每次请求的时延,
注:此处的值由总操作成功请求数除以总运行时间计算而来
-
Throughput : 吞吐量,主要反映了操作的并发程度,也是重要的参考
注:此处数据量进制换算跟实际有所不同 (1 MB = 1000 × 1000 bytes),故测试的性能值要高于实际值
-
Bandwidth : 带宽,反映了操作过程中的平均带宽情况
-
Succ-Ratio : 操作的成功率
5.配置文件解析
【存储测试】cosbench测试工具 与配置详细参数- (cnblogs.com) # 详细参数
简单解释:
containers | 字符串 | 容器选择表达式;例如 c(1), u(1,100) | |
---|---|---|---|
cprefix | 字符串 | mycontainers_ | 容器前缀 |
csuffix | 字符串 | 容器后缀 | |
objects | 字符串 | 对象选择表达式;例如 c(1), u(1,100) | |
oprefix | 字符串 | myobjects_ | 对象前缀 |
osuffix | 字符串 | 对象后缀 |
<workload description="sample benchmark for s3" name="s3-sample"> # name为本次测试的名字
<storage config="accesskey=aaa;secretkey=NfBPpAkMZlCxISIqbUogRfKlqrgnFutz7009R8MO;endpoint=http://10.121.121.4:7480" type="s3" /> # 只需修改config中的参数accesskey、secretkey、endopint(ip) config中的其他值全部删除。
<workflow>
<workstage name="init">
<work config="cprefix=s3testqwer;containers=r(1,2)" type="init" workers="1" />
</workstage>
<workstage name="prepare">
<work config="cprefix=s3testqwer;containers=r(1,2);objects=r(1,10);sizes=c(64)KB" type="prepare" workers="1" />
</workstage>
<workstage name="main">
<work name="main" runtime="30" workers="8">
<operation config="cprefix=s3testqwer;containers=u(1,2);objects=u(1,10)" ratio="80" type="read" />
<operation config="cprefix=s3testqwer;containers=u(1,2);objects=u(11,20);sizes=c(64)KB" ratio="20" type="write" />
</work>
</workstage>
<workstage name="cleanup">
<work config="cprefix=s3testqwer;containers=r(1,2);objects=r(1,20)" type="cleanup" workers="1" />
</workstage>
<workstage name="dispose">
<work config="cprefix=s3testqwer;containers=r(1,2)" type="dispose" workers="1" />
</workstage>
</workflow>
</workload>
上面配置解释
配置 阶段 | 线程数 | 操作(%为该阶段的线程分配比例) | 桶的数量 | 执行次数(U范围内抽取,R 为循环) | 对象的数量(U范围内抽取,R 为递增循环) | 对象大小/个 |
---|---|---|---|---|---|---|
init | 1 | Write | 1 | R(1,2) | ||
prepare | 1 | Write | R(1,2) | U(1,10) | 64KB | |
main | 8 | Read(80%) | U(1,2) | U(1,10) | ||
Write(20%) | R(1,2) | U(11,20) | 64KB | |||
cleanup | 1 | Delete | R(1,2) | R(1,20) | ||
dispose | 1 | Delete | 1 | R(1,2) |
3.测试集群
1.集群配置
所有的集群节点中都要安装
# 安装JDK
[root@k8s-01 ~]# yum install java nmap-ncat
# 通过wget下载,或者直接通过浏览器输入下面的链接下载
[root@k8s-01 ~]# wget https://github.com/intel-cloud/cosbench/releases/download/v0.4.2.c4/0.4.2.c4.zip
# 解压
[root@k8s-01 ~]# unzip 0.4.2.c4.zip
2.修改配置文件
首先修改要启动的controller端
vi ./conf/controller.conf
配置文件修改后
[controller]
drivers = 3 # 启动三个drivers端
log_level = INFO
log_file = log/system.log
archive_dir = archive
[driver1] # IP不可为127.0.0.1 必须为公网ip 否则在前端页面访问报错!!!
name = driver1
url = http://10.121.121.30:18088/driver
[driver2] # 根据要测试的节点添加driver配置
name = driver2
url = http://10.121.121.4:18088/driver
[driver3]
name = driver3
url = http://10.121.121.5:18088/driver
除了controller其他节点为如下所示,所有节点依次类推
[controller]
drivers = 1
log_level = INFO
log_file = log/system.log
archive_dir = archive
[driver3]
name = driver3
url = http://10.121.121.5:18088/driver
修改完所有配置文件后:
所有节点都要启动drivers
sh start-drivers.sh
要开启controller的节点直接可以:
sh start-all.sh #全部开启
遇到的错误
cosbench + ceph集群(3个节点) 错误记录:
1.在写入对象的时候没有产生数据,
原因:查看对象存储服务是否开启在xml配置文件指定的ip虚拟机中。可能会发生不在指定的虚拟机中,也就没有开启对象存储服务的的端口。
默认端口7480 ssh test1 vi /etc/ceph/ceph.conf
原因二:因为创建的对象没有创建桶的权限。需要开启,默认没有开启 代码:radosgw-admin caps add --uid=testid --caps="buckets=*"
2.因为在cosbench进行测试后会有数据残留在数据池中,这时候可以通过删除池在重新创建来解决。
ceph df 查看池的信息
ceph osd pool delete 池名 池名 --yes-i-really-really-mean-it
ceph osd pool create 池名 32 32
借鉴自: