[发明专利]一种Docker环境安全下线应用服务的方法在审
申请号: | 201810739433.7 | 申请日: | 2018-07-06 |
公开(公告)号: | CN109062660A | 公开(公告)日: | 2018-12-21 |
发明(设计)人: | 沈昌干;叶瑞森;柯都敏;李光举 | 申请(专利权)人: | 杭州涂鸦信息技术有限公司 |
主分类号: | G06F9/455 | 分类号: | G06F9/455 |
代理公司: | 杭州快知知识产权代理事务所(特殊普通合伙) 33293 | 代理人: | 杨冬玲 |
地址: | 310012 浙江省杭*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 环境安全 应用服务 服务 有向图 计算机软件技术 应用服务安全 中间件服务 调用服务 数据安全 维护服务 下线操作 应用启动 宿主机 拓扑 排序 应用 保存 响应 部署 安全 保证 | ||
本发明公开了一种Docker环境安全下线应用服务的方法,涉及计算机软件技术领域,包括:(1)在应用中为每个服务(主要包括Tomcat容器、中间件服务)提供该服务下线的功能,然后开启简单的本地http服务,用于响应宿主机(localhost)发起的http请求,然后执行服务下线操作。(2)应用启动时维护服务间依赖有向图。(3)当执行“Docker stop”前根据服务依赖的有向图的拓扑排序依次调用服务的http接口,安全下线服务。本发明所述的方法旨在解决上述应用通过Docker部署时遇到的几个缺陷,提供应用服务安全下线的方法,在Docker关闭前依次关闭所有服务,保证任务顺利完成、数据安全保存。
技术领域
本发明涉及计算机软件技术领域,尤其涉及一种Docker环境安全下线应用服务的方法。
背景技术
Docker是一个开源的应用容器引擎,在物理主机上安装Docker后,可在Docker的基础上承载多个容器,多个容器之间相互隔离,多个容器共享物理主机的操作系统,各容器可放置并执行不同的应用程序。Docker是操作系统层面上构建的虚拟化技术,极大简化了应用部署步骤和维护成本,使得开发者很容易构建弹性的云服务和微服务架构。但是在应用重新部署时(部署过程经过停止Docker、销毁Docker、创建Docker过程),若Docker内尚有任务或服务在运行,此时停止Docker会导致不可预测的事情发生,如数据尚未保存到数据库导致数据丢失。
举个例子来说,Docker容器将应用所需的资源打包在其镜像中,独立进程运行Docker实例;Linux操作系统,作为宿主机,可以部署多个Docker容器;用shell或python脚本,在Linux操作系统通过Docker容器的创建、停止、销毁等操作,从而控制应用的部署;http用于和Docker实例内的服务通信;Tomcat/jetty等容器用来部署应用。以Tomcat容器部署应该为例,部署应用会经过下线应用内的服务和销毁容器,进程被关闭以及创建容器并部署三个步骤。
在使用Docker部署应用的场景中,会把Tomcat容器和所需的资源都打包到Docker镜像,然后通过控制Docker来控制内部Tomcat的启动过程。一般先发送“Docker stop”命令,会向Docker实例的PID=1的进程发送SIGTERM信号,旨在停止Docker;然后Docker实例接收到SIGTERM信号后,关闭进程;最后重新部署新的Docker实例,启动内部的Tomcat容器,从而启动应用。
宿主机通过“Docker stop”命令发送的SIGTERM信号,Docker实例接收到后会在设定时间内完成关闭Docker操作。Tomcat和运行在Tomcat内部的JAVA服务,要么没有下线操作,要么是通过启动时向JVM注入的钩子ShutdownHook,然后JVM销毁前完成下线操作。这个情况存在的缺陷:(1)“Docker stop”命名发送后,会等待一段时间,超过时间则强制杀死进程,不管Docker实例内的应用是否还有未完成的任务在运行;(2)应用内启动的服务很多没有提供安全下线的操作,在JVM销毁时可能还有任务在运行;(3)很多服务相互之间存在依赖关系,若被依赖的服务先关闭,则导致正在运行的任务失败,如图1所示的应用服务间依赖有向图,其中如kafka消费者依赖dubbo、redis等服务,dubbo服务先关闭,则正在运行的kafka消费任务便会执行失败。这些缺陷会使得任务未运行关闭就被关闭,造成如数据未被持久化到数据库等不可预知的后果。
发明内容
本发明所述的方法旨在解决上述应用通过Docker部署时遇到的几个缺陷,提供应用服务安全下线的方法,在Docker关闭前依次关闭所有服务,保证任务顺利完成、数据安全保存。
本发明所述的一种Docker环境安全下线应用服务的方法,包括:
为每个Dockers环境中的应用服务增加下线功能;
所述应用服务启动时维护应用服务间的依赖有向图;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州涂鸦信息技术有限公司,未经杭州涂鸦信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810739433.7/2.html,转载请声明来源钻瓜专利网。