cosbench安装
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 &
三、配置使用
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目录内
[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,查看当前运行状态及结果
使用的配置文件参数
实例:
<?xml version="1.0" encoding="UTF-8" ?>
<workload name="s3-sample" description="sample benchmark for s3">
<storage type="s3" config="accesskey=<accesskey>;secretkey=<scretkey>;proxyhost=<proxyhost>;proxyport=<proxyport>;endpoint=<endpoint>" />
<workflow>
<workstage name="init">
<work type="init" workers="1" config="cprefix=s3testqwer;containers=r(1,2)" />
</workstage>
<workstage name="prepare">
<work type="prepare" workers="1" config="cprefix=s3testqwer;containers=r(1,2);objects=r(1,10);sizes=c(64)KB" />
</workstage>
<workstage name="main">
<work name="main" workers="8" runtime="30">
<operation type="read" ratio="80" config="cprefix=s3testqwer;containers=u(1,2);objects=u(1,10)" />
<operation type="write" ratio="20" config="cprefix=s3testqwer;containers=u(1,2);objects=u(11,20);sizes=c(64)KB" />
</work>
</workstage>
<workstage name="cleanup">
<work type="cleanup" workers="1" config="cprefix=s3testqwer;containers=r(1,2);objects=r(1,20)" />
</workstage>
<workstage name="dispose">
<work type="dispose" workers="1" config="cprefix=s3testqwer;containers=r(1,2)" />
</workstage>
</workflow>
</workload>
config="accesskey=;secretkey= :用户密钥对
endpoint=:网关
config="cprefix=s3testqwer;containers=u(1,2):桶的名称前缀和数量限制
objects=u(11,20):对象数
如何检查配置正确:
cosbench如果配置错误不会报错,这个时候就要看数据量以及吞吐量,带宽是不是有数据,如果有数据,那就代表已经跑起来了
如何检查数据一致性:
hasCheck参数打开
config="hashCheck=true;
之后查看日志,如果日志没有数据记录,那就代表数据一致
grep Inconsistent /root/0.4.2.c3/log/mission/*
碰到的问题:
1.nc也就是nmap-ncat安装失败
解决办法:更换yum源
2.某个节点controller或者driver启动不起来:
有可能是因为新手误操作,起了很多driver和controller进程,杀掉相应进程