开启左侧

软件定义存储解决方案 如何构建SDS大规模测试环境?

杏耀平台:[复制链接]
950 0
128994218555 发表于 2020-3-30 21:59:12 | 只看该作者 |阅读模式 打印 上一主题 下一主题
SDS的一大特点就是规模大,解决方案集群内的硬件资源和软件资源都很多,比如超过100个节点和500个硬盘是很常见的。所以我们需要有大规模的环境来实际测试我们的产品。
  XSKY目前在本地office和远端IDC数据中心架设了庞大的各类品牌服务器资源,搭建了从千兆,万兆,100G,到FC不同的复杂网络环境,用作SDS的大规模测试。但即便如此,大量的SDS自动化测试仍然需要更加灵活、经济的方式。


  都使用物理机来搭建大规模集群,不仅成本太高,而且不灵活。所以,我们开发了Endurance项目,通过使用公有云来构建大规模的测试环境。
  图片来源网络图片来源网络
  开发Endurance之前,我们也考虑过用公有云的formation工具来实现环境部署功能,例如AWSCloudFormation。但是这些formation工具基本只能做到公有云资源的操作,而且主要是用于创建资源。我们不仅需要创建资源,还需要灵活的控制资源,并且能够跟踪整个资源的生命周期。因此,我们决定自己开发一套系统来满足自己的需求。
  一、Endurance的架构
  Endurance由一个controller和多个agent组成,controller负责测试环境的管理,agent则部署到每个虚拟机上,接受controller发送的命令并执行对应的操作。Endurance的部署架构如下:
  每个测试集群采用VPC进行网络隔离。Endurancecontroller的主要职责包括:
  虚拟机管理
  虚拟网卡管理
  云硬盘管理
  SDS版本部署
  SDS系统的服务器、硬盘、存储池的创建
  部署性能监控组件
  Endurance的agent主要职责包括:
  1、执行controller下发的任务,包括:
  安装SDS
  环境配置
  2、提供RPC接口让测试用例可以注入故障,比如
  kill执行的进程
  控制硬件状态
  在使用Endurance创建测试环境之前,我们会先把公有云的信息添加到它的数据库中,比如账号、虚拟机镜像、VPC和subnet等。因为网络规划需要统一,所以Endurance使用的VPC和subnet都是事先创建好的,在请求建立一个测试环境时,只需要选择SDS不同网络所需要的网段即可。
  当我们需要创建一个测试环境时,流程如下:
  1、通过一个YAML文件提交测试环境请求给controller
  2、controller解析YAML文件,根据指定的要求准备好测试环境,主要步骤包括:
  使用指定镜像创建虚拟机,并且配置好网络。
  安装Enduranceagent到虚拟机上。
  创建指定规格的云硬盘,并且挂载到指定的虚拟机。
  配置好虚拟机的环境。
  安装SDS软件。
  调用SDS的API添加服务器、硬盘,以及创建存储池。
  这样,我们就有了一个可以进行测试的大规模集群。随后,就可以运行指定的自动化测试用例,这些用例不仅可以通过SDSAPI来操作集群,还可以通过Enduranceagent提供的RPC来执行很多操作底层的操作,例如故障注入等。
  测试环境YAML文件示例
  测试环境YAML文件示例
  启动测试环境构建启动测试环境构建
  Endurance构建测试环境的过程Endurance构建测试环境的过程
  当使用Endurance创建了一个环境时,可以选择开启性能监控组件。开启之后,Endurance会安装一个带外的Prometheus以及相应的exporter来收集性能数据,也会安装Jaeger并开启管里面的tracing功能来收集管理面操作的性能数据。
  在测试用例运行完成之后,只要告诉Endurance拆除指定的测试环境,Endurance就会清除所有的虚拟机和云硬盘。
  二、AWS中使用多个网卡的问题
  我们的SDS虽然可以管理大部分的系统硬件和配置,但是网络是需要事先配置好的。SDS最多可以支持4个网络,所以我们的EC2instance也需要配置多个不同的虚拟网卡(ENI),并且给每个ENI配置不同的静态地址和子网,一个EC2instance上的不同ENI会分别加入同一个VPC的不同subnet。在我们的设计中,Endurancecontroller是通过虚拟机的管理网络的地址来ssh到虚拟机上。
  当我们为EC2实例配置多个ENI时,我们遇到了一个网络问题:如果像物理机一样,只是只通过写/etc/sysconfig/network-scripts/ifcfg-nicname来配置网卡的静态地址会导致虚拟机的路由出现问题。这个路由问题的表现大概是这样的,通过管理网进来的报文不会从管理网出去,导致ssh无法通讯。
  三、Endurance的特点
  部署灵活
  可以根据需要部署指定规模和配置的集群。最常用的配置包括CPU、内存、操作系统版本、云硬盘类型、云硬盘大小、云硬盘数量。
  使用方便
  1、通过一个YAML文件就可以指定我们需要的集群信息。
  2、公有云和办公网通过VPN连接在一起,开发和测试都可以轻松访问集群。
  节约成本
  不需要购买物理机,也就没有机房的存放成本、硬件损坏成本以及其他物理机的管理成本。
  集群部署速度快
  整个集群的部署分为两个阶段,部署第一台节点和部署其他节点。
  公有云平台启动一个虚拟机大约需要3分钟,我们安装SDS软件大约需要5分钟,再加上一些其他的操作,我们的第一个阶段会在10分钟内完成。
  第二个阶段的虚拟机是并发创建和安装的,所以不论要添加多少台节点,第二个阶段一般都在10分钟内完成。
  所以,一般我们只需要20分钟就可以创建一个测试集群,并且所有的机器都会添加到集群中。
  与测试用例集成方便
  Endurance的YAML模板提供了直接执行测试用例的能力,可以在测试环境部署好之后直接开始执行测试用例,通过协商好的配置文件把集群的信息提供给测试用例。
  另外,Enduranceagent提供的RPC用于操作集群的软硬件,测试用例可以减少使用ssh来执行命令,方便测试用例的开发。
  四、总结
  本文整理和归纳了如何基于公有云为SDS构建大规模自动化测试集群的方案和执行过程,并针对这个过程中AWS中使用多个网卡的问题,提出了解决方案。
  随着各行业用户对SDS的大规模采用,集群数量和规模持续扩大,以及SDS功能的不断丰富和演进,XSKY开发的Endurance提供了经济、高效、灵活的超大规模自动化测试手段,为用户持续打造高可靠、稳定的SDS产品“保驾护航”。



分享到:  QQ好友和群QQ好友和群
收藏0
分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


0关注

0粉丝

37帖子

Archiver小黑屋

杏耀平台