teuthology 是ceph社区的自动化测试框架,ceph作为一个复杂的分布式存储系统,需要一个强大的测试平台来保证它的可靠性,teuthology做到了这一点。
teuthology的架构:
如下图,pulpite主要是web前端,完全依赖paddles,paddles是一个restful风格的api的web项目,采用json风格作为数据交互。paddles将数据存储在postgresql中。
superviord比较简单,用于进程守护。
teuthology的管理节点分为调度者和执行者。调度者相当于用户使用入口,执行者则通过任务队列取出任务,并到paddles中索取资源执行任务。
slave节点,即下图的TS0 TS1等,下面这些节点主要用来跑测试任务。
gitbuilder:对应于不同分支的测试代码等,主要用于拉取ceph。
ntp:时间同步。
teuthology的安装部署:
teuthology的安装部署相对麻烦,主要参考:
我仅在虚拟机环境进行安装,可能有一些点需要注意:
1.虚拟机尽量保证cpu/ram/disk资源,teuthology跑起来一方面会占用资源,另一方面log等文件也比较大
2.虚拟机需要配置无密码登陆
3.修改/etc/hosts,类似如下,配置各个slave节点,保证各个slave节点通过hostname进行ssh
10.165
.
125.13
teuth001.netease-ceph.com
10.165
.
125.14
teuth002.netease-ceph.com
10.165
.
125.15
teuth003.netease-ceph.com
4.
修改sshd_config,解决paramiko的bug
(
echo
"Ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes128-ctr"
>> /etc/ssh/sshd_config;echo
"MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,hmac-ripemd160,hmac-sha1"
>> /etc/ssh/sshd_config;echo
"KexAlgorithms diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1"
>> /etc/ssh/sshd_config;systemctl restart ssh
)
5.将文件/home/teuthology/src/teuthology_master/virtualenv/lib/python2.7/site-packages/gevent/ssl.py中的 PROTOCOL_SSLv3 改成 PROTOCOL_SSLv23
6.部署文档中说的gitbuilder不需要安装了,直接使用iaas的即可
作为一个测试框架,teuthology优点突出:
2.基于yaml的测试,总体的测试用例比较清晰,同时社区已经提供了丰富的测试用例。
比如如下的yaml配置,我们保存为examaple.yaml,测试时,直接运行
./
virtualenv
/
bin
/
teuthology example
.
yaml即可。说明(以下yaml
简单实现3个节点的集群的ceph集群部署验证。这里需要注意roles和targets需要匹配,比如如下host07对应
[mon
.
0
, mds
.
0
, osd
.
0
]角色。)
roles:
-
[mon
.
0
, mds
.
0
, osd
.
0
]
-
[mon
.
1
, osd
.
1
]
-
[mon
.
2
, client
.
0
] targets: ubuntu
@host07
.
example
.
com: ssh
-
rsa host07_ssh_key ubuntu
@host08
.
example
.
com: ssh
-
rsa host08_ssh_key ubuntu
@host09
.
example
.
com: ssh
-
rsa host09_ssh_key tasks:
-
install:
-
ceph: repo: git:
//
git
.
ceph
.
com
/
ceph
.
git
3.对于测试机器的管理,添加、删除、lock、unlock等有命令可以直接操作。以下脚本提供了加slave节点的能力。
https:
/
/raw.githubusercontent.com/ceph/teuthology/master/docs/
_static/create_nodes.py
通过类似如下的命令可以管控这些测试机:
teuthology
-
lock
--
owner initial
@setup
--
list
-
targets
>
/
tmp
/
targets teuthology
--
owner initial
@setup
/
tmp
/
targets teuthology
-
lock
--
owner initial
@setup
--
unlock
-
t
/
tmp
/
targets
后续计划:
teuthology本身比较庞大,且部署和运行难度都比较大,ceph的部分测试用例依赖openstack本身,还要自动搭建openstack平台,对测试环境的要求也比较高;但是作为自动化框架,以上优点和设计思路都是比较值得借鉴的。可以考虑借鉴类似模式,还可以在测试框架中加入failover等相关的功能,用于下一代存储平台的测试框架架构。
本文来自网易实践者社区,经作者罗泽文授权发布。