摘要:随着云技术的发展,使用容器云技术对航空软件进行应用部署和管理,能够更好地满足其对安全性、可扩展性的需求。航空软件借助容器云技术能够在不同的环境中运行,同时使用容器编排系统自动化管理确保软件的高可用性和故障隔离,合理调控航空软件对中央处理器、网络、存储等资源的利用,以保证高效的资源利用率。本文介绍了容器云的相关技术、应用现状,并以此为基础,提出了一种基于航空软件的容器化部署管理云平台架构,介绍了实现方案,并将航空软件部署在容器化部署管理云平台上,对平台的功能和性能进行了测试与分析。
关键词:容器云框架;航空软件;应用部署;容器化管理
航空领域的软件往往面临定期维护和更新的需求,不同型号机型搭载不同的系统环境,增加了软件复用的难度和软件平台适配的工作量。容器云技术自身轻量、灵活、易于部署、快速启动的特点,使得软件可以在不同的环境中平滑移植并运行,提高了软件复用的灵活性,减少了部署和维护的复杂性,提高了软件适配的效率。
本文通过研究实现了一个适用于航空领域的容器化部署管理云平台框架,为航空软件的设计、系统集成提供了高效、低成本的容器化应用开发部署解决方案。
基于容器云技术的通用框架
基于容器云技术的框架可以提供高可扩展性、灵活、可靠的解决方案,以满足航空软件的业务需求。基于容器云技术的通用框架如图1所示。
最底层的基础设施层提供支撑整个容器云平台运行的基础设施资源。该层通过提供底层资源和环境,使得容器和应用程序能够正常运行。
容器运行时层包括负责实际运行容器的组件,提供容器的资源管理和监控等功能。
容器管理层提供负责管理和协调容器化应用程序部署和运行的关键组件,以一种集中管理和编排容器的方式,确保应用程序在容器集群中高效运行。
应用层作为容器应用运行层,运行各种容器化应用服务,以支持应用程序的运行和管理。
容器云技术的通用框架可以提供高可扩展性和灵活性,使软件能够快速部署和扩展应用程序,提供高质量的服务,并满足不断变化的业务需求。这种框架还可以提供高可靠性和可恢复性,以应对故障和异常情况,确保系统稳定运行。
航空软件容器云平台框架
容器云在航空领域的应用
在航空领域,通常使用容器云技术中的容器编排管理系统,自动化地管理航空软件容器化运行,以此来确保航空软件的可用性。如果一个容器发生故障,则容器管理系统可以快速地替换它,以保证系统的稳定性,使得航空软件实现高可用性和故障隔离。
此外,容器云技术在航空软件中能够自动扩展应用实例,合理调控资源、流量,以保证高效的资源利用。通过使用容器云的隔离、网络策略、认证控制等安全性功能,可以满足航空软件的安全性需求。
航空软件容器云框架设计
航空软件容器云框架实现了以应用为中心的平台服务[7]。通过容器化、容器编排管理等技术,解决传统架构的耦合性高、可扩展性低和横向扩容困难等问题,使开发人员专注于应用功能本身[8]。该框架通过管理控制、高效的任务封装和进程级别资源隔离,实现了对应用服务运行的高效管理。
本文基于容器云技术的通用框架技术,以实现航空软件的高效部署管理为目标,将航空软件容器云框架分为业务运行层、平台功能层、基础设施层三部分,如图2所示。
业务运行层
由于传统航空应用软件存在自动化部署困难、在同一服务器上运行多个实例难以共存、难以通过增加新的实例来进行横向扩展等缺陷,因此在业务运行层将航空软件应用容器化。使用docker容器技术,对应用进行容器化改造与构建,从而保证部署在不同计算节点时的环境一致性。
业务运行层部署的云原生服务组件可以构建容器云平台多租户使用模块,该模块支持多个租户(或用户)在同一容器云平台上共享和管理容器化应用。其不仅可以为不同租户提供资源隔离和管理灵活性,还可以提高资源利用率、安全性和可管理性。
此外,业务运行层部署的容器云定制化控制台还可以为管理者提供可视化的定制需求,从而提高操作效率和可管理性。
平台功能层
2.4.1 存储管理
航空软件通常需要处理大量数据,这些数据是关键的资源对象。由于容器的联合文件系统(UFS:UnionFileSystem)机制,容器数据只存在于临时存储器中,关闭容器后数据会丢失,因此需要一种方式来保存需要持久化的数据。
(1) 持久化策略与存储策略
容器中的数据持久化大致分为以下两种方法:(a)绑定挂载。将容器中的数据挂载到宿主机上的目录,实现数据的持久化,这种方法简单易行,但缺乏灵活性。(b)外部存储卷。通过外部存储卷,将容器数据存储在云存储服务器或分布式文件系统中,实现数据的持久化和共享,这种方法具有更好的灵活性和可扩展性,但需要额外的配置和管理。
容器中的数据存储方法有以下几种:(a)本地存储,适用于非长期存储的数据,在容器的本地存储中读写数据。本地存储性能高,但不持久。(b)云存储,适用于需要长期存储和跨容器共享的数据,将数据存储在云存储服务中,这种方法具有高可用性、可扩展性和数据安全特性,但需要配置和管理。(c)分布式文件系统,将数据分散存储在多个节点上,实现高可靠性和可扩展性,这种方法灵活自由,适用于大规模容器集群的数据存储需求。
综上所述,选择容器数据持久化与存储方法时,需要考虑应用场景和需求。如果对数据可靠性要求不高且简单,可以选择挂载主机目录或使用容器的本地存储;如果对数据安全性和可扩展性有要求,可以选择外部存储卷、云存储服务或分布式文件系统。根据航空软件对数据安全性要求高且有可扩展性的需求,可以使用外部存储卷的方法,将容器数据存储在云存储服务或分布式文件系统中进行存储。
(2) 存储插件
容器云平台通常提供容器卷插件,用于管理和提供存储卷的功能。容器卷插件允许用户在创建容器时指定需要挂载的存储卷,并提供卷的生命周期管理功能。应用这些插件,便可以通过程序访问和管理持久化的数据。
2.4.2 调度管理
(1) 调度策略
航空软件的数据规模庞大,且对准确性要求高,对集群中的容器调度策略有特定的需求。因此,航空软件容器云平台也提供了基于标签、亲和性设定的调度策略,以保证弹性和灵活性。
(2) 资源监控和精细化调度
资源监控和精细化调度功能确保容器在集群中合理部署和运行,并平衡容器运行资源要求和集群节点资源的利用。通过比较实际资源状态和期望状态,可以动态调整容器在节点上的分布,实现资源调度的动态优化。
2.4.3 日志与监控管理
日志与监控管理模块支持对航空软件运行过程中的日志数据、监控信息的搜集、查看和分析,以支持软件性能评估、结果验证和问题排查等功能,从而满足航空软件对故障追溯的需求,提高系统的安全性。
(1) 事件日志
航空软件运行过程中会产生大量事件,例如模拟计算的开始和结束、重要参数的变化、计算过程中的异常情况等,容器云平台提供了事件日志功能,用于收集和记录这些重要事件,以便后续分析和追踪。
(2) 审计日志
航空软件在研发和应用过程中需要多人协作,涉及不同用户的操作和数据访问,为了确保软件的安全性和合规性,容器云平台提供了审计日志功能,用于记录用户的操作行为和数据访问情况。
(3) 应用日志
航空软件的计算过程通常涉及大规模的数据处理和复杂的算法运算,为了监控软件的执行情况、分析性能瓶颈和进行结果验证,容器云平台提供了应用日志功能,用于记录航空软件在计算过程中的详细日志数据,包括任务执行状态、计算步骤、输入输出信息、算法运行时间等。
(4) 监控管理
监控管理提供实时监测集群中节点和应用的运行状态、资源信息以及异常应用的定位等能力,为研究人员和开发团队提供全面的系统监视和问题定位手段,监控管理功能还支持快速查看异常应用并快速定位到应用详情,为航空软件的研发工作提供了有力的支持。
综上所述,日志与监控管理模块的框架图如图3所示,系统运行时将所有日志信息统一存储到磁盘内,由数据搜集器来捕获日志中的有效信息,并分别形成事件日志、审计日志、应用日志、监控信息,通过分析器得到重要信息摘要,对外提供统一的分析接口以及监控信息的可视化,将产生的数据存储到磁盘并备份以保证日志的安全性。
2.4.4 工作空间
工作空间为研究人员和开发团队提供便捷的工作环境和资源管理,用于进行仿真分析和任务处理。通过工作空间管理功能,用户可以进行工作空间的创建、编辑、查看和删除,该功能为航空软件研发团队提供了可定制的灵活工作环境。工作空间的查看功能使用户能够快速访问和浏览已创建的工作环境,提高了研发效率和团队协作能力,促进了团队成员之间的合作和信息共享。
2.4.5 镜像管理
镜像管理提供对应用容器化打包后的镜像管理功能,包括镜像构建(docker build)功能,远程镜像仓库存储(docker registry)功能,镜像拉取(docker pull)功能,本地镜像管理(dockerd)功能等。
2.4.6 容器网络
容器网络提供集群内子网管理功能,支持用户自定义虚拟网段,用于应用服务的网络调度。网络管理中心以页面的方式查看和管理整个子网,此功能模块可以查询每个子网空间的名称、IP段、安全等级、备注,删除已有的子网,修改子网等信息,配置黑白名单,同时也可以创建新的子网。
2.4.7 容器存储
容器存储基于容器开放接口规范(OCI:Open Container Initiative)中规定的容器挂载配置方式,设计了一套实现挂载配置的机制,使容器可以操作主机上的指定目录。
2.4.8 容器编排
容器编排提供了容器的创建、更新、启动、停止、查看、删除等生命周期管理功能。创建容器时可通过配置中央处理器(CPU:Central Processing Unit)、内存、磁盘等提高资源利用率。此外,容器编排还具备负载均衡能力,支持资源池最优均衡调度策略算法,当节点负载过高时启动均衡策略,自动将应用迁移到集群中最优的计算节点。
2.4.9 数据存储扩展
按照标准串行通信接口(SCI:Serial Communication Interface)实现的存储功能可直接接入航空软件容器云平台中,为任务应用提供数据存储功能。
基础设施层
基础设施层的主要资源包括数据存储服务器、网络设施、防火墙等,主要功能如下:
(1) 提供基础资源
基础设施层的功能之一是提供所需的计算、存储和网络资源,这些资源是容器化应用程序运行的基础,确保应用程序能够高效运行。
(2) 容器调度和管理支持
基础设施层为容器调度管理提供部署条件,确保容器可以在可用的服务器上运行,并协助完成负载均衡和自动扩展等管理功能。
(3) 数据存储和管理
基础设施层的数据存储服务器支持数据的持久性存储,并提供数据备份和恢复机制,确保数据的完整性和可用性。
(4) 网络支持
网络设施和防火墙提供了网络连接和安全性,确保应用程序之间的通信可靠性和安全性。
(5) 监控和告警
基础设施层通常包括监控工具,以监视服务器和网络的性能,以及应用程序的健康状态,这些数据有助于实时响应问题并进行性能优化。
(6) 可扩展性和弹性
基础设施层的资源通常是可扩展的,可以根据需要进行动态扩展,以应对流量的波动和增长。
用原型验证
应用原型验证环境
本文通过3台D2000开发机和3台X86虚拟机的硬件环境,采用高可用性架构搭建航空软件容器化部署管理云平台原型验证环境,如图4所示。其中,6个节点通过千兆以太网交换机连接,平均时延小于1ms,磁盘顺序读性能———每秒进行的读写操作次数为4713次,带宽为73.7Mbit/s;磁盘顺序写性能———每秒进行的读写操作次数为1718次,带宽为26.8Mbit/s。
为6个集群内节点同时部署容器化部署管理云平台,基于该平台部署容器化应用用于功能、性能测试。其中,管理节点部署在3台x86虚拟机上,分别部署1个银河麒麟V10操作系统和2个Ubuntu20.04操作系统,其中部署了Ubuntu20.04操作系统的节点同时也可作为工作节点在集群内部运行;工作节点部署在3台D2000开发机上,分别部署2个银河麒麟V10操作系统和1个Ubuntu20.04操作系统。
通过在该原型验证环境中的功能、性能测试,确保航空软件容器化部署管理云平台运行框架的有效性和稳定性。功能测试包括存储管理、调度管理、日志与监控管理、工作空间、镜像管理、容器编排等;性能测试包括节点故障检测时间、容器故障恢复时间、容器启动时间、节点网络带宽占用、内存资源占用、CPU资源占用等。
应用原型验证结果分析
基于上述环境,通过编写测试用例,验证容器云技术在航空软件容器化部署管理平台的应用,对平台功能、性能进行测试。
功能测试包括:存储策略验证,持久化功能正常,容器关闭后数据保留,启动后数据可正常访问,外部存储卷功能正常,数据成功存储在卷中,新容器可以访问之前存储的数据;调度管理验证,资源监控功能准确收集容器的运行状态和性能指标,调度配置实现资源平衡和优化;日志与监控管理验证,各类日志准确记录和存储,并支持检索和管理,监控数据准确收集并展示容器的运行状态和性能指标。
通过功能测试结果分析,节点1正常运行的容器应用通过故障注入、实时监测等方式,可以顺利迁移至节点4,实现了容器化应用的跨平台迁移能力,降低了软件复用的难度和平台适配的工作量,提高了软件复用的灵活性,减少了部署和维护的复杂性。
(1) 节点故障检测时间
在多节点集群工作正常、运行稳定的前提下,节点会定时向管理节点上报自身状态,超过一定时间不上报管理节点就会认定节点发生了异常,从而上报事件。通过模拟故障,记录开始故障时间为startTime,查看日志信息获取节点故障时间为endTime。两者相减即为节点故障检测时间,约等于1536ms,测试结果如图5所示。
(2) 容器故障恢复时间
管理节点定时检测容器状态,当检测到容器状态异常时会重启容器。通过杀死容器进程模拟容器故障,检测到容器发生故障记录日志打印时间为startTime,当出现新增或者更新完成时,容器故障恢复,记录日志打印时间为endTime。两者相减即为容器故障恢复时间,约等于175ms,测试结果如图6所示。
(3) 容器启动时间
容器启动成功后,通过命令行查看容器开始创建时间为Createdtime,查看容器本身记录启动成功时间为StartedAttime,两者相减即为容器启动时间,约等于57ms,测试结果如图7所示。
(4) 节点网络带宽占用
通过dstat工具统计各个节点5min内的网络收发的平均值,即为节点自身所消耗的网络带宽。使用dstat-n-t530命令统计计算节点150s内的网络收发数据情况,每秒接收数据均小于30kbit、每秒发送数据均小于20kbit,测试结果如图8所示。
(5) 内存资源占用
通过命令行查看内存资源占用情况,top-d60命令可以显示各个进程1min内的资源使用量,其中RES表示物理内存,查看进程的物理内存内占用情况。各个组件内存资源占用均小于200Mbit,测试结果如图9所示。
(6) CPU资源占用
通过命令行查看CPU资源占用情况,输入top-d60按E之后,可以统计节点1min内的CPU资源的空闲率平均值。各个组件CPU占用均小于500毫核,测试结果如图10所示。
关键性能测试对比结果如表1所示。
综合以上性能测试结果,节点故障检测时间、容器故障恢复时间、容器启动时间均优于预期结果,通过航空软件容器化部署管理平台的应用,可以更直观、更高效地对容器化应用进行实时监控,满足航空软件的高实时性、高可靠性等要求。节点网络带宽占用、内存资源占用、CPU资源占用均优于预期结果,实现了容器化应用的资源高效利用,具有良好的性能表现和应用潜力。
结束语
航空软件的容器化部署为航空软件的设计、性能评估和系统集成提供了高效、经济、安全的工具和方法,实现了容器应用的自动化部署运行、故障检测与恢复等能力,降低了软件复用的难度和平台适配的工作量,提高了软件复用的灵活性,减少了部署和维护的复杂性,推动了航空领域智能化发展和进步。本文通过容器云技术在航空领域的研究与应用,为航空软件提供了一种统一的容器化部署方法,支持容器监控、调度、日志查看等功能,通过将物理资源虚拟化为多个虚拟资源,有效降低了内存、CPU等资源占用,提高了资源利用率,推动了容器云技术在航空软件的研究与应用。
第三届中国民用航空机载与软件大会
参会、预定展位
请扫描上方二维码
更多咨询请联系我们
AIMME | 杨女士
T : 021-62201806
M : 189 6441 7669

