一种服务部署方法、装置、可读介质及存储控制器与流程

文档序号:14120070阅读:203来源:国知局
一种服务部署方法、装置、可读介质及存储控制器与流程

本发明涉及计算机技术领域,特别涉及一种服务部署方法、装置、可读介质及存储控制器。



背景技术:

随着计算机技术的发展,软件开发商不断开发出新系统以满足用户不同的需求,在软件厂商开发运维系统时,合适的运维环境对实现系统系统功能具有重要作用。

开发运维系统时,一般有三个运维环境需要频繁且重复的部署,首先在开发阶段,开发人员需要在合适的开发环境中对编写的程序进行调试,然后在测试阶段,开发人员需要一个测试环境为其提供测试数据,最后在系统成熟时,需要一个用于向市场人员演示的演示环境。

在重复部署这三个运维环境时,开发人员需要分别在每个环境中安装系统,并在系统中安装和配制系统运行所需的组件以及调整系统运行参数,工作量较大,并且运维环境每更换一个运行主机,开发人员又需要重新部署一次,由此导致部署运维环境的工作量较大。



技术实现要素:

本发明实施例提供了一种服务部署方法、装置、可读介质及存储控制器,能降低部署运维环境的工作量。

第一方面,本发明实施例提供了一种服务部署方法,包括:

构建部署文件包;其中,所述部署文件包中包括:至少一个待安装容器对应的容器安装文件,以及至少一个待部署服务对应的服务部署文件;

还包括:

接收部署指令;

根据所述部署指令,从所述部署文件包中提取至少一个待安装容器对应的所述容器安装文件,以及至少一个待部署服务对应的所述服务部署文件;

利用提取的所述容器安装文件,安装至少一个目标容器;

利用所述服务部署文件,在安装的所述容器中部署至少一个目标服务。

优选地,

所述部署文件包包括:数据子文件夹;其中,所述数据子文件夹包括:所述至少一个待安装容器对应的安装环境参数;

所述利用提取的所述容器安装文件,安装至少一个目标容器,包括:

根据所述数据子文件夹中的安装环境参数以及所述容器安装文件,安装所述至少一个目标容器。

优选地,

所述部署文件包包括:启动脚本;

所述根据所述数据子文件夹中的安装环境参数以及所述容器安装文件,安装所述至少一个目标容器,包括:

根据所述部署指令,从所述部署文件包中查找所述启动脚本,并运行查找到的所述启动脚本;

利用运行的所述启动脚本,获取部署环境对应的部署环境参数;

将所述部署环境参数存储至所述数据子文件夹,利用所述部署环境参数对所述安装环境参数进行更新;

根据更新后的所述安装环境参数以及所述容器安装文件,安装所述至少一个目标容器。

优选地,

所述部署文件包包括:基础镜像子文件夹;其中,所述基础镜像子文件夹包括:至少一个所述待安装容器对应的基础镜像;

所述利用提取的所述容器安装文件,安装至少一个目标容器,包括:

从所述至少一个待安装容器对应的基础镜像中,确定与所述目标容器对应的目标基础镜像;

根据确定出的所述目标基础镜像,构建所述目标容器。

第二方面,本发明实施例提供了一种服务部署装置,包括:构建单元、提取单元和部署单元;其中,

所述构建单元,用于构建部署文件包;其中,所述部署文件包中包括:至少一个待安装容器对应的容器安装文件,以及至少一个待部署服务对应的服务部署文件;

所述提取单元,用于接收部署指令,并根据所述部署指令,从所述部署文件包中提取至少一个待安装容器对应的所述容器安装文件,以及至少一个待部署服务对应的所述服务部署文件;

所述部署单元,用于利用提取的所述容器安装文件,安装至少一个目标容器,并利用所述服务部署文件,在安装的所述容器中部署至少一个目标服务。

优选地,

所述部署文件包包括:数据子文件夹;其中,所述数据子文件夹包括:所述至少一个待安装容器对应的安装环境参数;

所述部署单元,用于根据所述数据子文件夹中的安装环境参数以及所述容器安装文件,安装所述至少一个目标容器。

优选地,

所述部署文件包包括:启动脚本;

所述部署单元,用于根据所述部署指令,从所述部署文件包中查找所述启动脚本,并运行查找到的所述启动脚本;利用运行的所述启动脚本,获取部署环境对应的部署环境参数;将所述部署环境参数存储至所述数据子文件夹,利用所述部署环境参数对所述安装环境参数进行更新;根据更新后的所述安装环境参数以及所述容器安装文件,安装所述至少一个目标容器。

优选地,

所述部署文件包包括:基础镜像子文件夹;其中,所述基础镜像子文件夹包括:至少一个所述待安装容器对应的基础镜像;

所述部署单元,用于从所述至少一个待安装容器对应的基础镜像中,确定与所述目标容器对应的目标基础镜像,并根据确定出的所述目标基础镜像,构建所述目标容器。

第三方面,本发明实施例提供了一种可读介质,包括执行指令,当存储控制器的处理器执行所述执行指令时,所述存储控制器执行本发明上述任一实施例提供的方法。

第四方面,本发明实施例提供了一种存储控制器,包括:处理器、存储器和总线;所述存储器用于存储执行指令,所述处理器与所述存储器通过所述总线连接,当所述存储控制器运行时,所述处理器执行所述存储器存储的所述执行指令,以使所述存储控制器执行本发明上述任一实施例提供的方法。

本发明实施例提供了一种服务部署方法、装置、可读介质及存储控制器,通过构建包括容器安装文件和服务部署文件的部署文件包,当接收到部署指令时,从部署文件包中提取容器安装文件和服务部署文件,并利用提取的容器安装文件,自动安装目标容器,并利用提取的服务部署文件,自动在目标容器中部署目标服务。由此,工作人员仅需将部署文件包安装到部署主机,即可自动完成服务系统的部署,而无需逐个安装组件并调试其运行参数,从而降低了部署运维环境的工作量。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一个实施例提供的一种服务部署方法的流程图;

图2是本发明一个实施例提供的一种服务部署装置的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提供了一种服务部署方法,该方法可以包括以下步骤:

步骤101:构建部署文件包;其中,所述部署文件包中包括:至少一个待安装容器对应的容器安装文件,以及至少一个待部署服务对应的服务部署文件;

步骤102:接收部署指令;

步骤103:根据所述部署指令,从所述部署文件包中提取至少一个待安装容器对应的所述容器安装文件,以及至少一个待部署服务对应的所述服务部署文件;

步骤104:利用提取的所述容器安装文件,安装至少一个目标容器;

步骤105:利用所述服务部署文件,在安装的所述容器中部署至少一个目标服务。

上述实施例中,通过构建包括容器安装文件和服务部署文件的部署文件包,当接收到部署指令时,从部署文件包中提取容器安装文件和服务部署文件,并利用提取的容器安装文件,自动安装目标容器,并利用提取的服务部署文件,自动在目标容器中部署目标服务。由此,工作人员仅需将部署文件包安装到部署主机,即可自动完成服务系统的部署,而无需逐个安装组件并调试其运行参数,从而降低了部署运维环境的工作量。

在传统的系统部署方式下,三个运维环境的部署会占用开发人员大量的精力,需要安装系统,并在系统中安装和配置程序运行所需的容器、数据库等依赖组件,部署程序到容器并调整程序运行参数,对于部署这样一个大型系统而言,往往需要2天甚至更长的时间,每当换一个主机时,这些工作都需要重新再来一遍。使用本实施例提出的方法,则可将上述运维环境的部署缩短至1-2分钟。

本发明一个实施例中,所述部署文件包包括:数据子文件夹;其中,所述数据子文件夹包括:所述至少一个待安装容器对应的安装环境参数;

步骤104的具体实施方式,可以包括:

根据所述数据子文件夹中的安装环境参数以及所述容器安装文件,安装所述至少一个目标容器。

例如,部署文件包的名称为media-service,在此文件夹下,存放有数据子文件夹,例如data子文件夹,用于存放容器在之前的环境中映射卷的数据,如图片、数据库,对于一个全新的系统而言,此文件夹可能不包含任何内容,但对于特殊的环境而言,如演示环境,需要部署的系统包含预初始化的数据,则此文件夹下存放的文件,可映射卷至指定服务容器的内部,提供已初始化完成的数据。由此,将容器在之前环境中的数据作为本次安装容器的一种依据,有利于快速准确的安装容器,从而提高运维环境的部署效率。

本发明一个实施例中,所述部署文件包包括:启动脚本;

所述根据所述数据子文件夹中的安装环境参数以及所述容器安装文件,安装所述至少一个目标容器,包括:

根据所述部署指令,从所述部署文件包中查找所述启动脚本,并运行查找到的所述启动脚本;

利用运行的所述启动脚本,获取部署环境对应的部署环境参数;

将所述部署环境参数存储至所述数据子文件夹,利用所述部署环境参数对所述安装环境参数进行更新;

根据更新后的所述安装环境参数以及所述容器安装文件,安装所述至少一个目标容器。

例如,media-service文件下存放有start.sh文件,这是一段用于从一个空linux主机中一键安装容器平台并部署应用系统服务的shell脚本。该shell脚本可检测到所处主机对应的部署环境参数,例如,获取到其所处主机的ip地址,然后利用获取到的ip地址替换data子文件夹中原有的ip地址,即对安装环境参数进行更新,使得更新后的安装环境参数更符合当前安装环境,有利于容器安装,从而有利于进一步提高运维环境的部署效率。

另外,shell脚本还可自动安装容器工具,在重复部署时删除导入映射卷所需的资源文件,即重复部署时不再需要的数据以及提供启动服务,同时提供若干启动参数,可使用户自定义系统部署的过程,以此提高用户体验。

本发明一个实施例中,所述部署文件包包括:基础镜像子文件夹;其中,所述基础镜像子文件夹包括:至少一个所述待安装容器对应的基础镜像;

步骤104的具体实施方式,可以包括:

从所述至少一个待安装容器对应的基础镜像中,确定与所述目标容器对应的目标基础镜像;

根据确定出的所述目标基础镜像,构建所述目标容器。

在这里,media-service文件下存放有base-images.tar文件,该文件是使用dockersave–o导出的基础镜像集合,该文件中包含了至少1个docker镜像,所有业务镜像构建时依赖的镜像均包含在此文件中。考虑到国内网络环境及有些环境无法连接公网的因素,利用此文件可快速获取容器的镜像集合,并使用dockerload进行基础镜像的导入,由此,采用在基础镜像中构建业务镜像的方式,使得可支持更多的部署场景,且更为灵活。

下面以docker平台工具作为示例,说明如何建立单点应用部署的快速、便捷以及可复用的模式。首先将系统所需服务的代码打包,并将部署环境依赖的资源,如配置文件、图片等文件资源,按服务划分子文件夹,放置在部署文件包中的services文件夹中。其中,部署文件包media-service中包括有data子文件夹、docker子文件夹、services子文件夹、base-images.tar文件和start.sh文件。

docker子文件夹用于存放docker及dockercompose的安装文件,使用离线安装的方式,可以适用于非公网环境的部署主机(需要挂载yum或apt-get源),该文件夹中包含了三个文件docker-ce-selinux*.rpm、docker-ce*.rpm、docker-compose-linux*。在后面提到的shell脚本中,将使用这三个文件,在一台空linux主机中将docker和dockercompose工具安装完毕。

然后在每个服务中创建dockerfile文件,并编写dockerfile脚本,以描述当前服务所需的部署环境。该步骤至少可通过如下程序语言实现:

frommysql:5.7

#定义工作目录

envwork_path/usr/local/work

#定义会被容器自动执行的目录

envauto_run_dir/docker-entrypoint-initdb.d

#定义sql文件名

envfile_0gwbo_createdatabase.sql

envfile_1gwbo_createfunction.sql

envfile_2gwbo_insertdata.sql

envfile_3gwbo_updatenavblock.sql

#定义shell文件名

envinstall_data_shellinstall_data.sh

#创建文件夹

runmkdir-p$work_path

#将配置文件拷入mysql目录中

copymy.cnf/etc/mysql/conf.d/my.cnf

#把数据库初始化数据的文件复制到工作目录下

copy./$file_0$work_path/

copy./$file_1$work_path/

copy./$file_2$work_path/

copy./$file_3$work_path/

#把要执行的shell文件放到/docker-entrypoint-initdb.d/目录下,容器会自动执行这个shell

copy./$install_data_shell$auto_run_dir/

#设置时区&&给执行文件增加可执行权限

run/bin/cp/usr/share/zoneinfo/asia/shanghai/etc/localtime\

&&echo'asia/shanghai'>/etc/timezone\

&&chmod777$work_path/\

&&chmod777$auto_run_dir/$install_data_shell\

&&chmod644/etc/mysql/conf.d/my.cnf

然后,在部署文件包的services文件夹下创建docker-compose.yml文件,并编写dockercompose脚本,描述当前系统各个服务的部署环境,在这里,services子文件夹用于存放系统的各个服务、组件的部署包和依赖项,该文件夹下按服务或组建划分了若干子文件夹,同时还存放了docker-compose.yml文件,用于描述当前系统中各个服务的组成和关系,并指定每个业务镜像的构建文件夹,执行docker-compose.yml导入的基础镜像,将业务镜像构建完成,并启动系统的全部服务。该过程至少可通过以下程序语言实现:

接着在部署包中创建start.sh文件,并编写shell脚本,用于串联整个系统部署过程的各个环节。该过程至少可通过如下程序语言实现:

然后将映射卷所需资源复制到部署包的data文件夹中,并将docker和dockercompose安装包复制到部署包的docker文件夹下。之后可将整个部署文件包分发至各个运维环境的部署人员处,由部署人员在指定环境中进行部署。

在部署运维环境时,部署人员在主机中安装linux系统,并拿到该主机对外提供服务的ip地址,然后部署人员将拿到的部署包整体复制到部署机中,并进入部署文件包所在文件夹,对start.sh文件赋予可执行权限,并执行该脚本,即可等待服务自动启动完毕。由此,5、每个系统只需编写一次部署环境的描述信息,即可在各个环境中进行部署,具备老系统适配简便,部署便捷,操作人员能力要求低的特点。并且使用容器技术封装应用和服务,任何可以在linux中部署的应用,均可使用此方法简化部署,在不同服务器环境中部署时,仅通过在运行脚本时传入简单的配置参数,即可实现不同环境的适配,同时,使用环境变量映射对服务内部的配置进行覆盖,在服务部署完成后,无需后续配置工作,开箱即用。

如图2所示,本发明实施例提供了一种服务部署装置,包括:构建单元201、提取单元202和部署单元203;其中,

所述构建单元201,用于构建部署文件包;其中,所述部署文件包中包括:至少一个待安装容器对应的容器安装文件,以及至少一个待部署服务对应的服务部署文件;

所述提取单元202,用于接收部署指令,并根据所述部署指令,从所述部署文件包中提取至少一个待安装容器对应的所述容器安装文件,以及至少一个待部署服务对应的所述服务部署文件;

所述部署单元203,用于利用提取的所述容器安装文件,安装至少一个目标容器,并利用所述服务部署文件,在安装的所述容器中部署至少一个目标服务。

本发明一个实施例中,所述部署文件包包括:数据子文件夹;其中,所述数据子文件夹包括:所述至少一个待安装容器对应的安装环境参数;

所述部署单元203,用于根据所述数据子文件夹中的安装环境参数以及所述容器安装文件,安装所述至少一个目标容器。

本发明一个实施例中,所述部署文件包包括:启动脚本;

所述部署单元203,用于根据所述部署指令,从所述部署文件包中查找所述启动脚本,并运行查找到的所述启动脚本;利用运行的所述启动脚本,获取部署环境对应的部署环境参数;将所述部署环境参数存储至所述数据子文件夹,利用所述部署环境参数对所述安装环境参数进行更新;根据更新后的所述安装环境参数以及所述容器安装文件,安装所述至少一个目标容器。

本发明一个实施例中,所述部署文件包包括:基础镜像子文件夹;其中,所述基础镜像子文件夹包括:至少一个所述待安装容器对应的基础镜像;

所述部署单元203,用于从所述至少一个待安装容器对应的基础镜像中,确定与所述目标容器对应的目标基础镜像,并根据确定出的所述目标基础镜像,构建所述目标容器。

上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

本发明实施例还提供了一种可读介质,包括执行指令,当存储控制器的处理器执行所述执行指令时,所述存储控制器执行本发明上述任一实施例提供的方法。

本发明实施例还提供了一种存储控制器,包括:处理器、存储器和总线;所述存储器用于存储执行指令,所述处理器与所述存储器通过所述总线连接,当所述存储控制器运行时,所述处理器执行所述存储器存储的所述执行指令,以使所述存储控制器执行本发明上述任一实施例提供的方法。

综上所述,本发明以上各个实施例至少具有如下有益效果:

1、在本发明实施例中,通过构建包括容器安装文件和服务部署文件的部署文件包,当接收到部署指令时,从部署文件包中提取容器安装文件和服务部署文件,并利用提取的容器安装文件,自动安装目标容器,并利用提取的服务部署文件,自动在目标容器中部署目标服务。由此,工作人员仅需将部署文件包安装到部署主机,即可自动完成服务系统的部署,而无需逐个安装组件并调试其运行参数,从而降低了部署运维环境的工作量。

2、在本发明实施例中,根据数据子文件夹中存放的安装环境参数,结合容器安装文件安装目标容器,以将容器在之前环境中的数据作为本次安装容器的一种依据,有利于快速准确的安装容器,从而提高运维环境的部署效率。

3、在本发明实施例中,利用部署文件包的启动脚本获取部署环境对应的部署环境参数,并利用部署环境参数更新安装环境参数,然后根据更新后的安装环境参数安装容器,有利于进一步提高运维环境的部署效率。

需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质中。

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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