APP下载

基于虚拟化的火箭测发控软件冗余技术

2020-07-15吕跃鹏刘俊阳

航天控制 2020年3期
关键词:主从命令虚拟化

吕跃鹏 刘俊阳 杨 喆

北京航天自动控制研究所,北京100854

0 引言

运载火箭测发控软件的主要任务是完成火箭的测试和发射任务,它具有流程控制、数据处理、分析判读和人机交互等功能。测发控软件大多采用分布式并行架构,即由业务软件在网络系统上分布运行,构成并行处理的软件系统[1]。在故障发生时,这种非集中模式下软件及其业务的迁移、恢复存在很多困难,在B/S架构下由后台业务群集中实现冗余方案,能使冗余技术的实施更加灵活、便捷。同时,随着某些火箭测发控系统对测试设备产品化、低成本、轻量化的发展要求,计算机资源和测控设备的配置越来越少[2-3]。为了更好地实现业务隔离、降低耦合、提高可靠性,需要在有限的计算机资源基础上利用虚拟化技术实现关键业务和功能的冗余,更好地保障发射可靠性。虚拟化技术是通过软件实现将计算机及物理设备软件化,隐藏真实的计算机硬件,抽象出多个计算机系统软硬件资源,这些资源相互独立,为用户提供隔离的操作接口和交互功能。由于虚拟化具有很好的可移植性、容错性,特别是其中轻量级虚拟化容器技术的应用,能够更加完善测发控软件冗余技术的实现,同时又在很大程度上保持了原有软件的实时性。

本文提出的基于虚拟化的测发控软件前后端业务的冗余技术,为提高虚拟化环境下测发控软件的可靠性,提供了一条有效途径。

1 测发控软件业务虚拟化技术的实现

测发控软件按业务可以划分成控制域和交互域2个业务域,同时存在一个独立的数据库系统,每个业务域又是多个业务(功能)的集合。控制域包括流程控制通信业务容器和协议处理业务容器。交互域包括前后端交互业务容器、数据处理业务容器。控制域是软件系统的核心业务,用于解析操作请求并控制设备完成测试发射任务,以主从冗余方式热备工作。交互域用于获取、解析采集的数据,提供可视化服务和数据存储功能。数据库用于记录两个域间包括交互数据、操作数据在内的全部信息[4]。

测发控软件以业务功能为单元,部署到虚拟化容器(下文简称容器)上,多个相同业务的容器相互配合构成虚拟化业务域,形成对业务的主备冗余。测发控软件虚拟化平台的组成如图1所示。

图1 虚拟化测发控平台架构图

本文建立适合于测发控软件的虚拟化平台,前后端交互业务容器采用tomcat 作为业务容器基础镜像,并整合交互域中的前后端交互业务(自研的WEB服务端软件),打包成新镜像,以容器的形式进行部署。控制域和交互域中数据处理业务容器,都是基于linux作为基础镜像,并更新网络、通信、java等相关工具包和依赖库,重新整合打包成新镜像,以多个主备容器的方式运行在虚拟化平台上[5]。

前后端交互业务容器配置文件Dockerfile主要内容如下:

# Dockerfile

FROM mywebserver:v2

ADD MyComMidDocker_war.war/usr/local/tomcat/webapps/

ADD TomcatLib/* /usr/local/tomcat/lib/

CMD ["catalina.sh", "run"]

控制域或交互域数据处理业务容器的LINUX容器配置文件Dockerfile主要内容如下:

#Dockerfile

FROM ubuntu:latest

……

COPY FlowControl ~/DockerImage/

WORKDIR ~/DockerImage/

CMD ["./FlowControl"]

通过上述方法对基础镜像进行包装,扩充镜像中的库和工具的支持,从而可以通过研制的镜像来形成测发控软件后端业务的容器群,达到容器间相互冗余的目的[6]。

2 控制域冗余技术的研究

控制域包括了流程控制业务容器和协议处理业务容器。流程控制业务用于驱动测试流程,通过向协议处理业务发出命令消息,实现控制和测试协议,并同现场设备进行交互。

协议处理业务是依据数据帧格式协议解析流程控制业务的命令消息,并依据数据协议将命令消息转发给箭上或者地面设备,控制设备执行。

流程控制业务和协议处理业务部署在多个虚拟化容器中,相同业务的不同容器形成主从冗余。本文对主份施行热备方式的业务冗余策略,对备份施行冷备方式的容器冗余策略。热备份方式主要通过心跳和业务通信等状态信息判断业务的健康状况,并实时切换主从业务。冷备份方式主要通过监控充当备份角色的业务载体容器本身的健康状况,判断故障和重新启动备份容器。即业务容器启动后管理模块定期发送HTTP请求到容器,等待容器响应;一旦等待时间超时,则将判断容器故障,依据配置信息对问题容器进行重启,以保持从容器的原有数量。下面主要对热备方式进行论述。

2.1 控制域的冗余技术

2.1.1 流程控制业务的冗余技术

流程控制业务容器在测试开始时提供主、从2种状态的选择,其中一台流程控制业务容器运行主机状态程序,其它流程控制业务容器运行从机状态程序。流程控制业务主机控制流程,从机容器充当监听角色,并接收主机状态程序发来的测试状态信息。主机状态控制整个测试发控流程,并将当前的工作状态通知从机状态程序,使运行在2个容器上的测发控程序同步热备运行。当运行主机状态的容器发生故障时,如“心跳”停止、通信中断等,运行从机状态的流程控制业务容器可通过前端的流程控制页面人为切换为主机状态,接管流程控制工作,而原运行主机状态的流程控制业务容器,可视故障状况人为决定是否重新初始化进入从机状态工作。

2.1.2 协议处理业务的冗余技术

协议处理业务容器也采用主从冗余方案,1个时刻仅有1个控制域容器能够控制执行设备协议处理业务,协议处理业务容器将完全自主实现较为复杂的冗余策略;

1)流程控制业务容器向协议处理业务主从容器均发送指令,协议处理业务主从容器均回复确认帧;

2)协议处理业务由当班容器执行动作,执行完成后,向流程控制业务主从容器均上报执行结果(若收到指令时是协议处理业务主容器当班,在执行动作期间发生了主从切换,则由协议处理业务从容器回复执行结果);

3)协议处理业务容器采集到的模拟量、状态量等,通过组播方式向交互域中数据处理业务容器发送;

4)协议处理业务主容器向协议处理业务从容器发送心跳信息,心跳信息中包含协议处理业务主容器状态,协议处理业务从容器若一段时间未收到心跳信息,或者心跳信息显示主容器状态异常,则进行自动切换到最先启动的从容器;

5)流程控制业务容器可以通过主从切换指令强制切换协议处理业务容器的当班状态;

2.2 主要数据流和数据结构

控制域的数据流如图2所示,其中包括了流程控制业务容器主从间通信、协议处理业务容器主从间通信,以及两个域之间的通信方式。

流程控制业务容器数据流图,如图3所示。

流程控制业务主容器在启动时可以选择主从状态,运行处于主状态时,通过和协议处理业务的通信,控制包括PLC、PXI、LXI、测试计算机等设备终端,执行测试及发射控制任务。同时,流程控制业务主容器将测试项目、步序、数据等信息发送给控制域从容器,供从容器跟踪当前的测试进程,当发生切换时能无缝接续。

图2 控制域冗余通信方式图

图3 流程控制业务容器数据流图

协议处理业务容器主从数据流图,如图4所示。

协议处理业务主容器启动后,接收流程控制业务容器发送的设备控制命令、等待设备回令或数据并发送给流程控制业务容器,同时接收对设备的点采和频采数据消息并转发给交互域。主从容器间进行心跳检测,多个从容器发现主心跳信息异常时切换主容器,由健康的从容器接续运行。

控制域冗余数据结构分3类:

1)流程控制业务主从容器间

流程控制业务主从容器间通信内容统称为测试状态信息,主要包含了命令、回令响应和消息通告3种数据消息格式。命令消息包括了测试项目通告命令(TestConfCMD)、查询控制命令(CtrSearchCMD)、回令响应消息(RespMsg);测试通告消息只包含测试状态通告消息(TestStatusMsg)。

测试项目通告命令(TestConfCMD)用于主容器和从容器保持数据一致性。消息内容包含对应测试编号、测试项目代码、测试项目名称、测试项目步骤和测试数据。测试编号是选择的测试项目号;测试项目代码是测试项目号对应的名称代码;测试项目名称是测试项目号对应的名称;测试项目步骤为测试项目对应的流程步编号;测试数据为测试过程中点采的数据,包括了数据名称、数据的实测值、该项数据的阈值。

查询控制命令消息(CtrSearchCMD)是主容器向从容器发送,查询从响应主的命令任务,包含ID号和命令参数2种数据。ID号是当前需要给从容器发送的控制命令,共有3种命令,分别是清空命令、主从容器切换命令、主查询从容器是否允许切换命令;命令参数为3种命令的操作内容,清空命令对应的清空流程列表的操作命令消息;切换命令对应的切换与否的命令消息;查询命令对应的切换允许的回应状态命令消息。

图4 协议处理业务容器数据流图

回令响应消息(RespMsg)用于从设备回复主设备确认命令,包含命令ID和命令回复确认标志。命令ID为主设备的控制命令ID号;命令回复确认为获取命令后的应答状态码。

测试状态通告消息(TestStatusMsg)是主从间通信保持当前测试状态一致,同时在切换后不影响整个流程的一种措施,包含测试步序号和运行状态。测试步序号为当前测试项目及当前测试步骤编号,运行状态为当前流程运行状态信息。

2)协议处理业务主从容器间

协议处理业务主从容器间使用心跳信息进行通信,通信标识为DHeartMsg,用于判断当前主容器是否工作正常。

心跳信息(DHeartMsg)仅包含了主机的在位信息。

3)控制域内

控制域内通信是在流程控制业务容器和协议处理业务容器之间进行的,通信内容为冗余控制命令,名称为CMDMsg。流程控制业务容器将控制命令发送给协议处理业务容器,后者通过设备号封装对应的数据帧,和真实设备进行通信。

控制命令(CMDMsg)包含接受控制命令的设备ID号和具体命令消息。设备ID号为接受控制命令的设备号,命令消息为对设备操作的命令内容。

3 交互域冗余技术研究

交互域是人员操作交互的业务集合,包括人机交互业务、前后端交互业务容器、数据处理业务容器。人机交互业务与前后端交互业务容器采用B/S架构设计。人机交互业务运行在前端浏览器上,前后端交互业务容器提供后端与对前端的服务。

人机交互业务由数据交互页面和流程控制页面构成。前者显示内容来自数据处理业务容器处理解析后的点采和频采设备数据,再经可视化处理后呈现在页面上,供工作人员观察分析;后者提供可视化操作,使得用户能够通过简单的操作即可和虚拟化平台及真实设备进行交互。前后端交互业务容器支持与人机交互业务中的多种页面进行通信,解析来自页面的请求信息和数据,并将解析完成的命令发送给控制域的流程控制业务容器进行处理,数据参数订阅信息发送给数据处理业务容器。数据处理业务容器负责建立和连接数据库,存储数据,同时解析来自控制域协议处理业务容器对设备的频采数据,并依据订阅信息进行发布。

3.1 交互域的冗余技术

交互域的冗余技术体现在页面故障恢复和登陆安全性2个方面。页面故障需要恢复时,只需重新访问前后端交互业务容器IP和端口号即可,登陆安全性措施是为保证流程控制页面控制权的唯一性。

流程控制页面在故障恢复时,需要2个部分的信息,即心跳信息和页面操作记录。流程控制页面正常运行时,每100ms发送给后端交互业务容器1次心跳信息,超过1s后端交互业务容器未收到心跳信息,则判断页面故障退出,重新启动页面;页面操作记录用于存储对页面的操作痕迹,并更新数据库中的操作记录表。

数据交互页面的故障恢复技术,依赖心跳信息和参数选项记录。心跳信息同流程控制页面的心跳信息记录,参数选项记录用于记录交互页面订阅的数据参数,虚拟化平台依据订阅信息定期发布更新数据,并在交互页面进行显示。

登陆安全性针对控制页面,出于对设备控制功能和安全性的需求,必须保证同一时刻有且仅有1个控制页面可以操作,避免多个用户同时登陆流程控制页面以及后登陆用户可以替换先登陆用户。流程控制页面登陆安全性技术,在前后端交互业务容器中实现。前后端交互业务容器需要将页面登陆信息作记录,并在记录中更新流程控制页面在位个数。

3.2 主要数据流和数据结构

交互域的通信方式图和数据流图分别如图5和图6所示,其中包括了前端2种页面和前后端交互业务的通信、前后端交互业务容器和数据处理业务容器的通信,以及数据处理业务和数据库的通信。

图5 交互域冗余通信方式图

图6 交互域数据流图

交互域的通信使用B/S模式的Ajax请求响应模式,页面通过json将数据发送给前后端交互业务容器,并响应业务容器返回的数据。

数据处理业务容器和数据库间通信数据统称为解析数据;数据处理业务容器和协议处理业务容器间通信数据统称为原始数据。

交互域冗余技术使用的数据结构有:

1)流程控制页面通信数据结构

请求响应数据中用于流程控制页面和后端通信的消息包括心跳信息(CPHeartMsg)和页面操作记录(CPOptMsg)2种。

心跳信息(CPHeartMsg)用于判断流程控制页面或交互页面是否正常,内容包含页面编号和页面重启标志位。页面编号为流程控制或交互页面编号;页面重启标志位,用于区分页面因故障关闭或正常关闭。

页面操作记录(CPOptMsg)用于传递给数据库保存页面交互的所有操作,内容包含流程名称、流程步和流程运行状态。其中,流程步为当前流程运行对应的步序号;流程运行状态标识当前流程运行状态为全流程运行、单步运行或终止运行。

2)数据交互页面通信数据结构

请求响应数据中用于数据交互页面和后端通信的消息包括心跳信息(VPHeartMsg)和参数选项(VPParaMsg),心跳信息数据结构定义同1)。

参数选项(VPParaMsg)记录交互页面编号和交互页面订阅的参数数据集合。

3)数据库表数据结构

数据库包括登陆信息表、流程状态表、存储数据表、前端交互操作表在内的4种数据表。

登录页面信息数据库主要包含网页类型标识码、网页类型、交互页面和流程控制页面的数量信息。如表1所示。

表1 登陆页面信息表

表2用于记录设备点采和频采后解析完成的数据,及数据对应的上下限值,更新数据值,保证数据的有效性。

表2 存储数据表

交互操作表(表3)用于记录对页面的操作记录,为还原页面状态提供参考。依据页面布局将页面可分为多个区域,页面操作后立即更新对应区域号的数值。

表3 交互操作记录表

流程状态表(表4)用于记录流程运行状态,流程名编号为测试项目的编号;流程步号用于记录流程运行步序号;流程状态中0x00表示开始全部流程、0x01表示单步运行流程、0x02表示停止流程运行。

表4 流程状态表

4 实验

本文对冗余技术方案的主要冗余功能和性能进行实验验证。

4.1 从容器健康检查和故障恢复

容器级健康状态检查工作包括:管理模块和容器进行HTTP请求响应通信,定期检查容器是否有反馈,设置超时响应时间(2s),超过后,则认为容器已经失效,需要重新启动容器。业务容器健康监测配置文件伪代码如下所示:

Master.yaml文件如下:

apiVersion: v1

kind: Pod

metadata:

labels: myweblive

name: weblive

spec:

……

livenessProbe:

httpGet:

path:/_status/healthz

port: 80

initialDelaySeconds: 15

timeoutSeconds: 2

容器发生故障并重启运行,效果如图7和图8所示。

图7 容器状态异常

图8 容器重新启动成功

容器因故障退出后,可以自动重新启动,当主业务容器发生故障重启,从业务容器接替主容器开始工作,主容器重启后成为从容器,执行监听任务。

通过容器自身的健康检查和自动重启功能,能够自主对容器重启,无需手动重启。

4.2 冗余切换时间性能分析

为了验证容器在业务冗余中的性能,将同样的业务分别部署在物理机和虚拟化容器上,重点比对冗余切换业务在2种平台上的运行性能。

实验环境软硬件参数如表5所示,

表5 实验软硬件环境

a)业务启动时间性能差异分析

重启物理机和业务容器,比对两者成功业务启动的时间如图9所示。

图9 物理机和容器业务成功启动时间比对

如图9中的对比,业务在容器平台启动的时间略低于物理机平台,差值一般在0.5s内。

b)业务冗余切换性能分析

业务容器间心跳信息的通信,等待超过200ms,即切换主从业务。

如图10所示,2种业务平台主业务切换为从业务并接替工作的时间,相差为数十微秒量级。

通过冗余的功能和性能试验,可以发现业务冗余在虚拟化容器平台上的性能低于真实物理机,但是两者差距在可接受范围内。同时,容器在隔离性、封装性和迁移性上都有较好的优势,可以弥补性能上的不足。

图10 物理机和容器业务主从切换延迟

5 结束语

本文研究并提出了测发控软件在虚拟化平台上的冗余技术,提出了具体的实现方案,实验证明能更好地满足地面测发控软件的可靠性和健壮性需求,为提高发射可靠性提供了有利保障。

猜你喜欢

主从命令虚拟化
只听主人的命令
基于OpenStack虚拟化网络管理平台的设计与实现
对基于Docker的虚拟化技术的几点探讨
移防命令下达后
FANUC系统PROFIBUS主从功能应用
虚拟化技术在计算机技术创造中的应用
基于主从控制的微电网平滑切换控制策略研究
这是人民的命令
基于飞行试验数据的仿真模型主从一体化检验
存储虚拟化还有优势吗?