《工业控制计算机》2021年第34卷第6期127基于容器平台的调度自动化系统的系统管理的实现
Implemestation of SysPem Masagemest for DispaPchisg AuPomaPion SysPem
Based on Costaiser PlaPform
王艳蓉孙超吕志强张康赵振(南京南瑞继保电气有限公司,江苏南京211102)
摘要:随着信息技术的飞速发展,Docker容器化技术已逐步应用到调度自动化系统中。Kubarnatas作为新一代容器化应用集平台,具有资源自动调度机制及弹性扩展等优点。目前,Kubernatas开始作为电力调度自动化系统的平台遥介绍了基于容器平台Kubarnetes的调度自动化系统的系统管理的设计及实现,对该系统管理的系统框架、应用集管理、容器内的系统管理、系统管理接口等做了较为详细的阐述。该系统管理充分利用Kubarnatas平台的优点,并结合调度系统化系统的特点,为基于Kubarnetes平台的调度自动化系统的稳定可靠运行提供有力保障。
关键词:容器;调度自动化;系统管理;Kubernetes
Abstract:With the rapid development of information technology,docker technology has been gradually applied to dispatch­ing automation system.As a new generation of containerpplication cluster platform,Kubernetes has many advantages,such is automatic resource scheduling mechanism and ela
stic expansion.At present,Kubernetes has been used qs the platform of power dispatching automation system.This paper introduces the design and implementation of the system management for dispatching automation system based on Kubernetes,and describes the system framework,application cluster management, system management in the container,system management interface,etc.The system management makes full use of th^advan­tages of Kubernetes platform,and combines with the characteristics of dispatching systematization system,which provides s strong guarantee for the stable end reliable operation of dispatching automation system based on Kubernetes platform.
Keywords:container,dispatching Qutomation,system management,Kubernetes
随着信息技术的飞速发展,虚拟化技术在不断进行创新和突破。虚拟化既可以通过硬件模拟来实现,也可以通过操作系统软件来实现,而容器技术充分利用操作系统本身已有的机制和特性,实现远超传统虚拟机的轻量级虚拟化。由于Dockar容器化技术具有高效的资源利用、快速的交付与部署、轻松的迁移和扩展等优点[1],其已逐步应用到调度自动化系统中。Kubarnatas 作为新一代容器化应用集平台,具有资源自动调度机制及弹性扩展等诸多优点。目前,Kubarnatas开始作为电力调度自动化系统的平台,因此如何对基于Kubarnatas的调度自动化系统进行管理,成为目前亟需解决的问题。本文介绍的系统管理充分利用Kubarnatas平台的优点,并结合调度系统化系统的特点,为基于Kubarnatas
平台的调度自动化系统的稳定可靠运行提供有力保障。
1系统框架
基于容器平台Kubarnatas的调度自动化系统的系统管理所管理的对象包括应用、实时数据库服务进程、应用进程、Pod 以及StatafulSat遥应用是具有紧密联系的、能够完成特定用户功能的一组实时数据库、应用进程的集合。Pod和StatafulSat是Kubarnatas中的重要概念。Pod是若干相关容器的组合,包含的容器运行在同一台宿主机上,这些容器使用相同的网络命名空间、IP地址和端口,这些容器还可共享一块存储卷空间。Pod 是Kubarnatas中创建、调度和管理的最小单元[2]遥调度自动化系统的应用运行在Pod内部的容器内。StatafulSat是一种副本控制器,它是为了解决有状态服务而设计的,它所管理的Pod 拥有固定的Pod名称、启停顺序,且具有稳定的持久化存储和稳定的网络标识。
基于Kubarnetes的调度自动化系统的系统管理的框架回如图1所示:
图1基于Kubernetes的调度自动化系统的系统管理框架图
系统配置管理工具负责应用配置、应用包含的进程及实时数据库配置、应用分片配置等。配置结果包括生成应用对应的StatafulSat定义文件及存储在atcd数据库中的信息。应用集管理和容器内系统管理这两个模块负责系统运行时的管理。系统管理接口分为系统管理查询接口和系统管理控制接口,供应用开发及系统运行监视工具使用。系统管理信息分为系统配置信息和系统运行信息。
(1)主要的配置信息
应用:应用名、应用别名、最大重启次数、是否分片、Pod副本数、Pod组数、应用镜像等。
应用分片:应用名、分片号、分片描述等
128基于容器平台的调度自动化系统的系统管理的实现
应用进程定义:应用名、任务名、应用进程类型、对应程序全路径名、对应程序命令行参数、日志策略、日志文件全路径名、是否定时启动、定时启动策略、是否周期启动、周期启动周期等。
(2)主要的运行信息
Pod实例:应用名、Pod组号、Pod实例名、节点名、运行状态、创建时间等。
容器内应用进程:运行状态、所占CPU、所占内存、进程ID等。
容器内实时数据库:运行状态、所占CPU、所占内存、进程ID等。
配置信息以及除实时数据库、应用进程外的运行信息都存储在stcd数据库中。实时数据库、应用进程的运行信息则存储在容器内部的共享内存文件中。容器内的实时数据库、应用进程的运行信息通过和容器内系统管理交互获取。
2应用集管理
应用集管理模块负责应用的启停、应用分片管理、应用主备状态管理等。
2.1应用分片管理
对于数据量大的应用,首先将数据分为若干个分片,每个对象上有相应的分片号,同时将应用也分为若干个子应用,每个子应用 处理一个或多个数据分片,每个子应用创建对应的StatsfulSst来处理。对于一个Statsfulsst,对应若干个Pod实例,其中一个是值班实例,其余的是备用实例。应用分片管理图如图2所示。
图2应用分片管理图
应用分片,有利于数据的并发处理,提高数据处理的性能,也有利于提升系统的可扩展性。当应用需要处理的数据增加时,将这些增加的数据也分为若干个分片,然后可以通过以下两种方式之一来进行处理:一是子应用数目保持不变,将新增的数据分片分配到已有的子应用中;二是自动创建新的子应用,将新增的数据分片分配到新增的子应用中去处理。当系统资源不足时,可以缩减已有的子应用来释放系统资源。当缩减子应用时,将这些子应用处理的数据分片分配给还将继续运行的子应用中,然后删除这些要缩减掉的子应用所对应的Statsfulsst遥
2.2 应用主备状态管理
应用值班备用状态管理简称应用主备状态管理。值班状态是指应用的主要业务都在该状态下被处理的状态。备用状态是指不处理应用的主要业务,在值班状态的实例岀现故障时升级为值班的状态。
当应用或子应用启动时,应用集管理模块调用容器API 创建Statsfulsst,此时容器平台会根据Statsfulsst定义中的副本数创建岀若干个Pod实例,在这同一Statsfulsst的若干个Pod实例中,选取其中一个做值班,其它为备用。选取值班的原则是:该Pod实例的运行状态正常,并且所属节点上的处于值班状态的实例数少的优先级高。
在系统运行过程中,当发生下列情况时,会进行应用主备状态的切换。
1)由于节点故障等原因,容器平台会启动新的实例代替故障节点上的实例,若故障节点上的实例是值班状态,则应用集管理模块会自动从处于备用状态的实例中选取一个实例作为值班。
2)当监视到容器重启的频率超过阈值,若该实例处于值班状态,则应用集管理模块自动从处于备用状态的实例中选取一个实例作为值班,并结束该容器重启的频率超过阈值的实例。
3)当容器内的系统管理监视到容器内的进程的故障次数超过阈值时,则通知应用集管理模块结束该实例遥若该实例处于值班状态,则应用集管理模块自动从处于备用状态的实例中选取一个实例作为值班,并结束容器内的进程的故障次数超过阈值的实例。
4)当配置的副本数减少时,容器平台会自动终止一批实例。当应用集管理模块接收到减少副本数的请求时,判断将被终止的实例中是否有值班实例,如果有值班实例,则从处于备用状态的实例中选取一个实例作为值班并且将原值班实例状态切换为备用,然后再调用容器API修改副本数。
5)接收到人工触发的主备切换请求。当接收到值班切备用的请求时,应用集管理模块自动从处于备用状态的实例中选取一个实例作为值班,然后把处于值班状态的实例的运行状态切换为备用。
从处于备用状态的实例中选取一个实例作为值班的原则和应用启动时选取值班的原则相同。当Pod实例的运行状态改变时,应用集模块会通知容器内的系统管理模块运行状态发生改变。
3容器内系统管理
容器内的系统管理负责容器内应用的启停及监视。
3.1容器内应用的启停
在启动应用前,容器内系统管理首先创建一个共享内存文件,该共享内存文件用于保存本Pod实例的应用状态、实时数据库64与状态及进程状态等,接着从stcd数据库中读取本实例所属应用的配置信息、应用所包含的实时库及应用进程的配置信息,写入到共享内存文件中遥
启动应用时,首先启动的是通信中间件,该中间件负责该Pod实例内的各实时库服务进程、应用进程之间的通信,接着启动的是该应用包含的实时库服务进程,等各实时库服务进程启动完成后再启动该应用包含的应用进程。
停止应用时,首先停止的是该应用包含的应用进程,接着是停止该应用包含的实时库服务进程,最后停止通信中间件。
3.2 容器内应用的监视
3.2.1实时库服务进程监视
对实时库服务进程进行实时监视,一旦发现某个实时库服务进程异常,则在系统日志中记录异常的信息并进行报警,然后重新启动实时库服务进程,若在一定的时间段内重启次数超过一定值,则引发该实时库所属的Pod实例的故障切换。
3.2.2应用进程监视
应用进程分为以下三种类型:
1)关键进程。由系统管理启动和监视,一旦故障,将引发所属实例由正常的运行状态切换为故障状态的重要进程称为关键进程。
2)监视进程。由系统管理启动和监视,但是故障时不会引发所属实例由正常的运行状态切换为故障状态的进程称为监视进程。
3)普通进程。由系统管理监视,但不由其启动的进程称为普通进程。普通进程故障后,系统管理马上能够监视到,并作相应记录,但不再作其他的处理。
对应用进程进行实时监视,一旦发现某个应用进程异常,则
《工业控制计算机》2021年第34卷第6期129
根据应用进程的类型进行相应的处理。对于关键进程,则在系统日志中记录异常的信息并进行报警,然后重启该进程,若在一定的时间段内重启次数超过一定值,则引发进程所属实例的故障切换。对于监视进程,则在系统日志中记录异常的信息并进行报警,然后重启该进程。对于普通进程,则只在系统日志中记录异常的信息并进行报警[5]遥
3.2.3系统资源监视
系统资源监视包括:CPU使用情况监视、内存使用情况监视等。系统运行管理实时地监视这些资源的使用情况,当检测到越限时进行标识和相应的报警。
3.3与外部交互
容器内系统管理和外部交互的情形有以下几种:
1丿应用集管理模块通知容器内系统管理模块运行状态发生改变;
2)应用集管理模块通知容器内系统管理模块停止应用;
3)容器内系统管理模块监视到实时库服务进程或应用进程故障次数超过阈值时,通知外部的应用集管理模块该实例故障。
容器内系统管理模块监视到实时库服务进程或应用进程故障次数超过阈值时,通知外部的应用集管理模块该实例故障,应用集管理模块接收到该通知后会结束该实例。为了在与应用集管理模块通信异常时也能结束掉该实例,拟采用容器平台的健康检查机制冋,具体过程如下:
1丿容器内系统管理模块在向外部的应用集管理模块发送结束该实例的通知后,将容器内部的系统管理共享内存中的状态字段设置为故障;
2)在容器内设置一个LivanassProba探针:该探针通过运行一个可执行程序实现,该可执行程序读取容器内部的系统管理共享内存中的状态字段,若检测到该字段的值是故障时,则返回值为1,否则返回值为0;
3)容器平台探测到LivenessProbe探针设定的可执行程序的返回值不为0时,会重新启动该容器;
4)外部的应用集管理模块从容器平台获取信息,判断容器重启的频率是否超过阈值,若超过,则结束该实例遥
4系统管理接口
系统管理接口分为系统管理查询接口、系统管理控制接口遥查询接口分为两类,一类是查询频度高的接口,比如,is_duty(本进程所属Pod实例是否值班)接口,为保证查询效率,在Pod内部存储本Pod实例的运行状态,is_duty通过查询Pod内部存储的本Pod实例的运行状态实现。应用集模块在Pod实例运行状态变化时,不仅更新atcd数据库,还通知容器内系统管理模块运行状态发生改变,容器内系统管理模块当接收到该类消息时,更新Pod内部存储的本Pod实例的运行状态。
另一类是查询频度低的接口,对于获取给定应用的运行状态等接口,通过直接查询atcd数据库获取信息;对于查询容器内的数据库、应用进程的状态信息,则和容器内系统管理交互后获取。
系统管理控制接口包括启停应用、切换应用主备状态、改变具有分片的应用的信息、设置pod副本数等。这通过与应用集管理模块交互实现。
5结束语
本文介绍了一种基于容器化应用集平台Kubarnetes的调度自动系统的系统管理的设计及实现。该系统管理利用Ku­bar n etes的弹性扩展能力来管理应用分片的处理;当应用值班实例发生故障时该系统管理的主备状态管理机制,能将值班状态快速切换到应用备用实例;该系统管理的容器内管理能有效监视容器内应用的运行,并在监视到异常时及时与应用集管理模块交互,进行故障切换、故障重启等操作。因此,本文介绍的系统管理能为基于Kubernetes的调度自动化系统的稳定可靠运行提供有力保
障,具有推广价值。
参考文献
[1]杨保华,戴王剑,曹亚仑.Docker技术人门与实战[M].3版•北京:机
械工业出版社,2018:3-9
[2]马永亮.Kubernetes进阶实战[M].北京:机械工业出版社,2018:1-20
[3]王艳蓉,陆鑫,林庆农,等•新一代电力自动化软件支撑平台的设计及
应用[J].电力信息化,2010,8(9):42-45
[4]王宁,叶锋,许文庆,等•支持CIM的实时对象数据库管理系统[J].电
力系统自动化,2006,30(16):93-101
docker重启容器命令[5]王艳蓉,徐丹,孙超•多现场调度自动化系统的系统管理设计及实现
[J]•工业控制计算机,2020,33(12):111-113
[6]龚正,吴治辉,崔秀龙,等.Kubernetes权威指南:从Docker到Ku­
bernetes实践全接触咱M].4版•北京:电子工业出版社,2019:186-189
[收稿日期:2021.4.13]
(上接第114页)
5结束语
本文从遥控叉车控制系统的组成、硬件电路原理、软件设计等方面详细介绍了基于Android和STM32无线遥控叉车系统的设计方法。控制系统以单片机为核心,采用上下位机的控制方式,上位机端发送控制指令,显示遥控叉车当前的状态;STM32下位机解析遥控平板的指令,控制叉车稳定运行。经过实际测试,叉车的控制系统具有操控简单、响应迅速、遥控距离远、安全性高且移动灵活等优点,在仓储系统管理中,减少了驾驶员受伤的情况,也降低了对驾驶员的技能要求,进一步减少了人力成本。该遥控叉车的设计思路可以为同类型的遥控叉车设计提供—定的参考和借鉴。
参考文献
[1]李进卫•叉车现代技术的发展趋势[J]•建筑机械,2015(6):22-29
[2]曹策,贺广健,付云博,等•基于Qt5开发的面向工业控制的显控软件
[J].电脑知识与技术,2020,16(23):16-19
[3]范政,何继靖,朱永业,等•基于STM32的无线智能小车控制系统设
计[J]•轻工科技,2018(6):83-85
[4]曹冲振,梁世友,王凤芹,等•基于STM32的可遥控智能小车控制系
统设计[J].智能计算机与应用,2020,10(3):266-269
[5]闫锋欣,牛子杰,杜烁炜,等•基于Qt的Android应用程序C/C++开
发方法与实践[J].计算机系统应用,2018,27(7):96-102
[6]朱丹峰,葛主冉,林晓雷•基于Android平台的无线遥控智能小车
[J].电子器件,2013,36(3):408-412
[7]连丽红•基于Qt的嵌人式实验平台开发[J]•中国集成电路,2018,27
(8):64-67
[8]陈黎敏•传感器技术及其应用[M]•北京:机械工业出版社,2009
[9]李岩•基于STM32的重载AGV系统设计[J].工业控制计算机,2020,
33(3):97-98
[10]李肃义,王宁,樊蒙璇,等•无线遥控视频监控小车的设计[J].吉林
大学学报(信息科学版),2017,35(2):146-152
[收稿日期:2021.3.17]

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。