一种面向信创领域提高容器化服务可用性的系统及方法与流程

文档序号:37375479发布日期:2024-03-22 10:28阅读:7来源:国知局

本发明涉及云计算,具体为一种面向信创领域提高容器化服务可用性的系统及方法。


背景技术:

1、虚拟化技术不利于devops、持续集成和交付。使用虚拟化技术,在实际的生产开发环境里,我们在部署应用程序时,每次都需要为应用解决其依赖的操作系统和环境问题,可移植性比较差。而容器化技术解决了虚拟化技术中遇到的问题,并解决了应用虚拟化在应用上层资源消耗非常大的问题。

2、现有技术中,容器化技术是一种内核轻量级的操作系统层虚拟化技术,通过将应用程序和应用运行所需的相关配置文件打包在一起,让应用运行自己的隔离环境中,使应用可以在任何环境和任何基础架构上一致地移植和运行,不受该环境或基础架构的操作系统的影响。在与传统的虚拟化技术创建环境和部署应用及应用移植的繁琐性相比较,容器化技术的极其轻量、秒级部署、易于移植及其弹性伸缩的特点使其成为一种被大家广泛认可的服务器资源共享方式。尤其在云计算环境中,许多企业已经将容器替代了虚拟机作为其应用程序和工作负载的通用计算平台。

3、但是,在一个kubernetes集群中,上层应用以容器化的方式运行在集群中,但仍有部分基础组件无法通过以kubernetes工作负载运行在集群中,如一些时间同步组件ntp、chrony等。一些开源的成熟的容器技术如docker,推荐使用systemd管理容器化应用。在信创领域中,因要适配的操作系统各异,为减少组件对底层操作系统的依赖,优先选择将应用容器化部署在系统上,并使用systemd对容器应用进行管理。在一些被托管的服务器上,这些容器化的应用可以稳定高效的运行,但是在一些信创领域中,尤其是一些一体机环境,企业自行托管服务器,在一些不规范的操作下使服务器异常断电,造成一些应用元数据丢失。而docker或containerd等应用若发生元数据丢失,会致使其服务崩溃,间接造成由其管理的容器不能正常启动。


技术实现思路

1、本发明的目的在于提供一种面向信创领域提高容器化服务可用性的系统及方法,以解决上述背景技术中提出的如何提高以容器化运行的服务容错能力及可用性的问题。

2、为实现上述目的,本发明提供如下技术方案:一种面向信创领域提高容器化服务可用性的系统,所述系统由镜像管理模块、运行时规范构建模块、应用容器配置模块及服务管理模块组成;

3、镜像管理模块,提供标准oci镜像元数据及层文件获取能力,用于对容器化服务所使用的标准oci镜像文件进行管理,对镜像文件校验、构建本地缓存;

4、运行时构建模块,用于将标准oci镜像元数据和层文件构建为容器运行的标准规范文件;

5、容器应用配置模块,用于将容器应用使用的网络、卷、文件系统、启动命令及参数并入容器运行规范文件;

6、服务管理模块,用于为容器应用生成system的服务单元文件,并启动容器应用。

7、优选的,镜像管理模块包括以下功能:

8、基于http/https协议及oci标准从远端镜像仓库获取标准oci镜像的元数据、层文件;

9、对镜像文件校验;

10、本地缓存。

11、优选的,运行时规范构建模块包括以下功能:

12、由镜像进行哈希散列计算得出固定长度的字符串;

13、由镜像元数据、层文件信息构建runc等容器可运行的运行时标准规范文件。

14、优选的,容器应用配置模块包括以下功能:

15、生成容器化服务所需环境变量文件;

16、生成容器化服务所需pid-file文件;

17、生成或配置容器化服务所需网络;

18、反序列化容器运行时标准规范文件config.json到对象;

19、读取配置文件内容,同步到config.json反序列化的对象中;

20、序列化对象,并将序列化后的字节数据持久化到config.json文件中。

21、优选的,服务管理模块包括以下功能:

22、根据服务单元模板文件生成容器化服务的单元文件;

23、设置容器化服务随操作系统启动,并启动容器化服务。

24、一种面向信创领域提高容器化服务可用性方法,所述方法包括以下步骤:

25、编写用于声明程序容器化运行时的yaml或json格式的配置文件,配置文件声明程序容器化使用的名称、镜像、网络、环境变量或文件、容器端口、卷挂载容器运行时所需配置内容;

26、根据程序容器化使用的镜像,查询本地缓存文件,当缓存文件不存在时,则从远端镜像仓库获取镜像的元数据、层文件信息;

27、当本地缓存文件存在时,则从远端镜像仓库获取镜像元数据信息,对本地缓存文件进行校验,若校验失败,则将移除此镜像的缓存文件,从远端镜像仓库再次获取镜像的元数据、层文件信息;

28、根据程序容器化使用的镜像及容器化服务名称,进行md5或其他自定义散列哈希算法计算,得出固定长度的字符串作为该容器化服务的唯一标识;

29、在系统指定的文件目录下为容器化服务创建以唯一标识命名的文件夹;

30、根据获取的镜像元数据、层文件信息,构建容器运行时bundle文件,并将文件存储于上述步骤创建的文件夹内;

31、根据声明的容器化服务的配置文件,加载容器运行时bundle文件中的config.json文件反序列化到结构体对象;

32、根据配置文件中声明的网络、卷、端口、命令及参数信息更新到上述步骤创建的结构体对象中,将对象序列化并持久存储到容器运行时bundle文件中的config.json文件中;

33、生成程序容器化所使用的环境变量或文件,在系统指定的目录下,创建以容器化服务唯一标识命名的文件,用于记录配置的环境变量信息;

34、配置或创建程序容器化所使用的网络;

35、生成程序容器化所用的pid-file文件,在系统指定的目录下,创建以容器化服务唯一标识命名的文件,用于记录容器化服务应用的pid信息;

36、根据符合systemd规范要求服务单元模板文件,为容器化服务生成服务单元文件,当存在环境变量或文件时,则在服务单元文件中指定environmentfile为生成的环境变量文件;

37、运行容器化服务并设置随操作系统启动。

38、与现有技术相比,本发明的有益效果是:

39、本发明提出的面向信创领域提高容器化服务可用性的系统及方法,基于标准的oci镜像文件制作成由runc可直接运行的只读容器文件系统,进而实现由systemd对runc运行的容器进行管理。相比,由docker或containerd实现的容器化服务的方式,该发明减少了对docker或containerd等容器管理工具的依赖,从而有效避免了在服务器突然掉电时造成docker或containerd等容器管理工具元数据损坏致使应用崩溃,容器化服务不能正常启动的问题,提高了容器化服务的容错能力及可用性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1