teuthology初步调研

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优点突出:
1.前端展示非常清晰,可以看到测试集群的规模,使用状态,case的执行状态,执行log等。可以参考官方: http://pulpito.ceph.com/  
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等相关的功能,用于下一代存储平台的测试框架架构。

本文来自网易实践者社区,经作者罗泽文授权发布。