自动部署关联软件的方法和系统
技术领域
本发明涉及一种计算机信息处理技术领域,具体地说,涉及一种在分布式部署的系统中,在增加新系统时,自动部署关联软件的方法或系统。
背景技术
电商或物流公司的仓库系统分布式部署在各自的仓储内,新加一个仓库都需要完整的部署一套相互关联的应用,包括中间件,如数据库系统、消息系统、Nginx、Redis和缓存等,还包括自有应用软件,例如仓储的入库模块,拣货、复核、打包等模块。这些应用部署的过程往往很复杂,需要专业人员做大量的部署、验证工作。
目前,当新增加一个仓库后,由运维人员手动安装中间件,例如数据库系统,消息系统等;然后逐个部署自有应用软件,并根据仓库和环境的不同修改各个应用的配置。
虽然上述手工安装、部署可以完成一个增加仓库对各种应用的要求,但是由于运维和研发人员手动部署,不但耗费人力、效率低。而且在手动配置应用软件时,由人工进行修改、配置的出错几率大。
发明内容
本发明要解决的技术问题在于,针对现有技术的不足,提供一种自动部署关联软件的方法或系统,通过关联软件的顺序、自动安装,减少人工部署的人力成本,提高部署关联软件的效率。
为解决上述技术问题,本发明提供了一种自动部署关联软件的方法,其中,包括:
配置待部署软件的部署信息,所述部署信息包括软件的基本属性信息和应用配置文件的模板信息;
获取所述待部署软件所在的服务器信息;
基于所述待部署软件的基本属性信息和对应的服务器信息,为不同类型的系统软件配置对应的参数信息,所述参数信息包括分组信息和主从IP地址;
按照部署信息和所述的系统软件的参数信息,依次安装所述系统软件;
配置应用软件的参数信息,包括分组信息和版本信息,并生成相应的应用配置文件;
根据所述参数信息和所述对应的应用配置文件依次安装所述应用软件。
优选地,所述软件的基本属性信息包括软件名称、部署顺序、安装路径、运行用户和默认端口。
优选地,所述部署信息还包括检查参数;
在安装完所有待部署软件后,根据所述检查参数进行健康检查。
优选地,所述服务器包括多个分组服务器,所述获取应用所在的服务器信息的步骤包括:
根据Salt-minion的minionId命名规则groupName.serverType.ip,通过通配符的匹配得到分组内所有的服务器的IP信息和服务器类型;
和/或,通过saltstack的status模块获得分组内服务器的内部资源信息。
优选地,为不同类型的系统软件配置对应的参数之前,还包括分配所述对应服务器的资源的步骤包括:
基于软件的基本属性信息和服务器信息,获取与所述软件相关联的服务器;
基于与所述服务器对应的软件数量和特性,为所述软件分配所述服务器的资源。
优选地,在为不同类型的系统软件或应用软件配置对应的参数时,包括分组的步骤:
根据待部署的系统软件或应用软件的主从关系进行分组;
根据部署信息中的部署顺序,获得分组参数信息;
根据所述分组参数信息获取对应服务器的IP信息。
优选地,所述安装系统软件的步骤包括:
根据部署信息、所述的系统软件分组参数和对应服务器的IP信息,按分组参数顺序安装;其中,分组内的系统软件并行安装。
优选地,所述生成相应的配置文件的步骤包括:
根据用户配置文件的模板,确定模板变量;
将所述模板变量替换为应用软件的环境信息和中间件元数据信息。
优选地,所述版本信息通过以下步骤配置得到:
根据服务器中存储的模板分组信息,将待部署的应用软件分为不同的组;
将同一组内的应用软件配置相同的版本。
根据本发明的另一个方面,本发明提供了一种自动部署关联软件的系统,包括:
元数据配置模块,用于配置、管理待部署软件的部署信息,包括软件的基本属性信息、用户配置文件的模板和检查参数;
服务器处理模块,用于获取所述待部署软件所在的服务器信息;
软件配置模块,用于根据待部署软件配置与所述软件对应的安装信息;
软件安装模块,用于根据部署信息、所述服务器信息和具体的安装信息,安装待部署软件;和
校验模块,用于根据部署信息中的检查参数对已安装的软件进行健康检查。
优选地,所述元数据配置模块包括:
通用配置单元;用于配置软件名称、部署顺序、安装路径、运行用户和/或默认端口;
模板单元,用于提供应用软件的配置文件的模板信息;和
检查参数单元,用于提供对已安装的软件进行健康检查时使用的参数。
优选地,所述软件配置模块包括:
系统软件配置单元,用于基于所述待部署软件的基本属性信息和对应的服务器信息,为不同类型的系统软件配置对应的参数,其中,主要的参数包括分组参数和主、从IP地址参数;和
应用软件配置单元,用于配置软件版本,并生成对应的应用配置文件。
优选地,所述软件安装模块包括:
系统软件安装单元,根据部署信息、服务器信息、分组参数和主、从IP地址参数,按分组参数顺序安装;其中,分组内的系统软件并行安装;和
应用软件安装单元,用于根据部署信息、所述服务器信息、分组信息、软件版本和相应的应用配置文件,安装待部署应用软件。
根据本发明的第三方面,提供一种自动部署关联软件装置,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行上述自动部署关联软件方法。
根据本发明的第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行时实现上述自动部署关联软件方法。
本发明通过自己部署关联软件,减少了人工成本,并且,通过元数据和配置模板来自动生成软件配置,减少了人工配置的出错几率。
附图说明
通过参照以下附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1为本发明所述自动部署关联软件的方法的流程图;
图2为本发明所述自动部署关联软件的系统的原理框图;
图3为本发明所述元数据配置模块的原理框图;
图4为本发明所述服务器处理模块的原理框图
图5为本发明所述软件安装模块的原理框图;
图6为本发明所述软件配置模块的原理框图;
图7为本发明所述指令系统的结构原理图;和
图8为本发明指令传递的流程示意图。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
附图中的流程图、框图图示了本发明实施例的系统、方法、装置的可能的体系框架、功能和操作,流程图和框图上的方框可以代表一个模块、程序段或仅仅是一段代码,所述模块、程序段和代码都是用来实现规定逻辑功能的可执行指令。也应当注意,所述实现规定逻辑功能的可执行指令可以重新组合,从而生成新的模块和程序段。因此附图的方框以及方框顺序只是用来更好的图示实施例的过程和步骤,而不应以此作为对发明本身的限制。
如图1所示,为本发明所述自动部署关联软件的方法的流程图,对应的,图2为对应系统的原理框图,结合图1和图2对本发明进行总体说明如下:
参见图2,所述自动部署关联软件的系统包括元数据配置模块1、服务器处理模块2、软件配置模块3、软件安装模块4和校验模块5。其中,所述元数据配置模块1用于配置、管理待部署软件的部署信息,包括应用的基本属性信息、用户配置文件的模板和检查参数;所述服务器处理模块2用于获取所述待部署软件所在的服务器信息,还可以为所述待部署软件分配所述对应服务器的资源;所述软件配置模块3用于系统软件和应用软件的具体参数配置,其中,系统软件的配置包括分组配置和主从IP地址的配置。应用软件的配置包括软件的版本,并生成相应的应用配置文件;所述软件安装模块4用于根据部署信息、所述服务器信息,系统软件和应用软件的具体参数信息,按顺序安装待部署软件;所述校验模块5用于根据部署信息中的检查参数检查已安装的软件。
参见图1,自动部署关联软件的方法包括以下步骤:
步骤S1,通过元数据配置模块1配置待部署软件的部署信息,所述部署信息包括软件的基本属性信息、应用配置文件的模板信息和检查参数;所述的软件的基本属性信息包括软件名称、部署顺序、安装路径、运行用户和默认端口。
步骤S2,通过服务器处理模块2获取用于安装所述待部署软件的服务器信息;
步骤S3,通过所述软件配置模块3根据需要安装的系统软件(包括各种类型中间件)类型,配置不同的参数,例如:分组配置和主从IP地址(其中,步骤S1中的配置信息为通用配置信息,其具有对应的默认值,在步骤S3中,显示所述默认值,并可以根据情况进行修改。关于主从IP地址的配置,由于在步骤S2中获得多个服务器信息,在本步骤S3中,是通过从前面的服务器中选择合适的服务器来获取对应的主从IP地址。)、安装路径、内存、端口、或协议等。例如,对于MySql,需要配置主IP地址、从IP地址、主VIP地址、从VIP地址、安装路径、内存、端口和分组组号。而对于Redis,需要配置主IP地址、从IP地址、安装路径、内存、端口和版本号。因而,对于不同的系统软件需要根据实际情况进行配置。
步骤S4,所述软件安装模块4按照部署信息中的部署顺序及前述的系统软件参数信息,依次安装系统软件;
步骤S5,通过软件配置模块3配置软件的版本信息,并生成相应的应用配置文件;
步骤S6,通过软件安装模块4,根据所述版本信息和所述应用配置文件依次安装应用软件;
步骤S7,通过所述校验模块5,根据检查参数,对以上安装的软件进行检查。
其中,所述元数据配置模块1如图3所示,包括通用配置单元11、模板单元12和检查参数单元13。其中,所述通用配置单元11用于配置软件名称、部署顺序、安装路径、运行用户和默认端口等通用参数信息。在这里,通过上述软件安装的通用配置,为软件的自动部署提供了基本的参数环境。
所述模板单元12用于提供应用软件的配置文件的模板信息。这里所述的配置文件记载的是运行软件必须的配置,例如软件所要连接的数据库、软件依赖服务的地址等,而不是用户的配置设置。
所述检查参数单元13用于提供对已安装的软件进行检查时使用的参数。例如,所述检查包括对软件运行进程(Process)的检查、软件连接数据库的检查、软件依赖服务url的检查、要访问端口的检查和REDIS检查等不同类型项目的检查。其中,通过检查列表列出上述不同类型的检查项目,并针对每一种类型待检查项目列出具体的检查参数及其说明。
所述服务器处理模块2如图4所示,包括服务器信息获取单元21和可选的服务器资源配置单元22。其中,所述服务器信息获取单元21用于获取安装待部署软件的服务器信息,所述服务器信息主要包括服务器IP地址和服务器类型。具体地,在网络环境下,根据服务器提供的服务类型不同,可以分为文件服务器,数据库服务器,应用软件服务器和WEB服务器等,对于这些不同类型的服务器,有时会采用一组服务器,包括主服务器和从服务器,来共同提供高可靠的服务。例如Mysql或Redis。因而,在本发明中所述获取软件所在的服务器信息时,还需要获取主、从服务器信息。
软件配置模块3如图6所示,包括系统软件配置单元31和应用软件配置单元32,系统软件配置单元31在步骤S3中,基于所述待部署软件的基本属性信息和对应的服务器信息,为不同类型的系统软件配置对应的参数,其中,主要的参数包括分组参数和IP地址或主从IP地址参数。根据软件的部署顺序和软件的主从关系来分组,并从前述的服务器中确定与之对应的服务器IP地址。比如针对MySql、Keepalived和lvs这两种系统软件,根据前面设置的部署顺序,分别为1,1,2;而MySql和Keepalived还分有主从之分,而lvs没有主从关系,主的部署顺序要高于从,所以这几个软件安装时的分组为:
第一组:MySql主,Keepalived主;
第二组:MySql从,Keepalived从;
第三组:lvs。
在配置好系统软件后,由所述软件安装模块进行安装。所述软件安装模块4如图5所示,包括系统软件安装单元41和应用软件安装单元42,其中,系统软件安装单元41,根据部署信息及服务器信息,按分组顺序,从大到小顺序安装;其中,分组内的软件并行安装。
安装完系统软件后,安装应用软件。在应用软件安装单元42安装待部署的应用软件之前,需要通过软件配置模块3进行软件版本的配置,并生成应用配置文件。具体地,软件配置模块中的应用软件配置单元32为待部署的应用软件配置对应的版本,并生成对应的应用配置文件。其中,通过查找服务器中的模板分组信息,将所述的待部署应用软件分为不同的组,并将同一组内的应用软件的版本信息配置为相同,使得同一组的应用软件版本相同。
通常,对于具有多种应用软件的系统,会建有模板仓,模板仓内存储有应用软件的版本信息,根据实际应用软件的分组,模板仓内的模板也有对应的分组,从所述模板分组内得到所有关联应用软件的版本信息参数,并根据版本信息参数配置分组内的应用软件的版本信息,从而保证同一分组内的应用软件的版本一致。
应用软件配置单元32与所述元数据配置模块相连接,根据部署信息中用户配置文件的模板生成相应的应用配置文件。具体地,根据待部署应用软件从所述元数据配置模块获得对应的配置文件的模板,并确定模板变量;将所述模板变量替换为所述待部署应用软件的环境信息和中间件元数据信息,则生成了所述的配置文件。其中,所述环境信息是指当前正在开的库房的仓库信息,比如库房编号、库房对应的配送中心号、每个子仓库所对应的数据库分组信息。所述中间件元数据信息是指系统软件(例如Mysql)安装的VIP信息,Redis安装到服务器的IP信息等。
例如:配置文件模板样例:
@{fn:for(i,warehousedetails)}
datasource.@{orgNo}-@{cky2}-@{wareNo}=partition@{grpNo}
@{fn:end}
@{fn:for(j,mysql)}
wms3-innerDelivery.jdbc.url[j]=jdbc:mysql://@{SYS.mysqlMaster[j].vip}:3358/innerdelivery?zeroDateTimeBehavior=convertToNull
@{fn:end}
wms3-innerDelivery.jdbc.driver=com.mysql.jdbc.Driver
wms3-innerDelivery.jdbc.datasource.type=dbcp
其中,模板文件中@{xxx}内容为变量占位符,@{fn:xxx}为变量函数调用。
在仓库的系统软件安装后,则会确定系统软件相关的变量值,有了变量值,就可以根据上面的模板确定变量占位符和变量函数的调用。例如@{SYS.mysqlMaster1.vip}即为当前仓库安装Mysql主库的VIP,@{fn:for(i,warehousedetails)}是根据当前库房中的仓库详情信息的循环函数调用。
当得到了对应的版本信息及相应的应用配置文件后,应用软件安装单元42根据部署信息、所述服务器信息,使用对应的版本信息及相应的应用配置文件安装待部署应用软件。
本发明所述方法中的步骤涉及到指令的发送与响应,为了提高指令的发送与响应的安全、方便和快捷,作为一个实施例,本发明采用Saltstock系统完成以上的系统和方法的指令发送与响应。其中,所述Saltstock系统中指令处理系统如图7所示,包括元数据管理模块1a、WEB-UI模块2a、Brain-Web模块3a、Salt-API-Proxy模块4a、Salt-API模块5a、Salt-Master模块6a和Salt-Minion模块7a。其中,WEB-UI2a对外提供界面操作接口,人们通过这个界面操作接口配置前述各种待部署软件的部署信息。在有开仓需求时,按步骤部署上述信息。配置好后,系统会自动调度执行部署任务,从而完成软件的自动部署。
所述元数据管理模块1a用于管理本发明所述系统内涉及到的服务器、中间件、系统软件和应用软件的部署信息。即通过WEB-UI模块2a和元数据管理模块1a来实现本发明图2所述的元数据配置模块1。
由Salt-API-Proxy模块4a通过https和IP限制等方式保护Salt-API,防止API被恶意的软件调用。由Salt-API模块5a通过http方式向Salt-Master模块6a发指令,Salt-Master模块6a管理salt-minion认证,负责向salt-minion发出指令,并收集指令执行结果。Salt-Minion模块7a运行在仓库服务器上,接受并运行Salt-Master指令。具体地,指令的发送与响应如图8所示。
由Brain-Web模块3a发送命令给Salt-API-Proxy模块4a,由Salt-API-Proxy模块4a校验指令是否安全,若安全,则发送指令给Salt-API模块5a,若不安全指令交由异常指令处理模块8a处理。Aalt-API模块5a发指令给Aalt-Master模块6a,Salt-Master模块6a发指令给对应的Salt-Minion模块7a,Salt-Minion模块接收并执行所述指令。
在步骤2中,通过服务器处理模块2获取所述待部署软件所在的服务器信息的步骤具体包括:
步骤S21,根据Salt-minion的minionId命名规则groupName.serverType.ip,通过通配符的匹配得到分组内所有的服务器的IP信息和服务器类型;
步骤S22,通过Saltstack的Status模块获得分组内服务器的内部资源信息。
当采用上述指令的发送与响应流程时,以步骤S21为例,即服务器处理模块2利用Brain-Web模块3a根据Salt-minion的minionId命名规则groupName.serverType.ip,发送要求获取分组内所有服务器IP信息和服务器类型的指令,所述指令为具有通配符匹配的指令。
由Salt-API-Proxy模块4a校验该指令是否安全,若安全则发送指令给Salt-API模块5a,若不安全指令交由异常指令处理模块8a处理。
Salt-API模块5a将该指令发送给Salt-Master模块6a,Salt-Master模块6a确定分组内的服务器地址,将该指令发送给对应的Salt-Minion模块7a,Salt-Minion模块7a接收到该指令后,根据所述通配符,得到分组内所有的服务器的IP信息和服务器类型。
本发明通过上述对指令的发送与响应的控制,增加了指令传送的安全与快捷。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。