专属az异常测试实践

达芬奇密码2018-07-25 10:28

异常测试,是检测系统对异常情况的处理,测试人员通过人为制造错误,测试系统是否能有效处理异常。

引入专属az后,ceph部署变成计算和存储混布,因此也大大增加了系统的复杂度,异常测试由原先的云主机io影响变成云主机io和云主机带宽均可能受影响的情况。

测试分析:

1.       模拟用户场景,原则上要尽可能的占用资源,因为线下测试环境规模远远不如线上,因此要充分使用资源,且保证系统的整体负载较高,同时覆盖多种操作系统及镜像:

按照目前的部署方案,实际资源如下:

a.每个节点插4*800Gssd盘,共计6个节点插盘,ceph按照3副本部署,因此ceph总容量不含超售为 3.2T*6/3*0.75=4.8T,按最大2倍超售为9.6T

b.cpu核数非超售情况下每台为48核,一个osd独占2个物理核。

c.网络为单台物理机10G网卡

非超售情况下每个节点的稳定性场景如下:

镜像

Flavor大小

云主机数量

是否挂载ceph

debian_7_x86_64_pub_static_36840.qcow2

8v*8g

4

centos_7.2_x86_64_pub.qcow2

1v*1g

2

window7_amd64

4v*4g

1

ubuntu_14.04_amd64

2v*2g

2

windows_2012r2

4v*4g

1

 每个节点按照上述表格部署10台云主机,共计90台云主机,每个节点占用36vcpu,每个云主机系统盘用fio随机读写10G数据;其中每个节点4台云主机每台挂载100G ceph云硬盘,每块云硬盘读写50G数据;ceph总分配量为5.4Tceph实际写数据量为3T左右;按照带宽负载,100GcephQoS限制为82Mbps,云主机默认最大速率为500Mbps,按最大带宽的50%,无超售情况下带宽最大负载在400Mbps。这样,非超售情况下,负载基本都在50%以上,如果在2倍超售情况下,将上述规模扩大一倍,系统接近满载。

2.异常项注入可以从以下几个方面展开:

a.       物理机及openstack服务异常

1.       计算及ceph混布节点宕机

2.       计算及ceph混布节点网络异常

3.       验证nova-compute等主要服务被kill等的情况

b.       ceph集群扩容或者异常(由于是与线上公用mon,因此不开展对mon的异常操作)

1.添加硬盘(新加osd),测试rebalance的速度,以及对正常业务io及带宽的影响;

2.集群扩容(新加机器),测试rebalance速度,及对io及带宽的影响;

3.重启一个osd,测试修复速度,以及对正常业务io及开开的影响;

4.拔盘,测试修复及对正常业务io及带宽的影响

5.kill掉一个osd,测试对修复以及对正常业务io及带宽的影响

6.停掉一个osd,间隔20分钟后再次启动osd

7.停掉一个节点的所有osd,间隔20分钟后再次启动osd

c.  机柜及集群异常

       1.对机柜断电,间隔20分钟后上电,验证集群是否能够恢复正常

       2.对集群断电,间隔20分钟后上电,验证集群是否能够恢复正常

测试执行:

异常测试整个环境构建及检查项都是明确的,而且是一致的,且集群中有90台云主机,依赖人工检查并不现实,因此可以考虑自动化测试。而针对这里的异常项也可以进行简单分类:部分异常依赖机房人工操作(断电、断网、拔盘),部分异常获取相应权限后可自动化运行(重启osd、重启服务等)。

总体设计如下:

1.       环境部署时,使用带工具及部分测试脚本的镜像,创建云主机,环境可复用

2.       异常注入时,考虑将能够自动化的异常自动化执行,不能自动化的异常单独执行(整体自动化测试不变,仅异常注入部分依赖人工操作)

3.       数据收集时,考虑将所有数据获取后取异常前后的io及带宽的平均值进行比较,并统计受影响云主机数量、各项指标恢复正常的耗时

4.       用哨兵监控物理机、集群的整体负载情况

5.       收集测试过程中warningerrorlog

6.       检查环境整体情况,保证不影响下一轮测试


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