分布式系统测试工具——Jepsen安装
上一篇 /
下一篇 2022-06-02 14:27:43
/ 个人分类:测试工具
一、 为什么选择Jepsen
分布式系统测试工具的目的主要是模拟各种异常测试条件下(如:网络抖动、进程崩溃、单节点进程重启、操作系统时间不一致等),分析测试结果的正确性(如:是否满足分布式系统的线性一致性)。然而,对于测试人员而言,虽然可以使用一些线程的linux工具或方法(如iptables命令、手动Kill进程、reboot单节点等)模拟测试条件,但是手工模拟效率低、工作量大(如:需要切换节点操作、抓取日志各节点日志等),且人工进行测试分析任务较重,不是理想的选择。而Jepsen作为比较著名且使用较多的开源分布式系统测试软件(已经帮助过Elasticsearch、Etcd、Zookeeper、cockroachdb等项目),测试特点偏黑盒测试(通过接口进行各种操作,模拟故障注入验证分布式系统的一致性),可以作为测试人员优良选择。
虽然,讲了这么多Jepsen的优点,但是对于测试人员来说,它也有自身的不足。比如:1)学习成本较高,需要学习Clojure语言(Jepsen是用Clojure开发的框架,测试用例也需要使用Clojure语言编写);2)无法长时间并发运行,容易造成OOM;3)测试用例需要定制Model,复杂数据类型的结果分析,需要专门做一些定制开发。
二、 Jepsen的安装方法
由于网上Jepsen基于docker的安装方法较多,本文主要演示Jepsen裸机安装方法。
以Ubuntu操作系统为例:
1. 环境配置
软件/工具名 | 备注 |
JDK环境 | 版本要求:1.8版本及以上 |
Leiningen安装 | Clojure构建工具 |
Gnuplot安装 | 交互式绘图工具,可以用于Jepsen呈现性能图 |
Graphviz安装 | 可视化图形工具,可以用于Jepsen呈现异常结果 |
安装命令:sudo apt-get install openjdk-8-jre
openjdk-8-jre-headless libjna-java gnuplot graphviz
图1 Jepsen环境配置
2. Jepsen安装
1) 安装包下载
可通过https://github.com/jepsen-io/jepsen地址离线下载Jepsen的压缩包;
2) 压缩包解压
使用unzip命令解压压缩包。
对于裸机安装Jepsen,只需将Jepsen安装包解压即可。
三、 Jepsen的试用
Jepsen运行模式为Control node+DB node模式(如下图所示),Control Node节点到DB node节点需要开启ssh免密登录,便于控制节点在测试程序开始后会启用多个worker进程,并发地通过SSH登入数据库节点进行读写操作。
图2 Jepsen运行模式
1. ssh免密登录配置
1) 修改hosts映射
编辑/etc/hosts文件,修改对端机器主机名映射,如:192.168.235.22 test112
2) 本地生成公私钥
输入ssh-keygen,一路回车即可;
3) 复制公钥到对端机器
ssh-copy-id -i ~/.ssh/id_rsa.pub root@{对端机器ip}
4) 测试免密登录
使用命令:ssh root@{对端机器ip}可以发现不需要密码即可登录对端机器。
2. Jepsen试用
Jepsen本身提供了一些项目的样例,可以使用提供的样例测试Jepsen是否安装成功。如:使用jepsen样例。
图3 Jepsen运行样例
四、 FAQ
1. lein run test运行时提示UnknownHostsException,如下图所示:
答:lein run test默认主机为n1,n2,n3…,用户名为root,密码为root。对于选用其他node节点或输入其他用户名、密码,可使用选项—node {节点名},--username
{用户名},--password {密码}配置,如:lein run test --node test112 –username
root –password jepsen。
2. 查看lein命令帮助
答:使用lein –help命令,查看命令选项。
3. lein run test运行时提示端口访问不到
答:查看端口防火墙状态,关闭对端机器防火墙。
收藏
举报
TAG:
大佬养成计划