APP下载

容器技术在高性能计算环境中的应用

2021-02-12卢莎莎肖海力王小宁

数据与计算发展前沿 2021年6期
关键词:计算环境镜像高性能

卢莎莎,肖海力,王小宁

中国科学院计算机网络信息中心,高性能计算技术与应用发展部,北京 100083

引 言

高性能计算环境聚合了国内多个异构高性能计算资源,由中间件SCE 软件对计算资源进行统一的管理及调度,屏蔽了底层计算资源的异构性,为用户提供统一的计算服务。目前,国家高性能计算环境已经包括了19 个单位的超算系统,部署了多个研究领域的600 余个应用及工具软件[1]。

环境中间件SCE 需要部署于各超算中心的前端服务器,以便完成资源聚合及管理,目前无法保证各前端服务器软硬件的一致性,中间件的部署需要大量的人力和时间。同时,常用科学计算应用软件需要部署在环境的多个超算集群中,以满足用户的计算需求,部分应用软件需要大量的软件依赖及复杂的环境配置,应用软件与超算系统自身软件间的兼容是亟需解决的问题。

本文主要研究了Docker 及Singularity 相关容器技术,实现了中间件SCE 及科学计算软件LAMMPS等软件的容器化封装,并在国家高性能计算环境中进行了部署验证,在一定程度上解决了软件在不同系统中的可移植性问题。

1 国家高性能计算环境介绍

国家高性能计算环境[2]聚合了包括“神威·太湖之光”[3]、“天河-2A”、“天河-1A”在内的多个跨域的、异构的高性能计算资源,屏蔽了作业管理系统、接入方式、管理制度等的异构性,为科研人员提供了具有统一访问入口、使用方法和用户技术支持的高水平高性能计算应用服务[4]。

国家高性能计算环境已经接入包括中国科学院计算机网络信息中心、国家超级计算无锡中心、国家超级计算广州中心等在内的19 个结点。目前,环境聚合计算能力超过460PF,聚合存储能力超过310PB,提供计算化学、分子力学、高能物理、生命科学、海洋科学等领域的开源软件、商业软件和自主研发软件[5]。

SCE 软件[6]是国家高性能计算环境的中间件,环境利用SCE 软件完成资源的管理及调度。SCE 软件包含3 个功能模块Client、 CS (Center Server)和FS (Front Server),其中CS、Client 部署于运管中心,FS 部署于环境中各超算中心的前端服务器,SCE 软件架构图如图1 所示。

图1 SCE 软件架构[7]Fig.1 SCE software architecture[7]

SCE 软件需要部署在高性能计算环境各超算结点的前端服务器,服务器由结点单位自行配置,其软硬件环境均不相同,导致了SCE 软件部署过程非常繁琐,亟需优化部署方式以提升软件部署效率。

2 容器技术介绍

容器是一种标准化的软件单元,它将软件源码及其依赖关系打包,可以方便地在不同的系统环境之间进行快速可靠的迁移,具有轻量化、平台无关性、安全性等特征[8]。Docker 及Singularity 是科学计算领域广泛应用的容器技术代表。

2.1 Docker 技术

Docker[9]是dotCloud 开发的基于Linux Container 的高级容器引擎,采用客户端-服务端的架构模式,适用于大规模应用服务部署的场景。与虚拟机技术相比,Docker 具有明显的优势[10],包括:

(1)轻量级技术:Docker 容器直接共享宿主机Linux 内核,可以以秒级别的时间进行启动。

(2)能够快速构建标准化环境:利用Docker 可以快速构建出完全相同的环境,包括操作系统及所有的软件配置,解决了软件部署环境的适配问题。

(3)方便对服务进行横向扩展:能够快速部署大量的标准化服务,并且能够保证服务间的隔离性。

2.2 Singularity 技术

Singularity[11]始于2015年美国劳伦斯伯克利国家 实验 室(Lawrence Berkeley National Laboratory)的开源项目,专门为大规模、跨节点HPC(High Performance Computer)而开发的容器化技术,并且能够支持Docker 镜像格式的转换。

Singularity 具有以下特性:

(1)Singularity 的镜像包含了软件所有依赖关系的镜像,能够非常好的解决跨计算环境的兼容性问题。

(2)科学计算领域的应用软件大部分需要借助于MPI 之类的并行技术,Singularity 增加了MPI 的兼容能力,带有与宿主机相同MPI 版本的Singularity容器可直接通过mpirun 命令启动,与超算环境集成更加便捷[12]。

(3)Singularity 可以直接与作业调度系统集成,无需为科学计算环境做额外的适配。

与Docker 不同的是,Singularity 启动时,能够保证用户上下文保持不变,使得用户权限在容器内部和外部保持一致,避免用户权限提升等不安全因素,更加适用于普通用户使用应用软件的场景。经过阿里云超算测试,Singularity 容器下测得的HPL (High-Performance Linpack)性能要略优于Docker 容器,且与宿主机的实测HPL 性能相当[13]。

3 基于Docker 的SCE 软件容器化封装

3.1 SCE 软件容器化封装

SCE 软件按照功能分为CS、FS、Client 三个模块,每个功能模块都可以部署在不同的服务器中,其安装流程和运行所需的配置均不相同。因此,对SCE软件的CS、FS 和Client 端均做了容器化的封装,方便软件灵活部署。以CentOS 7 镜像为基础镜像,根据目标模块的不同,选择对应的CS、FS、Client 的源码包进行安装,同时将各模块需要的配置文件进行挂载,完成镜像构建。利用Docker 中ENTRYPOINT指令,指定CS、FS、Client 容器启动时需要进行的操作,包括创建主机秘钥、将配置文件拷贝至指定目录、启动相关服务等,保证容器启动时所有服务及配置能够自动运行。具体流程如图2 所示。

图2 SCE 软件容器化流程Fig.2 Building process of SCE containers

在实际运行中,CS 端和FS 端均需要数据库来存储运行数据,为了方便部署,将数据库服务从CS 端及FS 端剥离,构建了独立的MySQL 镜像。MySQL 镜像以MySQL 5.7 镜像为基础,将CS 端、FS 端的数据库初始化脚本挂载至镜像指定目录,当MySQL 容器启动时,自动执行初始化脚本,完成相关数据库表的创建,具体如图3 所示。

图3 MySQL 容器化流程Fig.3 Building process of MySQL container

整个高性能计算环境除了SCE 中间件之外,还需要底层高性能计算系统才能够进行作业的计算。本文以CentOS 7 镜像为基础,安装Torque 作业管理系统,部署LAMMPS 软件,完成了HPC 镜像构建,能够更好地搭建开发测试环境。

默认情况下,在Docker 容器中修改文件时,会直接存储于容器的可读写层中,容器内部数据会随着容器的关闭一并消失。SCE 软件运行时,有大量的配置文件、运行数据及用户作业信息需要进行存储,这些数据需要长时间留存,不能随着相关容器的关闭而消失。因此,在对SCE 软件进行容器化封装时,必须要考虑数据持久化存储的问题。

对于容器中持久化数据存储[14],Docker 提供volumes 和bind mounts 两种方式,其中,volumes 是在宿主机文件系统上的Docker 工作目录下创建对应的目录来存储数据,其他非Docker 进程无法修改其中的文件;bind mounts 是将宿主机的文件或目录直接挂载到容器中,数据可以存储于宿主机的任何位置,其数据可以被宿主机或者挂载它的所有容器读写。实际运行中,SCE 软件的CS 及Client 模块会部署多个副本,同一模块的多个副本中需要共享部分数据存储,以便对环境信息进行同步更新。所以,SCE 容器的持久化存储采取bind mounts 的方式进行挂载。

通过分析SCE 软件模块的运行模式,对需要持久化存储的数据进行了提取。对CS、FS、Client 容器,需要挂载WORKSPACE 和LOG 目录作为持久化存储目录,WORKSPACE 目录用于存放用户提交作业过程中产生的文件,LOG 目录用于存放环境运行中产生的日志文件;MySQL 容器需要挂载DBSPACE目录作为持久化存储目录,用于存放数据库文件。需要持久化存储的目录在图2、图3 中以灰色模块展示。

3.2 SCE 容器部署

SCE 软件相关容器已经部署于环境中多个结点,经过实际运行验证,各模块容器均能够稳定运行,具体部署方式如图4 所示。

图4 SCE 软件容器化部署示意图Fig.4 Deployment of SCE containers

4 基于Singularity 的应用软件容器化封装

4.1 应用软件选择

国家高性能计算环境中涉及计算化学、分子力学、高能物理等领域的科学计算软件,涉及软件种类较多,本文主要介绍其中常用软件LAMMPS(Large- scale Atomic/Molecular Massively Parallel Simulator)的 容器化封装及测试。

LAMMPS[15]软件是美国Sandia 国家实验室开发的一款开源软件,可翻译为大规模分子并行模拟器,广泛应用于分子动力学相关的计算和模拟工作。LAMMPS 软件在国家高性能环境中使用广泛,环境中已经部署不同版本LAMMPS 软件18 个,涉及13个超算系统。软件使用环境利于测试及推广。

4.2 开发环境搭建

开发环境采用单计算节点,在开发环境完成应用软件的容器化封装,开发环境参数如表1 所示。

表1 开发环境配置Table 1 Configuration of development environment

4.3 LAMMPS 容器化封装

在LAMMPS 软件的Singularity 容器化封装过程中,采用分步打包的方式,留存不同层次的镜像包,以便后期封装更多应用软件时可以复用,具体封装流程如下。

(1) 下载基础操作系统镜像,创建sce-CentOS镜像

Singularity 镜像可以由Docker 镜像转换,本部分直接从Docker Hub 下载CentOS 7 作为容器运行基础镜像,进行常用工具软件的安装及配置。

(2) 创建APP-CentOS 镜像

APP-CentOS 镜像基于sce-CentOS 镜像构建,构建方式采用localimage 方式。主要进行LAMMPS必需的FFTW 库及OpenMPI 的安装。为方便后续测试及用户使用,镜像中安装了1.10.7、2.1.6 和3.0.2三个版本的OpenMPI。

(3) 创建LAMMPS 镜像

LAMMPS 镜像同样采用localimage 方式,基于APP-CentOS 镜像构建。镜像中基于不同版本的OpenMPI 对LAMMPS 软件进行编译。为方便在超算系统中调用,采用Singularity 中app 模块来对不同编译版本的LAMMPS 的相关环境变量及启动程序等进行设置。

4.4 LAMMPS 容器测试

完成LAMMPS 镜像构建之后,在曙光测试集群、中国科学技术大学集群进行了运行时间以及MPI 兼容性的测试。

4.4.1 运行时间测试

LAMMPS 容器运行时间测试在曙光测试集群上进行,该集群配置如表2 所示。

表2 曙光测试集群配置Table 2 Configuration of Sugon cluster

针对不同MPI 版本、不同运行规模,在测试集群上对LAMMPS 镜像进行了测试。以宿主机中OpenMPI 2.1.6 编译的LAMMPS 的运行时间为基准,容器中LAMMPS 运行时间误差不超过2.63%。具体测试结果如图5 所示。

图5 LAMMPS 容器运行时间Fig.5 Running time of LAMMPS container

4.4.2 MPI 兼容性测试

LAMMPS 软件需要借助于MPI 进行计算,Singularity 增加了MPI 的兼容能力,带有与宿主机相同MPI 版本的Singularity 容器可直接通过mpirun命令启动。

LAMMPS 容器与宿主机之间的MPI 兼容性测试在中国科学技术大学集群、上海交通大学集群、曙光集群、曙光测试集群等集群上进行。其中中国科学技术大学集群、上海交通大学集群、曙光集群为正式对外服务集群,集群上已经安装了多个版本的OpenMPI 编译器,中国科学技术大学集群测试环境配置如表3 所示,其他集群配置不再一一赘述。

表3 中国科学技术大学集群配置Table 3 Configuration of USTC cluster

测试结果表明,在宿主机与容器之间的MPI兼容性方面,OpenMPI 2 系列对版本要求较高,OpenMPI1、OpenMPI 3 和OpenMPI 4 系列兼容性较好。具体测试结果如表4 所示。

表4 MPI 兼容性测试Tables 4 Compatibility test of MPI

4.5 LAMMPS 容器应用

目前,LAMMPS 容器已经部署在国家高性能计算环境中,正式对外提供服务。图6 为服务中可以选择的LAMMPS 容器资源。

图6 国家高性能计算环境中LAMMPS 容器部署Fig.6 LAMMPS container in National High Performance Computing Environment

4.6 其他应用软件

除LAMMPS 软件之外,本文同时完成了GRO-MACS[16]软件的容器化封装,并在上海交通大学集群上对GROMACS 性能进行了测试,软件版本均选择2020.2,具体结果如表5 所示。其中性能单位为ns/day,数值越高代表性能越好。由测试结果可以看出,GROMACS 在容器中与宿主机中运行性能相当,可以部署在高性能计算环境中使用。

表5 GROMACS 容器测试Table 5 Testing of GROMACS container

5 总结与展望

本文对中间件SCE 及LAMMPS 等软件进行了容器化封装,通过在国家高性能计算环境中部署验证,容器可以正常运行,能够对外提供服务。中间件SCE 软件的容器化,进一步优化了SCE 软件的持续交付流程,并且能够快速地对相关服务进行横向扩展,提升环境承载能力;应用软件的容器化封装,解决了应用软件与超算系统自有编译环境的适配问题,提升了应用软件部署效率。

后续工作中,还需要对国家高性能计算环境运行相关的LDAP 和Nagios 监控等服务进行容器化封装,考虑利用Kubernetes 等技术对已有容器进行编排管理,进一步优化部署方式。

对于应用软件,测试工作还需要进一步完善,包括分析各超算系统的软硬件特点,针对网络、CPU 类型、MPI 版本等对容器性能的影响进行进一步分析测试及优化。同时,还需要进一步扩充科学计算软件镜像的数量,搭建应用软件镜像仓库,为用户提供方便易用的科学计算软件镜像服务。

利益冲突声明

所有作者声明不存在利益冲突关系。

猜你喜欢

计算环境镜像高性能
云计算环境下船舶无线通信网络入侵检测方法
云计算环境下网络安全等级保护的实现途径
镜像
云计算环境下的信息安全风险评估
镜像
大数据云计算环境下的数据安全
一款高性能BGO探测器的研发
高性能砼在桥梁中的应用
镜像
SATA推出全新高性能喷枪SATAjet 5000 B