随着信息技术的快速发展,云计算、大数据和人工智能技术在各行业不断渗透,其中,开源软件起着关键的作用,特别是在科学研究和工程实践等领域[1,2,3,4,5,6,7]。清华大学、中国科技大学和上海交通大学等国内高校都构建有开源软件仓库镜像为科学研究提供必要的研究工具,而云计算技术的应用拓展和人工智能的蓬勃发展[8,9,10,11,12,13,14,15,16,17],也促使国内华为、阿里和网易等企业开始构建开源软件仓库,供工程技术人员快速部署工程应用环境。
远洋航天测量船在出海期间,任务、科研和随行试验等活动交替开展,对开源软件的需求逐年增大,测量船主要通过卫星通信实现网络数据的传输,但出海时间长,卫星通信带宽资源有限,软件需求量大,一直困扰着测量船上的科研和工程技术人员。特别是在完成设备升级改造,更多地采用自主可控设备之后,对开源软件的依赖程度更是越来越高,因此,非常有必要在测量船上构建开源软件仓库,来满足长期在海上执行任务期间对开源软件的需求。
高校和企业主要通过RSYNC技术实现开源软件的仓库构建,但是这种技术需要与部署在国外的主服务器仓库进行软件同步,同步速度慢,通常情况下只有几十K,且国内的镜像仓库也没有启动RSYNC服务,不支持RSYNC技术[18],所以在测量船上搭建开源软件仓库时,需要通过其他技术实现。
本文使用OpenStack构建了一个云计算平台,基于云计算平台,给出了Debian10/Ubuntu18.04LTS,Fedora31/CentOS8操作系统软件镜像仓库的构建方法,基于Ubuntu18.04LTS镜像实例,使用pip2pi构建了Python软件的pip仓库,基于Ubuntu18.04LTS镜像实例构建了gitlab分布式版本控制服务,并验证了每一种服务的功能,实现了海上离线条件下操作系统仓库的离线服务,Python仓库离线服务和git分布式开源软件分享平台。
基于云计算的虚拟化平台服务框架正在逐渐替换传统的信息技术服务模式,云计算已经成为信息技术和互联网技术发展的主流趋势,在开源云计算技术领域中,OpenStack以其模块化程度高,可扩展性好,可以快速构造公有云和私有云平台而成为关注焦点。OpenStack提供了一整套云计算平台的组件工具集,根据实际需求,可以便捷地以组件为单位实现云计算平台的迅速部署。本文以6个物理节点为基础,在各节点上安装Ubuntu18.04LTS操作系统,将控制节点、网络节点、计算节点、块存储节点和两个对象节点分别部署在6个物理节点之上,实现OpenStack云计算基础架构的构建,在OpenStack云计算平台上根据需求可以方便快速地搭建系统服务,针对测量船出海期间的开源软件需求,创建Debian10、Ubuntu18.04LTS、Fedora31和CentOS8实例用于构建对应操作系统的软件仓库镜像,然后,创建两个Ubuntu18.04LTS实例,其中一个采用pip2pi构建Python软件的pip仓库镜像, 另一个使用gitlab构建git分布式开源软件管理共享平台,其组成结构如图1所示。
OpenStack云计算平台属于基础设施即服务 (infrastructure as a service, IaaS),OpenStack常被称作新一代的云操作系统,如同Linux一样,其旨在构建一个内核,构建面向全球开发者的云计算生态系统。OpenStack当前包括的主要组件有计算服务Nova、网络服务Neutron、对象存储服务Swift、块存储服务Cinder、身份和访问管理服务Keystone、仪表板Horizon、镜像服务Glance等,其中Nova主要用于计算资源生命周期管理,Neutron提供云计算环境下的虚拟网络功能,Swift用于永久类型的静态数据的长期存储,Cinder用于管理计算实例所使用的块级存储,Keystone提供了用户信息管理,为其他组件提供认证服务,Horizon用以管理、控制OpenStack服务的网页控制面板,Glance提供虚拟机镜像的发现、注册和获取服务。采用OpenStack的train稳定版本,通过规划内部通信地址和外部通信地址,OpenStack各组件在6个节点的部署规划如图2所示。
在各物理节点上安装好Ubuntu操作系统之后,需要配置操作系统的网络地址,配置时钟同步,开启时钟同步服务,设置防火墙策略,安装必要的软件工具和配置相应的基础服务,根据图2的组件部署规划,在各物理节点上依次安装数据库、rabbitmq、Keystone、Glance、Neutron、Dashboard、Cinder和Swift等相应的服务,具体构建流程如图3所示,成功安装之后通过Horizon访问管理员登陆界面的部分截图如图4所示。
随着Linux技术的日渐成熟,Linux系统在越来越多的领域得到了普及和应用,通常情况下,Linux系统的更新及软件包的安装均是由系统内建的管理工具下载官方网站或国内镜像网站上的软件包来完成。操作系统的软件仓库(repository)是一个预先准备好的目录或一个网站,包含了软件包和索引文件。软件管理工具可以在仓库中自动地定位并获取正确的软件包,这样就不必手动搜索和安装新应用程序和升级补丁,只需要一个命令,就要以安装所需要的软件,并可解决软件安装过程中的依赖关系,还可以根据指定搜索目录来查找安装新软件。在Debian和Ubuntu操作系统中,使用apt方式管理软件包,而在Fedora和CentOS中则使用yum方式管理软件包。
Debian/Ubuntu系列操作系统的软件包管理,与国产麒麟操作系统的开源版本兼容,值得一提的是,基于ARMv8指令集的64位国产麒麟操作系统也开始使用Debian系列的软件包管理方式。在OpenStack中添加获取到的Ubuntu/Debian系统镜像文件,创建对应的实例,添加浮动地址用于外网访问,配置国内源用于快速下载仓库软件数据,在Debian/Ubuntu操作系统下安装apt-mirror软件镜像工具,配置apt-mirror配置文件,规划apt服务目录,下载服务相关软件,使用apache2通过http协议构建软件仓库离线服务,具体的构建流程如图5所示,构建成功之后,通过Ubuntu客户端测试的结果如图6所示。
Fedora/CentOS系列操作系统的软件包管理,与国产麒麟操作系统的商业版本兼容,都使用了RedHat公司的软件包管理方式,由于云计算技术的持续升温,2019年RedHat公司已经被IBM收购。在OpenStack中添加Fedora/Centos系统镜像文件,创建对应的实例,添加浮动地址,配置国内源等操作之后,在Fedora/CentOS操作系统中安装yum-utils和createrepo软件镜像下载和配置工具,规划服务目录,同步镜像资源,下载相关软件,创建和配置本地镜像,使用nginx通过http协议构建软件仓库离线服务,构建成功之后,具体的构建流程如图7所示,通过CentOS8客户端测试的结果如图8所示。
Python是一种解释型脚本语言,广泛应用于Web服务开发、科学计算、人工智能等领域。pip是Python的一种包管理工具,可以实现对Python软件包的查找、下载和安装等功能。而pip2pi可以快速完成服务器端的pip服务构建,在OpenStack下创建Ubuntu18.04LTS实例等操作之后,在操作系统中安装Python3,并通过pip工具安装pip2pi等必要软件包,通过pip2tgz下载指定Python软件包到服务器端,并使用dir2pi构建pip服务列表,最后通过nginx提供的http协议构建pip软件仓库离线服务,构建流程如图9所示。构建成功之后,客户端通过配置文件将index-url指定为构建好的服务器IP地址,测试结果如图10所示。
Git是一种流行的版本控制系统,广泛应用于软件开发和共享的协同工作,gitlab是一个利用Ruby on Rails开发的开源应用服务,用于实现一个自托管的git项目仓库,可通过Web界面进行访问公开或私有项目,它拥有与github类似的功能,能够浏览源代码,管理缺陷和注释,可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库,团队成员可以利用内置的简单聊天程序(Wall)进行交流。在OpenStack下创建Ubuntu18.04LTS实例等操作之后,安装gitlab必须的软件curl、openssh-server、ca-certificates、postfix, 安装gitlab-ce_12.3.6-ce.0_amd64.deb软件包,修改/etc目录下的gitlab.rb文件完成服务端配置,设置HostIP为指定IP地址,并将对应汉化内容复制到gitlab-rails目录下,执行gitlib-ctl reconfigure和gitlib-ctl start, 可以实现服务部署,操作流程如图11所示,成功安装的界面如图12所示,图13所示为基本的clone操作。
通过在码头数据同步,在海上执行任务的试运行,对具体仓库的数据量、下载速度和日均访问量进行了统计,如表1所示,操作系统仓库数据量最大的是Ubuntu, 最小的是CentOS,这是由于Ubuntu是由软件数量较多的Debian衍生而来,多用于桌面系统,应用软件丰富,而CentOS以稳定著称,软件版本较旧,版本更新缓慢,在服务器端深受欢迎,其应用软件较少,Fedora主要用于RedHat对新软件和新技术的测试探索,其软件也很丰富,通常应用于桌面系统,但其系统稳定性较差。第2列给出了仓库软件的下载速度,Debian和Ubuntu的下载速度远慢于Fedora和CentOS,这是由于在设计之初Debian/Ubuntu采用的是apache2服务,Fedora/CentOS采用的是nginx, Python仓库也采用了nginx, 通常情况下nginx服务的性能优于apache2,gitlab速度不理想的主要原因是其上存储的文件多为文本文件。从日均访问次数可以看出,访问最多的是gitlab平台,主要因为其不仅可以下载软件,还可以上传、分享和协作开发,是一个可以互动的平台,接下来是Python, 考虑人工智能等项目的不断升温导致Python在项目当中的应用越来越广泛,然后是Ubuntu和CentOS,Ubuntu在开发应用中较多,特别是近几年,基于Ubuntu的终端设备开始普及应用,而CentOS主要是由于一些老旧服务设备仍然在用,船内服务器领域的模拟需要用它开展测试,目前Debian和Fedora在船上的使用量并不大。从表1中可以看出操作系统和Python的数据量远小于官方仓库,是因为没有完全同步服务端数据,比如在操作系统中没有同步软件的源代码,在Python中只根据需要下载了部分数据包,后续可根据需要调整同步数据量大小,另外,可以将apache2服务调整为nginx服务或增加SSD硬盘用于改善下载速度,如果有其他的比如ArchLinux和Manjaro操作系统等需求,可以逐步扩展。
表1 软件仓库运行统计 导出到EXCEL
系统服务 |
数据大小/ GB |
下载速度/ (MB·s-1) |
日均访问 次数 |
Debian |
85.7 | 8.3 | 2 |
Ubuntu |
131.0 | 10.5 | 5 |
Fedora |
89.4 | 75.2 | 1 |
CentOS |
55.2 | 22.3 | 4 |
Python |
150.3 | 80.3 | 6 |
gitlab |
50.0 | 15.0 | 8 |
本文通过构建OpenStack云计算平台,搭建了操作系统镜像软件仓库,Python软件仓库和gitlab软件共享平台,实现了测量船海上执行任务期间,操作系统软件和Python软件的快速安装,通过构建的gitlab服务实现了软件等资源的分布式共享和协同开发。随着测量船自主可控设备和软件的逐步部署,开源软件的需求会随之增大,根据海上任务需求,今后,在此云平台基础之上,可进一步扩展、更新和升级系统功能,实现更加完善的离线软件仓库和协同开发共享平台。
标签:
上一篇: W企业仓库作业区布局优化研究
下一篇: 教学实验型自动化立体仓库堆垛平台设计