APP下载

用于开源学习社区的openEuler 性能分布式测试实验平台开发

2022-02-25黄靖茹李钊兴裴喜龙徐志宇

软件导刊 2022年1期
关键词:端口集群分布式

黄靖茹,李钊兴,裴喜龙,2,徐志宇,2

(1.同济大学电子与信息工程学院;2.同济大学计算机与信息技术国家级实验教学示范中心,上海 201804)

0 引言

openEuler 是一个开源免费的Linux 发行版系统[1],旨在通过开放的社区形式与全球开发者共同构建一个开放、多元和架构包容的软件生态体系。openEuler 同时也是一个创新系统,倡导客户在系统上提出创新想法、开拓新思路、实践新方案。

openEuler 是企业系统(Enterprise OS),其可以提供企业级应用要素,如稳定的环境、长期的升级更新支持、强大的保守性、大规模系统的适用性等。与大多数操作系统一样,openEuler 在发行每个版本前都需要经过严格测试,验证系统是否满足需求,并对不足之处进行改进。测试人员一般通过静态分析和软件测试技术检测系统缺陷[2-4],而系统故障具有很强的随机性[5-6]。每个版本迭代时,系统测试都需要投入大量资源,因此如何以成本较低的方式构造出一个随机环境,既能使openEuler 随机运行,又能有相对专业的人员将出现故障的情况描述清楚,并反馈给开发人员至关重要。虽然目前已针对许多系统开发了性能测试,如RTLinux[7-8]、Android[9-10]等,但关于openEuler 的平台及其性能测试很少。

随着大数据和人工智能的发展,数据规模不断扩大,利用单一设备进行测试面临巨大挑战[11-12]。在分布式环境下可以利用廉价主机组成集群进行大规模测试,以提高系统的可用性,因此目前对分布式测试的研究日益增加。为对openEuler 的性能进行高质高效的分布式测试,同时尽量以低廉的成本推进版本的更新与迭代,本文设计了一个实验平台,通过开源学习社区和大规模学生实验汇集个人智慧[13],使问题得到及时反馈与解决。本文主要介绍实验平台的开发过程,包括软硬件配置、内网穿透以及实验平台的使用方法。该实验平台是针对操作系统性能进行分布式测试,因此本文提出了基本的测试指标。此外,开发人员也可以根据具体需求定制方案及对应指标,具有很强的开放性和拓展性。

1 实验环境

1.1 硬件环境

3 块树莓派(Raspberry Pi,RPi),外加硬盘、SD 卡、电源等,组成一个阵列。由于编译openEuler 的计算机存储不得低于50GB,为满足后续开发需要,本实验平台选择128GB SD 卡作为每个RPi 的主存储,并通过USB 口连接移动硬盘(Hard Disk)作为辅助存储。

Fig.1 Hardware configuration图1 硬件配置

图1 为3 块RPi 组成的硬件配置示意图,每块RPi 都需要连接电源和接入同一交换机(Switch),使其处在同一个局域网中,再通过广域网(WAN)连到互联网(Internet)。从集群分工的角度而言,一块RPi 作为集群(Cluster)的主节点(Master),其他两块作为从节点(Workers),作为主节点的RPi 负责整个集群的存储和对外访问的控制。

1.2 软件环境

需要安装的软件包括openEuler、Ceph 存储[14]、Seafile云盘[15]、Frp[16]等。图2 为软件配置示意图。

Fig.2 Software configuration图2 软件配置

openEuler 是整个集群的操作系统,对于第一块RPi(Rpi_0)而言,需要从官网直接获取openEuler 的img 镜像文件;对于剩下两块RPi(Rpi_1 和Rpi_2)而言,需利用openEuler 官方提供的源码,在操作系统为openEuler 的Rpi_0中编译得到img 镜像文件。Ceph 负责具体存储分配[17-18],构成openEuler Ceph 集群,整个集群安装Seafile 后,便于进行云存储管理[19-20]。当集群处于同一局域网时,利用Frp开放内网IP,使用户可以在互联网上进行访问。为测试集群的性能,由测试管理服务访问内网。

2 平台搭建

3 块RPi 均需以openEuler 作为操作系统。出于测试openEuler 性能的目的,在不同硬件下需要按照不同方式安装系统,以下主要介绍两种方式,均需在openEuler 的环境下进行。

2.1 openEuler OS 获取

在openEuler 的RPi 版本下载官方openEuler 镜像,将其烧录到一张SD 卡中,在其中一块RPi 上建立openEuler操作系统环境,版本为20.03 LTS SP1。

2.2 openEuler OS 环境编译构建

实验平台的开发围绕openEuler 进行了多方面的性能测试,其中稳定性的测试方法有以下两种:在openEuler 环境下构建自身编译环境形成镜像文件和构建专门的测试程序。

由于一款操作系统的稳定性(兼容、数据包完整性等)测试从进行C/C++编译、链接等开发过程便已开始,因此官网镜像与自编镜像一起工作有助于判断环境文档、脚本等是否完整。编译环境会影响编译构建的结果,rpm 打包也受环境影响,因此在openEuler 自身环境下编译构建可以测试系统稳定性。

openEuler 是一款复杂应用环境的操作系统,内核和C/C++语言库是耦合在一起的,内核启动后,首先会将C/C++库作为动态链接库载入内存,如果要对操作系统内核进行测试,需在应用程序上实施一些针对内核的C/C++程序测试。在openEuler 系统搭建完成后,可以有针对性地编写测试内核的程序。

2.3 openEuler 实验软件安装

目前有很多分布式软件利用不同策略对每个节点进行管理和维护,安装这些专业软件不仅是搭建分布式环境的必要条件,也可以测试其与openEuler 系统的兼容性。此外,在分布式系统下,整个系统的稳定性不仅与单台计算机的性能有密切关系,计算机之间的存储、时延等也会影响整体性能。因此,相关软件的安装能使测试重点更多地集中在操作系统表现上,有利于专业人员发现故障。

2.3.1 Ceph 安装

在安装Ceph 软件之前系统环境需要满足一定条件,包括配置eperl 源、关闭防火墙、配置主机名、配置NTP、配置免密登录和关闭SELinux,其中配置NTP 是为了使集群中的存储节点时差缩小,否则Ceph 会产生警报。

正式安装Ceph 软件时,需要配置MON、MGR 和OSD 节点。由于OSD 节点实际存储数据的进程,因此在每个存储节点上都需要进行配置;MON 节点负责维护整个集群的状态,MGR 监控集群的状态并将一些数据暴露给外界,因此MON 节点和MGR 节点只需要在Master 节点配置。Ceph 同时提供块、文件和对象存储服务,后续可利用Ceph 提供的接口根据需要选择合适的服务。

2.3.2 Seaflie 安装

安装Seafile 的前期需要关闭防火墙,以便安装MySQL或MariaDB 数据库。进行基本配置后还需要配置nginx 反向代理Seahub,同时启动Seafile 和Seahub 并访问nginx 监听的IP 地址和端口号。

3 通过互联网管理测试设备

操作系统的开发测试环境一般布置得比较集中,以便于管理,易于采集出现故障的现场信息,甚至在恢复(Recover)的现场直接调试软件,例如SSH 和远程桌面均需要在局域网下通过IP 地址进行连接。本文对实验环境的最重要诉求为随时随地访问参与测试的机器。目前实验系统均处于同一局域网中,为使外网能访问到局域网内部设备,一般需要将设备的私有IP 变为公网IP。然而,为每一台机器都申请一个公网IP 十分困难,也不必要,本文实验平台通过内网穿透实现这一目的。

实现内网穿透的方法很多[21],本文使用Frp 进行反向代理的方案,该方案需要一台带有公网IP 的云服务器,本实验选择阿里云服务器。不同应用占用的端口不同,例如SSH 需要使用22 号端口,远程桌面的RDP 占用3389 号端口,自建Web 服务一般占用80/443 端口,将工作站作为上外网的代理服务器则需要1080 端口等,因此可以通过开放不同的端口释放不同的功能。

利用Frp 进行反向代理的优点是完全可控,可随意配置端口进行穿透,还可以实现端口复用。多个服务都是通过公网服务器的某个端口暴露,速度与云服务器带宽有关。frp 工具分为frps(server)和frpc(client)两个包,分别安装于公网云服务器和需要被外网访问的各RPi 实验平台。

为避免出现不兼容问题,统一选用0.32 版本的frp 工具。阿里云服务器的操作系统和内网操作系统分别采用Ubuntu 和AArch64 架构的openEuler,因此分别选用AMD 和ARM64 版本处理器。在实际搭建时,应关闭防火墙和开放端口,保证两者畅通。通过Frp 的内网穿透可实现对局域网内部所有在线RPi 实验平台的随时远程访问,同时也便于对性能测试的集中管理。

4 测试集中管理

实验开始时,首先在PC 机上登录客户端软件,通过互联网访问在线RPi 实验平台作为测试对象。使用Loadrunner 或网页加压程序对其进行加压,逐渐模拟用户端的数目,对其进行检测,观察测试对象是否出现死机现象,同时在客户机器上进行性能监控,抓取测试对象的磁盘I/O 吞吐性能参数。

本文设计的RPi 实验平台可用于对openEuler 各项性能指标的分布式测试,包括但不限于:

(1)源码编译、安装源的可获得性评价。测试环境涉及到openEuler 与应用软件的安装,有很多安装是基于源码且随机发生的,这将为评价openEuler 的资源分发能力提供数据支持。

(2)云盘稳定性。利用Seafile 的客户端能力,在测试管理端随机向云盘存储文件,通过不同客户端的数据同步能力判断云盘服务的稳定性和效率,这是一个功能与效率的复合测试。

(3)系统连续开机能力。定时将/proc 目录中的部分内容传输给实验管理服务器,用于判断测试机器的运行情况。

(4)网络基准测试。通过不同客户端从测试管理端收取数据包,观察传输速度、时间以及数据大小等指标,判断网络传输中的系统稳定性。

5 结语

针对目前开源操作系统openEuler 未曾向开源社区人员提供系统的分布式测试平台这一问题,本文在RPi 上安装openEuler,并在其上安装Ceph、Seafile 以搭建基础分布式环境,通过安装Frp 进行内网穿透,利用成熟的软件系统检验操作系统及其应用软件运行的稳定性。该平台避免了以往仅在事先制定的测试用例集上进行系统测试的短板,更能体现用户应用场景的随机性。该平台易于使用、成本低廉,因此能在开源社区和学生实验中推广。然而,该平台在系统性能方面的测试尚不全面,未来将着重研究如何对系统性能进行更完善的测试与评价。

猜你喜欢

端口集群分布式
海上小型无人机集群的反制装备需求与应对之策研究
一种无人机集群发射回收装置的控制系统设计
端口阻塞与优先级
Python与Spark集群在收费数据分析中的应用
基于DDS的分布式三维协同仿真研究
初识电脑端口
8端口IO-Link参考设计套件加快开发速度
西门子 分布式I/O Simatic ET 200AL