第一部分:控制平面性能测试及优化

第一部分:控制平面性能测试及优化

控制平面是指在云环境下为实现IT资源的统一管理和调度而设备互联形成的网络,设备包括控制节点和被管控的计算、存储、网络等资源节点;建立控制平面的目的是通过充分利用IT资源以更好地满足业务应用运行需求。

控制平面的性能是云平台大规模部署的基础和关键,大规模行业云的控制平面部署设计有多种方案,如单一region规模化部署、多region部署、多cell等模式,无论哪种模式,单一region下的规模部署是基础。通过测试来验证铁信云在单一region下能支撑的最大规模,试图寻找在单一region下部署的高效优化架构设计方案,以及在该架构下的优化参数配置,以保障其在超大规模部署和高负载条件下云服务能高效、稳定、可靠运行。

2. 控制平面测试介绍

3.1 测试目的及方法

此次案例以探索单region的规模和性能边界为目标做了测试和优化,最终希望利用现有经验探索大规模数据中心的云平台部署最佳实践:

l  观察一定规模计算节点下创建云主机压力对控制节点集群的影响,例如CPU、内存、网络IO、磁盘IO等,为今后大规模云数据中心的云平台设计、扩容提供数据基础。

l  并发及资源利用率考量。来自用户的并发请求对整体系统稳定性的考量,即寻找数据库、RabbitMQ集群和OpenStack组件瓶颈,期望通过改良系统参数、服务配置、代码逻辑,在服务稳定的前提下最大化提高物理资源的使用效率。

我们依次对100、200、300、400、500、600物理计算节点做了多轮测试及优化:

l  通过固定计算节点数,以1:20的比例(1台计算节点创建20台云主机)分批次创建相应数量的云主机,通过查询数据库和日志信息可以计算获得其创建成功率,通过分析日志,对每台创建成功的云主机,都可以计算得到它在创建过程中各模块的时间消耗,并以此衡量创建云主机的性能。

l  针对RabbitMQ的分析,基于一组以1:2的比例(1台计算节点创建2台云主机)分批次创建云主机的场景,用以获取准确的实际消息数目,建立基准模型供后续分析参考验证。基于此,利用监控数据定性分析在1:20比例下的优化效果。

l  模拟多API同时触发,针对失败的请求,结合系统返回的信息和日志观察,分析错误原因。

l  通过用一些性能监测工具对创建云主机过程进行性能评测。

3.2 相关知识简述

  第一部分:控制平面性能测试及优化

图3-1:创建请求处理流程图

云主机的创建是OpenStack各种业务中最复杂的场景,因此为了验证规模场景,我们选择了云主机创建业务作为验证参数边界的测试手段。为了后续讨论方便,下面简要介绍云主机创建流程。如图3-1所示,该过程涉及各模块间的交互(Keystone对整个过程HTTP请求均会进行验证):

1)控制节点上的Nova服务接受请求并进行预处理,其中,通过HTTP Get请求与Glance和Neutron交互检验请求信息,选出host主机后,再通过RPC交由相应计算节点的nova-compute服务处理;

2)Nova向Glance发HTTP Get请求获取镜像信息,据此创建存储资源;

3)Nova向Neutron发HTTP Get请求获取网络信息、Post请求创建port并attach到该云主机;

4)等到云主机存储和网络资源准备完成,Nova启动并成功创建云主机。

3.3 数据收集及分析方法概要

OpenStack黑盒测试常会使用Rally项目,但要精细分析,需要不断轮询系统状态,会带来额外分析误差,因此我们采用模拟测试系统直接调用OpenStack API作为替代方案,再基于资源性能监控数据和日志数据进行建模分析,来获取结果数据。在本次案例研究中,我们在中国铁路总公司数据中心780节点生产环境上线前对它进行了大规模测试验证,发现了铁信云在系统架构、运行机制、系统参数、数据库配置、OpenStack组件配置参数等各方面存在的问题,并通过分析,调整了架构、更换了组件,优化了相应参数,解决了问题。最终我们确定了铁信云在现有物理硬件节点规模情况下,能稳定工作的部署架构以及优化建议。

本部分测试使用Open-Falcon从系统资源、RabbitMQ、数据库等方面收集云平台性能监控数据;模拟测试系统直接调用OpenStack API创建云主机;通过启用RabbitMQ的trace功能收集消息日志;通过使用Flume+Kafka+Spark+HDFS收集云平台日志,并做处理和分析。

通过分析OpenStack源码并结合测试,对创建过程中产生的RabbitMQ消息总数与节点数的递增关系建模,鉴于大规模并发创建对RabbitMQ强压导致性能等问题,我们的方案是,在小规模环境下从trace日志中获取实验结果,对模型做精确定量验证,基于此对系统进行优化,再在大规模场景下结合监控数据做了优化效果定性分析。

为了避免由于收集测试数据对集群带来额外负载,我们选择针对OpenStack的日志进行归纳汇总处理,避免在测试场景运行期间,造成额外延迟。基于OpenStack的现有日志,通过分析建模,获取创建过程各阶段的生命周期,对数据进行分类汇总,可以有效展现高压力测试场景下各交易的真实并发处理效能。