一种云计算环境下的分布式软件部署方法及系统
技术领域
本发明涉及分布式软件部署领域,特别是一种云计算环境下的分布式软件部署方法及系统。
背景技术
现有技术通常采用构建软件、选择空闲服务器、上传软件、启动、配置域名等步骤部署服务,操作繁琐,且存在极大的出错风险。此外,现有技术的部署方法复杂,即使做了自动化部署,也只是将上述部分流程做了自动化,并未解决核心的自动部署自动配置问题。
发明内容
本部分的目的在于概述本发明的实施例的一些方面以及简要介绍一些较佳实施例。在本部分以及本申请的说明书摘要和发明名称中可能会做些简化或省略以避免使本部分、说明书摘要和发明名称的目的模糊,而这种简化或省略不能用于限制本发明的范围。
鉴于上述和/或现有的软件部署中存在的问题,提出了本发明。
因此,本发明其中的一个目的是提供一种云计算环境下的分布式软件部署方法,其解决了现有部署方法复杂、易出错的问题。
为解决上述技术问题,本发明提供如下技术方案:一种云计算环境下的分布式软件部署方法,其包括:部署版本构建服务;实现资源管理服务;在所述资源管理服务上创建项目;基于上述步骤中搭建的服务进行服务部署。
作为本发明所述云计算环境下的分布式软件部署方法的一种优选方案,其中:所述部署版本构建服务包括:运行版本构建系统;创建项目版本,配置代码的管理路径;设置版本构建完成的事件处理。
作为本发明所述云计算环境下的分布式软件部署方法的一种优选方案,其中:所述事件处理为,待所述版本构建完成后,下发指令给所述资源管理服务,并通过该指令通知版本构建任务已经完成。
作为本发明所述云计算环境下的分布式软件部署方法的一种优选方案,其中:所述实现资源管理服务包括,
提供第一接口,通过所述第一接口提供消息通知能力,在所述设置版本构建完成的事件处理中,触发所述第一接口,通过所述第一接口通知所述资源管理服务版本构建完成;对资源设备信息进行管理,存储资源设备的基本信息;提供第二接口,并通过所述第二接口查询上一步骤所管理的设备信息;提供第三接口,并通过所述第三接口在所述资源管理服务上创建项目;设定服务资源模板,通过所述服务资源模板对服务类型进行标定;提供第四接口,支持查询可部署的版本信息;所述资源管理服务通过所述第四接口获取到版本信息,其中包含版本软件的下载地址和资源模板,通过脚本登录到服务器上,下载版本软件和资源模板;运行上一步骤中的软件。
作为本发明所述云计算环境下的分布式软件部署方法的一种优选方案,其中:所述资源模板包括网关型服务、基础服务、存储服务。
作为本发明所述云计算环境下的分布式软件部署方法的一种优选方案,其中:所述在资源管理服务上创建项目具体包括:根据所述第三接口,在所述资源管理服务上创建一个项目;该项目与所述版本构建服务上的项目一一映射。
作为本发明所述云计算环境下的分布式软件部署方法的一种优选方案,其中:所述服务部署包括:通过版本构建服务器进行构建版本,并通过所述第一接口通知所述资源管理服务版本构建完成;通过所述资源管理服务器选择要部署的版本信息部署版本。
本发明其中的一个目的是提供一种云计算环境下的分布式软件部署系统,其解决了现有部署方法复杂、易出错的问题。
为解决上述技术问题,本发明提供如下技术方案:一种云计算环境下的分布式软件部署系统,其包括:构建模块,基于用户配置的代码路径构建版本,接收控制模块下发的指令,进行版本构建;部署模块,用于将版本部署到服务器上;存储模块,用于存储版本数据信息;控制模块,提供命令控制界面给用户,并且能够接收用户的指定,将用户的指令转化为http协议,传输给构建模块进行构建,传输给部署模块进行部署。
作为本发明所述云计算环境下的分布式软件部署系统的一种优选方案,其中:用户通过控制模块下发构建指令到构建模块,构建模块接收控制模块下发的指令进行版本构建,并将构建完成的版本信息传输给部署模块,部署模块将接收到的版本信息传输到存储模块,存储模块将数据存储起来;用户通过控制模块选择要部署的版本信息、要部署版本的目标服务器,然后下发部署指令到部署模块,部署模块接收到控制模块的部署指令后,将版本部署到服务器上。
本发明的有益效果:本发明通过Bugatti系统,将开源系统Jenkins构建的软件包和云计算的设备资源高效的结合起来,极大地提高了软件包在云计算资源上的发布,让版本的发布运维变得简单、高效、安全。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。其中:
图1为Bugatti系统架构图。
图2为版本部署流程图。
图3为Bugatti系统实现流程图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合说明书附图对本发明的具体实施方式做详细的说明。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。
其次,此处所称的“一个实施例”或“实施例”是指可包含于本发明至少一个实现方式中的特定特征、结构或特性。在本说明书中不同地方出现的“在一个实施例中”并非均指同一个实施例,也不是单独的或选择性的与其他实施例互相排斥的实施例。
实施例1
参照图1~3,为本发明的一个实施例,该实施例提供了一种云计算环境下的分布式软件部署方法。
所述云计算环境下的分布式软件部署方法包括如下步骤:
步骤1:使用Jenkins部署构建服务器。Jenkins是一款开源CI&CD软件,用于自动化各种任务,包括构建、测试和部署软件。Jenkins是互联网行业使用比较广泛版本构建软件,经过简单的部署后,使用者上传代码,点击构建,Jenkins就可以构建出一个可运行的版本。使用Jenkins可以解决多人并发开发构建版本而导致的版本冲突问题。同时可以作为下述自动化服务部署构建的支撑工具,将构建完的消息通知到下述步骤2的Bugatti系统。
步骤2:实现资源管理服务Bugatti系统。Bugatti是资源管理服务的命名,此套系统实现如下功能:1、接收步骤1中Jenkins构建版本的通知;2.对资源设备进行管理,主要指虚拟机资源;3、管理服务的模板资源,要部署的业务服务可能有多种类型,比如网关服务、基础服务、存储服务等,需要对这些模板类型进行管理,每种业务服务对应一种资源类型模板;4、提供用于服务部署的查询对应服务可用版本的第三接口。5、从Jenkins上下载业务服务的软件包以及其他的依赖服务,部署到选定的资源设备上。6、支持在指定的设备上自动启动脚本。
步骤3:在资源管理服务Bugatti上创建项目。在Bugatti上创建一个项目,此项目名称可以和服务名称保持一致,便于识别。
步骤4:基于上述步骤1~步骤3中完成的环境搭建进行服务部署,并进行实操。首先上述步骤1、2、3已经完成服务部署的环境搭建,此步骤只需要提交代码到git仓库,到Jenkins系统上点击构建,等待Jenkins构建完成之后,到Bugatti系统上,选择此项目对应的Bugatti上的项目,选择资源设备,比如选择192.168.0.100的这台机器,选择要构建服务的版本,确定部署,服务即可自动部署起来。
进一步的,步骤1:使用Jenkins搭建版本构建服务器,包括如下步骤:
步骤1.1:下载Jenkins系统;
步骤1.2:在命令行运行命令java-jar jenkins.war--httpPort=8080.;
步骤1.3:打开浏览器进入链接http://localhost:8080;
步骤1.4:上述步骤打开的网站中,依据提示选择,并进行下一步;直至完成;
步骤1.5:待步骤1.4完成之后,点击新建,创建一个项目,配置代码的管理路径。进入到首页,点击立即构建,测试是否能构建成功,构建成功则意味着构建OK;
步骤1.6:设置构建完成的脚本。具体为:待Jenkins构建完成后,设置触发脚本,脚本内容是简单的curl http://ip:port/bugatti/notify,此url为下述步骤Bugatti服务提供的第一接口,用于接收Jenkins构建完成版本后的通知。
进一步的,步骤2:实现资源管理服务Bugatti系统,包括如下步骤:
步骤2.1:提供第一接口http://ip:port/bugatti/notify,给步骤1中搭建的Jenkins服务,在Jenkins构建完成业务版本之后,触发第一接口通知Bugatti构建服务构建完成,通知内容包含服务的版本号、服务下载地址。
步骤2.2:进行资源设备信息管理,构建一张数据库的表,表中存储设备的基本信息,比如如下字段:
并且对外提供第二接口,用于查询可用的设备及设备信息。
步骤2.3:提供第二接口,用于获取所述步骤2.2管理的资源设备信息;
步骤2.4:提供第三接口,用于在Bugatti上创建项目;Bugatti服务需要提供创建项目的能力,此项目和Jenkins上的项目唯一映射。
步骤2.5:设定需要的服务资源模板,服务资源模板是对服务类型的一个标定,标定此服务需要哪些资源、需要进行一些什么配置。设定如下几种资源模板:
(1)网关型服务。即标定服务需要对外提供http服务,并且需要配置域名以及具备负载均衡能力。此类服务部署时候,需要配置域名,且启动之后,需要将此服务加入到域名对应的负载均衡配置文件中。
(2)基础服务:基础服务描述指的是此服务提供基础业务能力,对上层网关服务提供RCP协议的通信方式,对下直接使用存储资源。此类服务在部署时候,需要连接部署的zookeeper服务,zookeeper是一个分布式的协调服务,支持发布订阅。比如基础服务作为接口提供者,启动之后到zookeeper上注册,注册之后订阅者会接收到我注册的接口的变更。此处接口是对第一接口、第二接口、第三接口、第四接口的统称。
(3)存储服务:存储服务指的是数据的存储软件服务。比如mysql、oracle等数据库。此类数据库的安装部署不依赖于外界环境,只需要选定安装的版本,脚本执行一键式安装即可。
步骤2.6:提供第四接口,支持查询可部署的版本信息,包括版本号、版本的下载地址和所述步骤2.5设定的资源模板;选择对应的版本号,可以获取到此版本号版本的下载地址。
步骤2.7:Bugatti服务通过上述步骤2.6,拿到对应的下载地址,采用ssh等脚本命令,登录到对应的服务器上,从所述步骤2.1通过第一接口提供的内容中获得下载地址下载业务服务软件,并根据资源模板下载相关的依赖,比如JDK、安装脚本install.sh。
步骤28:运行步骤2.7下载的软件(install.sh脚本),脚本将服务安装运行并且完成相关的配置。
进一步的,步骤3:在资源管理服务Bugatti上创建项目,包括:
步骤3.1:在步骤2.4中,提供了创建项目的第三接口,采用curl命令触发第三接口创建一个项目,此项目和Jenkins上的项目一一映射,涉及部分关联字段信息如下:
项目id |
Bugatti上服务名称 |
Jenkins上项目名称 |
进一步的,步骤4服务搭建完成,进行实操步骤,包括如下步骤:
步骤4.1:登录Jenkins,构建版本。构建完成后,Jenkins会将自动将构建完成的消息通到Bugatti。
步骤4.2:登录Bugatti系统,选择操作的项目,选择要发布的版本、选择要部署的服务器,确定部署。
本发明通过步骤1.6解决了版本构建与Bugatti版本部署之间的通信问题,版本部署不需要再人为手动通过FTP等下载工具去下载版本再上传至各个服务器,能够做到版本包上传下载的完全自动化。现有技术的操作,是通过FTP工具登录连接至指定的服务器,将版本下载至目标服务器,此种操作,操作人员需要知道目标服务器的IP地址和密码,存在密码泄露的安全问题。采用本发明,操作人员不需要知道目标服务器的密码、不需要登录目标机器且不存在操作失误的风险。
本发明通过步骤2实现了一套Bugatti系统,解决了版本部署的核心技术问题。此Bugatti系统实现了对资源文件的管理,此资源文件涉及服务器资源列表与项目依赖列表。通过步骤2实现的此Bugatti系统,只需要用户选择要构建版本的项目类型、要部署到的目标服务器,就能够快速安装项目所依赖的软件到目标服务器,进一步解决了人为操作的繁杂操作与操作失误问题,并且做到全程自动化。在现有技术中,操作人员会拿到一份依赖列表,根据依赖列表在服务器上依次安装所依赖的软件,操作耗时很长且操作人员需要全程投入。采用本发明实现的Bugatti系统,操作人员只需要通过两部简单的选择,即可完成软件的安装与版本的部署,全程不需要操作人员投入做到完全自动化,且不存在失误的风险。
通过比对使用安装有本发明的装置设备部署版本和未安装本发明的装置设备部署不同依赖项的版本的数据进行对比,比对前置说明:部署成功是指所部署的版本启动正常且能正常提供服务。为避免操作人员潜意识中做好思想准备,参与实验的操作员均在不告知实验目的,且在实验之后采用问答的方式确认实验人员对两种部署方式的认可情况。本实验中部署方案中的纯手动操作,指的是传统公司采用手动执行命令的方式实现软件的安装和部署;采用可用工具,指的是采用网络上的有利于安装部署版本的工具,本实验采用FTP用于传文件、Maven用于构建版本、提前编写用于部署的脚本;本专利方案,指的是用安装本发明的装置或设备。如下表,实验参数说明:实验次数指的是不同操作员进行实验的总次数;部署时长指的是完成一个版本部署所花费的时间。
实际使用中,用户打开所述步骤1部署的Jenkins系统的操作界面,进入版本构建选项,点击构建版本,版本构建完成后,打开Bugatit系统进入部署选项,选择和版本构建模块构建的版本同名的项目,选择版本信息,进行部署,至此版本部署完成。相比较于传统的版本部署步骤:本地打包、上传版本至各个服务器、安装服务器上的依赖软件、编写版本启动脚本、配置版本端口信息、运行启动脚本。采用本发明的分布式软件部署方法,可以完全释放人力,提高部署的速度和部署的成功率。
实施例2
参照图,为本发明的第二个实施例,该实施例基于实施例1中所述的云计算环境下的分布式软件部署方法,并基于该方法提出一种云计算环境下的分布式软件部署系统。所述云计算环境下的分布式软件部署系统包括构建模块100、部署模块200、存储模块300以及控制模块400。
其中,构建模块100能够基于用户配置的代码路径构建版本,接收控制模块400下发的指令,进行版本构建。具体的,构建模块100可以是基于Jenkins的一套版本构建系统或者是部署此系统的电脑或者服务器。
部署模块200用于将版本部署到服务器上。具体的,部署模块200可以是一套软件系统或者具备版本部署的电脑或者服务器,此模块负责将软件版本的部署在服务器上。
存储模块300用于存储版本数据信息。具体的,存储模块300可以是部署mysql、mongodb等存储系统的电脑或者服务器。
控制模块400能够提供命令控制界面给用户,并且能够接收用户的指定,将用户的指令转化为http协议,传输给构建模块100进行构建,传输给部署模块200进行部署。具体的,控制模块400可以是一个网页系统、电脑的应用软件,也可以是具备命令传输的硬件设备。
在本发明中,用户通过控制模块400下发构建指令到构建模块100,构建模块100接收控制模块400下发的指令进行版本构建,并将构建完成的版本信息传输给部署模块200,部署模块200将接收到的版本信息传输到存储模块300,存储模块300将数据存储起来;
用户通过控制模块400选择要部署的版本信息、要部署版本的目标服务器,然后下发部署指令到部署模块200,部署模块200接收到控制模块400的部署指令后,将版本部署到服务器上。
实际使用中,用户打开所述步骤1部署的Jenkins系统的操作界面,进入版本构建选项,点击构建版本,版本构建完成后,打开Bugatit系统进入部署选项,选择和版本构建模块构建的版本同名的项目,选择版本信息,进行部署,至此版本部署完成。相比较于传统的版本部署步骤:本地打包、上传版本至各个服务器、安装服务器上的依赖软件、编写版本启动脚本、配置版本端口信息、运行启动脚本。采用本发明的分布式软件部署方法,可以完全释放人力,提高部署的速度和部署的成功率。
应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。