使用分享|部署MeterSphere分布式环境全流程

发布于 2021年04月07日

以下文章来源于CSDN博客分享,作者Wickor。

由于性能测试所需并发量大,压力机又不止一台,所以在这里介绍下使用MeterSphere的分布式部署方案。

Step 1:准备机器

首先,准备3台虚拟机当做压力机Slave,IP分别为192.1.1.11,192.1.1.12和192.1.1.13。一台虚拟机当做控制器Web端Master,IP为192.1.1.10。

在MeterSpere官网下载离线安装包,访问网址:

https://github.com/metersphere/metersphere/releases

本次选择v1.8.0版本进行安装。链接:

https://pan.baidu.com/s/1LNquYhdZ-I4Q586j0Ifl9A

提取码:lgnz。

下载一份metersphere-release-v1.8.0-offline.tar.gz到虚拟机192.1.1.10目录/var/softwares下面,然后远程拷贝到192.1.1.11,192.1.1.12和192.1.1.13下。

Step 2:设置路径权限

这个是把metersphere-release-v1.8.0-offline.tar.gz去解压/var/softwares/metersphere目录,要把权限掩码设置为0022:

# umask 0022

加这个参数可以看清楚是什么权限:

# umask -Su=rwx,g=rx,o=rx

运行完可以看出:所有者是读写执行权限,组用户是读执行权限,其它用户是读执行权限。

解压metersphere-release-v1.8.0-offline.tar.gz文件:

# tar -xvzf metersphere-release-v1.8.0-offline.tar.gz -C ./metersphere

如果运行ls -ll后发现文件夹metersphere-release-v1.8.0-offline没有执行权限,需要接着运行下面命令赋予执行权限:

# ls -ll /var/softwares/metersphere/drwxr-xr-x 5 root   root   4096 3月  30 13:35 metersphere-release-v1.8.0-offline# sudo chmod -R 755 /var/softwares/metersphere/

Step 3:免密访问设置

首先在每个Linux虚拟机,运行ssh-keygen生成秘钥文件,~代表你Linux虚拟机上的个人登录home目录:

# cd ~/.ssh# ssh-keygen

一路回车后可以看到有私钥文件id_rsa,公钥文件id_rsa.pub生成。

接着拷贝公钥到远程主机,这是一个疏漏点,切记。如果配置不当,在v1.7.3版本安装后总是报错:

# Non HTTP response code: org.apache.http.conn.HttpHostConnectException

Master要给每个Slave发送调度命令和传输脚本,接着每个Slave要回传压测数据给Master上的Kafka,所以使用如下命令把Master和Slave的公钥互相拷贝至~/.ssh/authorized_keys里:

# ssh-copy-id <主机名或ip>

使用vi命令查看Master或Slave虚拟机里面的~/.ssh/authorized_keys文件,两个文件中互相有对方公钥即可。

注:增加一个小知识,ssh会把你每个访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。

Step 4:Master安装

在/var/softwares/metersphere/metersphere-release-v1.8.0-offline文件夹下,找到install.conf,打开后确定安装模式为allinone:

MS_MODE=allinone

然后执行命令:

# sudo sh quick_start.sh

由于重启机器,控制台信息没有保存下来,只有一个较早版本v1.7.3安装截屏。

运行检查状态命令:

# sudo msctl status
Name Command State Ports-------------------------------------------------------------------------------------------------------------------kafka /opt/bitnami/scripts/kafka ... Up (healthy) 0.0.0.0:19092->19092/tcp, 9092/tcpms-data-streaming /deployments/run-java.sh Up (healthy) 0.0.0.0:8084->8084/tcp, 0.0.0.0:8085->8085/tcpms-node-controller /deployments/run-java.sh Up (healthy) 0.0.0.0:8082->8082/tcpms-server /deployments/run-java.sh Up (healthy) 0.0.0.0:8081->8081/tcpmysql docker-entrypoint.sh mysqld Up (healthy) 0.0.0.0:3307->3306/tcp, 33060/tcpzookeeper            /opt/bitnami/scripts/zooke ...   Up (healthy)   2181/tcp, 2888/tcp, 3888/tcp, 8080/tcp

注:状态显示healthy表示正常,如果是starting就需要等等,如果是exited说明有问题。

Step 5:Slave安装

在/var/softwares/metersphere/metersphere-release-v1.8.0-offline文件夹下,找到install.conf,打开后确定安装模式为allinone:

MS_MODE=node-controller

然后执行命令:

# sudo sh quick_start.sh

控制台信息如下:

--2021-03-31 18:06:08--  https://github.com/metersphere/metersphere/releases/latest/download/metersphere-release-.tar.gz正在解析主机 github.com (github.com)... 52.74.223.119正在连接 github.com (github.com)|52.74.223.119|:443... 失败:拒绝连接。tar (child): metersphere-release-.tar.gz:无法 open: 没有那个文件或目录tar (child): Error is not recoverable: exiting nowtar: Child returned status 2tar: Error is not recoverable: exiting nowquick_start.sh: 第 15 行:cd: metersphere-release-: 没有那个文件或目录======================= 开始安装 =======================time: 2021年 03月 31日 星期三 18:06:22 CST[MeterSphere Log]: 检测到 Docker 已安装,跳过安装步骤[MeterSphere Log]: 启动 DockerRedirecting to /bin/systemctl start docker.service[MeterSphere Log]: 检测到 Docker Compose 已安装,跳过安装步骤[MeterSphere Log]: 加载镜像Loaded image: registry.cn-qingdao.aliyuncs.com/metersphere/jmeter-master:5.3-ms15Loaded image: registry.cn-qingdao.aliyuncs.com/metersphere/kafka:2Loaded image: registry.cn-qingdao.aliyuncs.com/metersphere/metersphere:v1.8.0Loaded image: registry.cn-qingdao.aliyuncs.com/metersphere/ms-data-streaming:v1.8.0Loaded image: registry.cn-qingdao.aliyuncs.com/metersphere/ms-node-controller:v1.8.0Loaded image: registry.cn-qingdao.aliyuncs.com/metersphere/mysql:5.7.25Loaded image: registry.cn-qingdao.aliyuncs.com/metersphere/zookeeper:3[MeterSphere Log]: 启动服务Removing network metersphere_ms-networkRemoving volume metersphere_ms-confRemoving volume metersphere_ms-logsRemoving volume metersphere_ms-dataRemoving volume metersphere_ms-jmeter-dataCreating network "metersphere_ms-network" with the default driverCreating volume "metersphere_ms-conf" with default driverCreating volume "metersphere_ms-logs" with default driverCreating volume "metersphere_ms-data" with default driverCreating volume "metersphere_ms-jmeter-data" with default driverno such image: registry.cn-qingdao.aliyuncs.com/metersphere/ms-node-controller:: invalid reference format
Name Command State Ports------------------------------======================= 安装完成 =======================
请通过以下方式访问: URL: http://$LOCAL_IP:8081 用户名: admin 初始密码: metersphere您可以使用命令 'msctl status' 检查服务运行情况.

运行检查状态命令:

# sudo msctl status
Name Command State Ports-------------------------------------------------------------------------------------ms-node-controller   /deployments/run-java.sh   Up (healthy)   0.0.0.0:8082->8082/tcp

注:状态显示healthy表示正常,如果是starting就需要等等,如果是exited说明有问题。

Step 6:添加资源

登录任何一台机器的浏览器,输入http://localhost:8081或http://<master_ip>:8081访问web端,用户名:admin,密码:metersphere。

访问【系统设置】→【系统】→【测试资源池】,单击【创建资源池】,配置JMeter HEAP的JVM运行参数和GC策略:

同时添加Slave压力机,填写IP,Port和最大并发数。

添加后,注意【测试资源池】页面会显示“修改成功”提示信息,如果发现【启用/禁用】选项没有高亮显示紫色,则需要点击那个开关使刚才设置的压力资源生效,否则是不能在压测过程中使用刚才配置的压力资源的

Step 7:升级

如果安装完之后有版本升级,可以通过运行以下命令升级Master和Slave:

# sudo msctl upgrade

因为我是全新安装的v1.8.0所以并没有进行升级。但是一定确保Master和Slave的版本要一致。

Step 8:开始分布式测压

点击【性能测试】→【创建测试】:

点击【场景配置】→【加载JMX文件】→【上传JMX文件】添加压测脚本:

这里上传的是bzm - Concurrency Thread Group阶梯发压线程组脚本,令人惊奇的是MeterSphere居然自动识别出来了,然后点击【压力配置】标签页设置发压参数设置,比如选择资源池,并发用户数,时长等:

第3个标签页是【高级配置】,我暂时没有用到,以后会介绍这个,来个截图吧。

好了,点击【保存并执行】按钮,过一会MeterSphere切换至报告页面,展示压测实时数据如下:

【测试概览】标签页

【请求统计】标签页

【错误记录】标签页

【日志详情】标签页

如果你想快速搭建一个压测平台,MeterSphere无疑是最有效的开源工具,感兴趣的朋友不妨试试!感谢MeterSphere的团队的无私奉献!

————————————————
版权声明:本文为CSDN博主「Wickor」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:

https://blog.csdn.net/gocode/article/details/115362745