本文是一篇计算机软件论文,本文从Kubernetes上运行的民航信息系统的容灾备份调度角度出发结合加密算法,设计了一套容灾备份调度系统。
第1章绪论
1.1课题研究背景及意义
目前,随着互联网的高速发展,云计算技术凭借自身高效率低成本,管理便利的优势被广泛使用,它让企业的使用者们通过计算机网络更加便捷的使用其所需的资源,为了更好的利用这些资源从而产生云原生的概念,云原生的整体思路为统一与分布,统一的是统一架构和资源管理。2013年Docker[1]诞生之后云计算进入容器时代,Docker凭借着简单,易用效率高的特点逐渐成为了容器的代表作,为对Docker容器进行更好的管理,随后出现了Kubernetes等容器编排系统,Kubernetes[2]是谷歌公司2015年推出的一个开源容器编排和调度框架,其目标是通过创建一组新的通用容器技术来推进云原生技术和服务的开发,Kubernetes的原理是通过使用抽象概念来简化应用程序和基础架构之间的关系,从而简化应用程序的部署、扩展和管理。它使用声明性配置文件来定义应用程序和基础架构,同时提供服务来保证应用程序的可用性和可靠性,极大的提高了生产效率。
由于传统的民航信息技术业务体系大多使用传统的IT业务结构,民航信息系统种类繁多,维护工作不能统一,各个系统比较分散[3],存在统筹协调不足对各系统管控不完全合理的情况,在异构网络通信、静态数据共享、规划策略缺失、能耗偏高等方面也对民航信息系统的正常运行产生不利影响。尤其是信息资源共享较为困难,海量数据的同步存在问题且数据分散,为统一进行数据处理分析与调度产生了困难,进而产生了在多个系统中重复存储数据导致的数据冗余现象,降低了民航信息系统的服务效率与资源利用同时为数据丢失增加了风险,从而阻碍民航信息行业的工作进展与民航信息产业的发展。随着云原生的落地应用,现在民航信息系统业务运行于Kubernetes上可以有效解决以上问题,带来便利的同时也为运行在Kubernetes上的民航信息系统的安全防护带来新的挑战,由于受到突发性事件例如黑客攻击,自然或人为灾难,使数据集群受到损坏,因此系统的容灾备份显得尤为重要。
1.2国内外研究现状
工业界中的开源容器编排系统,如Mesos[4]和Swarm[5],在大规模计算中,分配资源和制定调度方案是至关重要的。在试验阶段,必须进行空间优化,以便实现大规模容器安排。容器资源调度是解决容器资源配置难题的重要一环。这是一个显著的问题,在Mesos与Swarm中需要得到妥善解决。Kubernetes推出以来通过其优秀的可拓展性,极大的对上述问题进行优化,越来越多的学者研究并参与到Kubernetes的生态建设之中,目前针对Kubernetes的生态已愈发成熟,可以很好的解决云计算中资源、负载均衡等问题。Kubernetes的可拓展和稳定的特点在民航领域的应用提供了可行性,民航业关系着人民的生命财产安全,所以针对民航信息系统在Kubernetes上的安全问题应着重进行研究,由于Kubernetes的计算、网络、存储等层面是集群共享所以也面临更多的安全挑战,云原生的安全问题同时是不少学者与开发者所着重关心的方面,在调度、漏洞、防护、灾备等方面都已展开大量研究。
1.2.1容灾备份系统的研究现状
由于国内计算机领域起步较晚,所以国内灾备的发展比国际落后,2003年中央颁布的《国家信息化领导小组关于加强信息安全保障工作的意见》标志着我国关注信息系统灾备恢复这一命题。2007年国务院信息化办制定《重要信息系统灾难恢复指南》正式称为国家信息安全标准。2016年11月7日第十二届全国人民代表大会常务委员会第二十四次会议通过《中华人民共和国网络安全法》。第三十四条将容灾备份做了重点强调:“除本法第二十一条的规定外,关键信息基础设施的运营者还应当履行下列安全保护义务:(一)设置专门安全管理机构和安全管理负责人,并对该负责人和关键岗位的人员进行安全背景审查;(二)定期对从业人员进行网络安全教育、技术培训和技能考核;(三)对重要系统和数据库进行容灾备份;(四)制定网络安全事件应急预案,并定期进行演练;(五)法律、行政法规规定的其他义务[6]”在政策的指引下,各大政府部门率先实现了数据的容灾备份,越来越多的企业也在构建基础架构时,将容灾备份考虑进来。2021年6月10日,第十三届全国人民代表大会常务委员会第二十九次会议通过《中华人民共和国数据安全法》,确立了数据安全保护的基本思路,其中第二十三条提出在遭受数据安全事件时应启动应急预案,保障业务的连续性。
第2章 相关技术研究
2.1云原生技术研究
云原生[28]是一种广泛的概念,它是一种基于云上的软件架构思想,以及基于分布部署和统一运维管理的分布式云。以容器、微服务、DevOps等技术为基础建立一套云技术体系。其中容器技术可以称为微服务的最佳载体,可以称为是云原生技术的地基。所以我们可以把云原生简单的理解为容器+Kubernetes(K8s)在云上运行。以Docker容器为例,它是一款使用Go语言编写的基于LXC技术的高级应用容器引擎,它可以将应用及相关依赖打包为可移植的镜像文件,运行在各种流行的Linux或Windows操作系统上,同时也能实现虚拟化。Docker采用C/S架构,容器之间完全隔离,并通过Docker镜像进行创建,Kubernetes正是依靠这一技术实现的容器引擎,拥有方便快捷的使用特性,可以实现自动化资源管理和灵活的部署,提高容器的可管理型与可拓展性,Kubernetes拥有强大的资源调度功能,逐渐成为容器编排领域的领导者[29]。
第2章 相关技术研究
2.1云原生技术研究
云原生[28]是一种广泛的概念,它是一种基于云上的软件架构思想,以及基于分布部署和统一运维管理的分布式云。以容器、微服务、DevOps等技术为基础建立一套云技术体系。其中容器技术可以称为微服务的最佳载体,可以称为是云原生技术的地基。所以我们可以把云原生简单的理解为容器+Kubernetes(K8s)在云上运行。以Docker容器为例,它是一款使用Go语言编写的基于LXC技术的高级应用容器引擎,它可以将应用及相关依赖打包为可移植的镜像文件,运行在各种流行的Linux或Windows操作系统上,同时也能实现虚拟化。Docker采用C/S架构,容器之间完全隔离,并通过Docker镜像进行创建,Kubernetes正是依靠这一技术实现的容器引擎,拥有方便快捷的使用特性,可以实现自动化资源管理和灵活的部署,提高容器的可管理型与可拓展性,Kubernetes拥有强大的资源调度功能,逐渐成为容器编排领域的领导者[29]。
多个分布式组件与层级构成Kubernetes系统,其基础是Master节点和Node节点,Master节点作为整个Kubernetes的管理节点,主要负责对整个集群进行控制管理[30]。Node节点为工作节点,其作用是对某应用的运行。Master节点主要包括Kube-apiserver、Controller-manager、Kube-scheduler三大组件,分别为集群Rest API接口、资源对象自动化控制中心,Pod资源对象调度,Master主要负责通过三大组件来对整个集群做出全局性决策,进行资源利用。Pod是Kubernetes的基本单位,单个的Pod中可以存在多个容器服务,Kubernetes负责将容器以Pod为单位部署在合适的Node节点上,因此,在进行Pod部署时资源调度算法扮演重要角色,合适的调度算法可以根据场景对资源进行更好的利用,提高集群的负载均衡,减少企业消耗成本。Kubernetes基础架构如图2.1。
2.2数据安全性研究
为了保障备份后数据的安全性,本文对椭圆曲线加密算法(ECC)展开研究,椭圆加密算法是一种基于椭圆的加密算法,它的基本概念是:椭圆上的两个点之间的距离等于一个特定的曲线上某两个非常大的数字的乘积。这里的“距离”是一个数学量的函数,并不是普通数学意义上的相乘[31]。在椭圆曲线加密算法中,主要使用的数学函数是椭圆函数𝑌2=𝑋3+𝐴𝑋+𝐵。并且A、B需满足4𝐴3+27𝐵2≠0,假设A=-3、B=5则曲线公式为𝑌2=𝑋3−3𝑋+5,所得到的曲线为图2.2可以看出并非是椭圆形。
椭圆曲线本身是连续的并不适合加密,但把椭圆曲线定义在有限域上,并离散为连续的点便是非常适合加密的,其中椭圆曲线满足的运算规则如下。 加法:
在椭圆曲线上取两点A、B,经过A、B两点构造一条直线并与椭圆曲线,相交于一点,称为交点,过交点向x轴引垂线,相较于椭圆曲线一点C,由于椭圆曲线是关于x轴的轴对称图形,则C点是交点关于x轴的对称点,C点即为椭圆曲线加法结果。
倍数运算:
当A点与B点重合时,即做一条椭圆曲线在点A的切线,获得与椭圆曲线的交点,并同加法法则相同向x轴引垂线得到关于x轴对称的位置点定义为A+A,即为2A,即称作椭圆曲线的二倍运算。
第3章 需求分析 .................................. 19
3.1 系统整体需求分析 ...................... 19
3.1.1 需求概述 ....................................... 19
3.1.2 灾备系统实现目的 ......................... 20
第4章 Kubernetes 上的民航信息系统灾备恢复与调度器设计........ 25
4