CN115344273B - 一种基于货架系统来运行应用软件的方法及系统 - Google Patents
一种基于货架系统来运行应用软件的方法及系统 Download PDFInfo
- Publication number
- CN115344273B CN115344273B CN202211282104.7A CN202211282104A CN115344273B CN 115344273 B CN115344273 B CN 115344273B CN 202211282104 A CN202211282104 A CN 202211282104A CN 115344273 B CN115344273 B CN 115344273B
- Authority
- CN
- China
- Prior art keywords
- shelf
- application
- shelf system
- file
- installation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1433—Saving, restoring, recovering or retrying at system level during software upgrading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于货架系统来运行应用软件的方法及系统,所述方法包括以下步骤:S101,构建产品包;S102,将产品包导入货架系统并解析具体信息;S103,添加主机;S104,选择应用,进行应用部署配置;S105,分发安装包和编排文件执行部署;S106,在货架系统的服务管理模块中对服务进行启动、停止、重启和配置文件修改的运维操作;S107,选择服务进行升级和备份。本方案通过货架系统平台让普通人在任何客户环境下能够轻松部署各种应用,并能够简单的进行一系列运维操作,通用性强、易于管理。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于货架系统来运行应用软件的方法及系统。
背景技术
传统应用软件部署到客户的服务器上,需要专业的运维根据客户操作系统版本以及安装应用的特性。编写安装脚本部署应用所需要的中间件、数据库以及应用本身。并为他们创建路由(routing是指分组从源到目的地时,决定端到端路径的网络范围的进程)提供网关(Gateway又称网间连接器、协议转换器)打通网络环境,创建系统用户并赋予用户组(用户组是系统对同一类对象进行统一管理的一种手段)和可执行目录权限。为数据库创建库建立与之对应的角色最后导入数据。应用启动成功后为它创建守护进程 (daemon是一类在后台运行的特殊进程,用于执行特定的系统任务)防止服务异常停止,并且需要准备进行备份和灾难恢复的一系列运维脚本可以在需要时进行一系列运维操作。
但这类方式仍有不足:一方面:应用软件、中间件和数据库之间调用关系复杂并且在服务器上文件可能会存在文件目录冲突,启动停止时存在依赖,应用水平扩容的难度高的问题。第二方面, 当需要部署安装的应用版本众多,客户服务器环境变化多样。需要维护庞大繁杂的文档,当文档有缺失或者文档有误时,再需要对应用进行升级和备份操作会变得难上加难。而且每一套环境的部署策略难以在另外的服务器集群上复用。第三方面,有能力的完成上述运维操作的人员十分稀少,需要进行长时间熟悉了解应用的特性才能够顺利的进行安装和后续运维。对企业来说使用应用软件的成本就会变得很高。
发明内容
针对现有技术存在的问题,本发明的目的在于通过货架系统这个平台让普通人在任何客户环境下能够轻松部署各种应用,并能够简单的进行一系列运维操作,通用性强、易于管理。货架系统是一个包含应用中心、服务管理、主机管理、产品包管理、巡检中心的智能运维部署平台。
为实现上述目的,本发明提供一种基于货架系统来运行应用软件的方法,所述方法包括以下步骤:
步骤S101,构建产品包;
步骤S102,将产品包导入货架系统并解析具体信息;
步骤S103,添加主机;
步骤S104,选择应用,进行应用部署配置;
步骤S105,分发安装包和编排文件执行部署;
步骤S106,在货架系统的服务管理模块中对服务进行启动、停止、重启和配置文件修改的运维操作;
步骤S107,选择服务进行升级和备份。
进一步,具体的在步骤S101中,通过数据协议规范JSON Schema定义一种描述应用安装方式的配置文件,文件名为meta.json;在计算机中新建一个文件夹并进入到这个文件;将安装文件、安装可执行文件放置到当前目录,并且创建名为image的文件夹将图标文件和介绍应用图片放入这个文件夹中;再创建一个名为sql的文件夹存放数据初始化的sql文件最后当前目录打包成一个 .tar.gz结尾的压缩包,在macos系统和linux系统中通过执行tar -zcvf mypackage.tar.gz * 的命令打包;最后在当前目录就能够获得一个可以导入货架系统的复用产品包。
进一步,在步骤S102中,通过货架上传产品包;将产品包上传到货架系统服务器运行目录下的tmp_download目录,货架系统对产品包进行解压操作,并读取里面的meta.json文件并解析文件内容;并将应用和中间件的依赖关系,通过以拓扑排序为基础的排序算法转换成应用部署的顺序,保存到货架系统的数据库中。
进一步,在步骤S103中,货架系统中添加主机;首先用户填写目标机器的ip和ssh端口以及用于认证通过的秘钥或者账号密码;通过主机连接信息货架系统将存放在服务器的货架Agent安装包和对应安装执行文件通过scp命令放置到目标机器的/opt/startdt/metastack/metastack-agent目录下;并执行安装执行文件,货架Agent启动后会主动通过HTTP或HTTPS调用货架系统的API信息。
进一步,步骤S104中,在应用中心用户可以选择应用和对应的版本号,下一步创建集群并选择添加完成的主机,选择需要安装应用和有依赖关系的中间件,为每个安装包选择部署在哪台主机上等配置操作后进行环境监测
进一步,步骤S105中,货架系统将步骤S104 中用户部署流程中产生的数据转化拆解成部署任务,并调用货架Agent的API将任务分发到货架Agent上;货架Agent解析部署任务内信息;通过HTTP方式下载安装包和安装执行文件,分别下载至货架Agent当前目录的download文件夹和script文件下;并且将部署任务中的其他参数信息加入当前调用安装执行文件命令的环境变量中;货架Agent执行安装执行文件进行应用的部署并将安装过程产生的日志信息写入到货架Agent的log目录下的.log文件中。
进一步,步骤S106中,读取和修改配置文件,具体为货架系统调用货架Agent的API,货架Agent读取服务器本地的配置文件;货架Agent再将内容通过货架系统的API返回给用户,完成查询配置信息的操作;修改配置文件则是将修改过的配置信息调用货架API,并通过货架API写入本地文件。
进一步,步骤107中,在货架系统中点击服务的升级按钮,货架系统将从数据库中查询到生成这个服务所有的应用的不同版本;用户选择版本再通过选择调整应用对应的主机数量来满足自己是需要扩容服务还是单纯升级服务的需求。
进一步,在升级失败时能够进行回滚,具体为倒序执行升级步骤,将卸载任务修改为还原任务,安装任务修改为卸载任务;首先开始卸载新安装的应用,再执行还原任务;依次执行回滚,完成回滚操作。
另一方面,本发明提供一种基于货架系统来运行应用软件的系统,其特征在于,所述系统能够实现根据本发明所述的基于货架系统来运行应用软件的方法;所述货架系统是包括应用中心、服务管理模块、主机管理模块、产品包管理模块、数据库管理模块和巡检中心;应用中心是进行应用部署的功能模块,其通过quartz的任务调度和agent任务执行能力来实现;服务管理模块是管理应用部署完后在主机上的服务的模块,包含对服务的启动、停止、重启、卸载、升级的功能,其通过quartz和agent实现;主机管理模块是将目标主机纳入货架系统的管理中;产品包管理模块是将用户创建好的产品包导入、更新、管理的功能模块;数据库管理模块是针对部署安装中需要初始化数据而生产的模块,主要功能是数据库的创建、初始化数据、备份数据;巡检中心是一个能够定义巡检指标、巡检任务帮助运维人员及时发现和定位集群中出现的问题,其通过grafana和prometheus实现。
本发明通过货架系统产品包制作解析流程、主机管理具体办法、货架系统安装、卸载、升级、回滚应用具体办法实现基于货架系统来运行应用软件,具有以下有益效果:
1.安装包在任何有货架系统的环境下都可以通用,相比之前每个环境都有特定的安装策略通用性高了很多。
2.基于货架系统用户可以在选择安装应用的过程中完全无感知的就完成了对hosts的配置。
3.本方案中用户在货架系统通过更安全的数据传输协议将安装包分发到目标主机上安装应用并有日志留存,更简单、清晰并且可以查看历史安装记录。
4.在货架系统的鉴权体系下进行操作的控制会让每一项运维操作变得可控制、可追溯责任人。
5.货架系统的升级更加简单,有升级记录可以很方便回滚。
6.通过货架系统一个不懂得shell脚本编写、docker执行命令、docker-compose编排文件编写、k8s编排文件编写的人也可以轻松部署一套他所需要的应用软件,并且完成一系列需要专业运维才能办到的服务运维。并且耗时更短,管理更方便。
附图说明
图1示出了根据本发明实施例一种基于货架系统来运行应用软件的方法及系统中部署应用的基本流程图;
图2示出了基于货架系统来运行应用软件的方法及系统中应用依赖关系转换示意图;
图3示出了本发明实施例应用通过货架系统部署的流程图;
图4示出了本发明实施例应用通过货架系统升级回滚的流程图;
图5示出了货架系统流程图。
具体实施方式
下面将结合附图,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
以下结合图1-图5对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
本发明的基于货架系统来运行应用软件的方法及系统,通过制作一个可以复用包含应用安装文件、描述安装方式、安装执行文件、卸载执行文件的元数据文件(按照JSON数据格式(是一种轻量级的数据交换格式)生产的文件)、sql文件(sql的全称是StructuredQuery Language,中文名称是结构化查询语言,用于初始化数据)的产品包。所述货架系统是针对私有化网络环境下,应用软件部署运维平台。在货架系统中添加产品包解析出应用,在应用中心中选择需要部署的软件首先选择软件的版本,创建或者选择集群(主机的集合)。根据用户需求选择需要部署的应用以及依赖的中间件,以及将应用和中间件分配到主机上,校验部署应用的主机所需要满足的资源,最后点击安装。货架系统会根据配置进行自动安装应用。安装后可以在服务管理中对每个服务(应用启动后能够对外提供服务,这时我们将应用成为服务)在货架系统上进行启动、停止、重启等运维操作。
如图1所示,基于货架系统来运行应用软件的方法及系统基本流程为:
步骤S101,构建产品包;所述产品包包含应用安装文件、描述安装方式、安装执行文件、卸载执行文件的元数据文件和sql文件的产品包;
步骤S102,导入产品包并解析具体信息;
步骤S103,添加主机;
步骤S104,选择应用,进行应用部署配置;
步骤S105,分发安装包和编排文件执行部署;
步骤S106,在货架服务管理模块中对服务进行启动、停止、重启和配置文件修改的运维操作;
步骤S107,选择服务进行升级和备份。货架系统是一个包含应用中心、服务管理模块、主机管理模块、产品包管理模块、数据库管理模块和巡检中心的智能运维部署平台。系统架构图如图5所示:用户通过页面的api请求访问到货架系统Manager简称Manager,Manager首先会进行用户信息认证。通过restfulapi(RESTful API 是一种互联网软件架构的设计规范,设计指南,设计风格,设计原则(类似于web标准,并不是标准【规范,原则】)提供集群管理、主机管理、产品包管理、应用中心、服务管理、数据库管理、网络管理、巡检中心等功能。集群管理提供将多个主机划分成一个或者多个集群的功能。主机管理模块是将目标主机纳入Manager的管理中,其具体实现为通过ssh(安全的远程登录协议)安装货架系统agent(能够执行manager传输来的脚本、docker、api任务的程序)后面简称agent或者http(超文本传输协议)的方式接管agent达到控制目标节点的目的,并且为目标主机安装docker(一个开源的应用容器引擎)、k3s(一个轻量级用于管理云平台中多个主机上的容器化的应用)、jdk(针对Java开发员的软件开发工具包)的基础环境,并且主机管理模块还支持链接目标主机的Cli(一般指命令行界面)功能,依托于sshj(是专为远程登录会话和其他网络服务提供安全性的应用层协议)框架实现。产品包管理模块是将用户创建好的产品包导入、更新、管理的功能模块。应用中心是进行应用部署的功能模块,其实现依赖于quartz(是一个开源的作业调度框架)的任务调度和agent任务执行能力。服务管理模块是管理应用部署完后在主机上的服务的模块,包含对服务的启动、停止、重启、卸载、升级的功能,其实现也依托于quartz和agent。数据库管理模块是针对部署安装中需要初始化数据而生产的模块,主要功能是数据库的创建、初始化数据、备份数据。网络管理是帮助集群中各个应用能够相互通讯。巡检中心是一个能够定义巡检指标、巡检任务帮助运维人员及时发现和定位集群中出现的问题,其实现依赖于grafana(是一款用Go语言开发的.源数据可视化工具,可以做数据监控和数据统计,带有告警功能)和prometheus(是一个开源监控解决方案,用于收集和聚合指标作为时间序列数据)。
具体的在步骤S101中,通过数据协议规范(JSON Schema)定义了一种描述应用安装方式的配置文件,文件名为meta.json。配置文件参见下面的代码:
{
"name":"应用名称示例: 我的应用",
"appVersion": "应用的版本示例:1.0.0.0",
"typeLabel":"应用所属类别示例: 平台型应用",
"introduce": "应用介绍示例:这是一个示例应用",
"icon":"图标文件名示例:示例图标.png",
"images":[
"应用的图片介绍示例:示例图片1.png",
"应用的图片介绍示例:示例图片2.png"
],
"dependencies":[
"应用依赖的中间件示例:MySQL:5.7"
],
"dataSource":[
{
"databaseName":"应用初始化的数据库名示例:mydb",
"initSql":[
"应用初始化数据库用的的sql文件示例:示例.sql"
]
}
],
"deploys":[
{
"deployName":"部署步骤名示例:示例步骤1",
"depDeployName":"部署依赖步骤名示例:示例步骤2",
"fileName":"部署时用的资源文件名示例:示例.tar.gz",
"install":"部署时部署脚本文件名示例:install_示例.sh",
"uninstall":"卸载时脚本文件名示例:uninstall_示例.sh",
"services":[
{
"serviceName":"部署完成时产生的服务名示例:示例服务",
"deployPort":"服务健康检测用的到端口示例:8080",
"introduce":"服务介绍示例:这是示例服务1"
}
]
}, {
"deployName":"部署步骤名示例:示例步骤2",
"fileName":"部署时用的资源文件名示例:示例2.tar.gz",
"install":"部署时部署脚本文件名示例:install_示例2.sh",
"uninstall":"卸载时脚本文件名示例:uninstall_示例2.sh",
"services":[
{
"serviceName":"部署完成时产生的服务名示例:示例服务2",
"deployPort":"服务健康检测用的到端口示例:8081",
"introduce":"服务介绍示例:这是示例服务2"
}
]
}
]
}
在计算机中新建一个文件夹并进入到这个文件。将安装文件、安装可执行文件(主要由shell、yaml(是一个可读性高,用来表达数据序列化的格式)文件组成)放置到当前目录,并且创建名为image的文件夹将图标文件和介绍应用图片放入这个文件夹中。再创建一个名为sql的文件夹存放数据初始化的sql文件最后当前目录打包成一个 .tar.gz结尾的压缩包(一种经过tar协议归档再以gz压缩的文件)在macos系统和linux系统中可以通过执行tar -zcvf mypackage.tar.gz * 的命令打包。最后在当前目录就会获得一个可以导入货架系统的复用产品包。
在步骤S102中,通过货架上传产品包。将产品包上传到货架系统服务器运行目录下的tmp_download目录,货架系统对产品包进行解压操作,并读取里面的meta.json文件并解析文件内容。并将应用和中间件的依赖关系,通过以拓扑排序为基础的排序算法转换成应用部署的顺序,例如现在需要部署应用1、应用2、应用3、应用4,其中应用1依赖于应用2和应用3,应用2依赖于应用3,应用2和应用3又依赖于应用4。通过拓扑排序将这四个应用按照依赖度的顺序进行排序得到应用1、应用2、应用3、应用4的依赖顺序如图2所示。最后保存到货架系统的数据库中。
在步骤S103中, 货架系统中添加主机。它的内部实现是,首先用户填写目标机器的ip(IP指网际互连协议,Internet Protocol的缩写,是TCP/IP体系中的网络层协议)和ssh端口(安全的远程登录协议)以及用于认证通过的秘钥(用于免密登陆服务器的私钥)或者账号密码。通过主机连接信息货架系统将存放在服务器的货架Agent(货架系统用于执行部署任务客户端)安装包和对应安装执行文件通过scp(主要用于Linux中不同主机间复制文件和目录)命令放置到目标机器的/opt/startdt/metastack/metastack-agent目录下。并执行安装执行文件,货架Agent启动后会主动通过HTTP(超文本传输协议)或HTTPS(全称:Hyper Text Transfer Protocol over SecureSocket Layer,是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性)调用货架系统的API(Application Programming Interface,应用程序编程接口)注册自己的主机名(计算机名,)、cpu核数(CPU内核数量)、内存((Memory)是计算机的重要部件,也称内存储器和主存储器)等信息。或者货架系统通过主机发现功能,调用已经通过手动安装的货架Agent的API完成主机添加。
步骤S104中,具体为在应用中心用户可以选择应用(产品包导入货架系统生成)和它对应的版本号,下一步创建集群并选择添加完成的主机,选择需要安装应用和有依赖关系的中间件,为每个安装包选择部署在哪台主机上等配置操作后。进行环境监测。具体为货架系统调用货架Agent的API,货架Agent调用操作系统的命令, 得到接口并返回给货架系统。具体环境监测内容为:
1.安装应用目录权限是否足够;
2.端口(是英文port的意译,可以认为是设备与外界通讯交流的出口)是否存在冲突;
3.内存是否足够;
4.磁盘空间是否足够。
货架进行部署前准备包含进行域名设置:将本次部署的将会产生的服务名和已经选择的主机IP地址的映射关系写入到DNS服务((Domain Name System或者Domain NameService)域名系统或者域名服务)和hosts文件中(负责解析域名并优先于DNS服务)。再之后货架系统检查是否需要初始化数据库,如果需要将会通过JDBC(Java DataBaseConnectivity(Java语言连接数据库))链接数据库,创建数据库和用户并赋予操作改数据库的权限。并且执行sql文件导入数据。
步骤S105中,货架系统将步骤S104,S106,S107中用户部署流程中产生的数据转化拆解成部署任务(货架系统用于部署最小单位),并调用货架Agent的API将任务分发到货架Agent上。货架Agent解析部署任务内信息。通过HTTP方式下载安装包和安装执行文件,分别下载至货架Agent当前目录的download文件夹和script文件下。并且将部署任务中的其他参数信息加入当前调用安装执行文件命令的环境变量中。货架Agent执行安装执行文件进行应用的部署并将安装过程产生的日志信息写入到货架Agent的log目录下的.log文件(日志文件)中。安装执行文件结束后会返回给货架Agent执行结果,货架Agent调用货架系统的API将结果返回给货架系统,货架系统生成对应服务数据并且激活下一个部署任务执行。具体流程参见图3
具体地,步骤S105中包括以下子步骤:
S201.用户选择应用以及版本;
S202.选择集群;
S203.应用的主机选择;
S204.目标主机的环境监测;
S205.初始化网络环境和数据库;
S206.生成部署任务队列;检测是否还有未部署任务,若是,进入步骤S207,若否,进入步骤S208;
S207.分配部署任务到货架Agent;检测是否部署成功,若成功,进入步骤S206,若失败,进入步骤S209;
S208.显示部署完成;
S209.显示部署失败。
步骤S106中,该步骤出现在对服务进行的运维场景中,具体为根据服务的类型和服务要执行的运维操作(启动服务、停止服务、重启服务、卸载应用)生产环境变量参数并选择内置在货架系统的中的执行脚本。根据服务生成环境变量,提交给步骤S105。
在读取和修改配置文件,具体为货架系统调用货架Agent的API,货架Agent读取服务器本地的配置文件。货架Agent再将内容通过货架系统的API返回给用户,完成查询配置信息的操作。修改配置文件则是将修改过的配置信息调用货架API,并通过货架API写入本地文件。
步骤107中,具体为在货架系统中点击服务的升级按钮,货架系统将从数据库中查询到生成这个服务所有的应用的不同版本。用户选择版本再通过选择调整应用对应的主机数量来满足自己是需要扩容服务还是单纯升级服务的需求。首先货架系统会原先根据应用、中间件和数据库的依赖关系进行反转,让被依赖度低的应用先升级被依赖度高的后升级。首先会依次执行备份和卸载任务。货架系统会先进行原服务以及它所产生数据的备份工作,货架系统将备份的可执行文件发给货架Agent,货架Agent执行备份执行文件将服务运行的安装包以及运行中产生的数据备份到/opt/startdt/bk的目录下。再安装新版本的应用。并且在升级失败时还能够进行回滚,具体为倒序执行升级步骤,将卸载任务修改为还原任务,安装任务修改为卸载任务。首先开始卸载新安装的应用,再执行还原任务。依次执行回滚,完成回滚操作,参见图4。
此外,步骤S101中,如果用户用于安装的安装执行文件是shell脚本,那么用户需要将安装执行的安装路径,依赖服务名等信息替换成货架系统提供的变量,达到能够被货架系统所控制,并管理具体的安装步骤。这个安装包在任何有货架系统的环境下都可以通用,相比之前每个环境都有特定的安装策略通用性高了很多。
步骤S104中,目前需要运维人员整理好集群中每一台主机上安装的应用,编写每个IP和服务的对应关系,手动的修改hosts文件来达到各应用间互相调用顺畅的目的。而基于货架系统用户可以在选择安装应用的过程中完全无感知的就完成了对hosts的配置。
步骤S105中,当前做法,通过sftp(一种安全的文件传输协议)将安装包和安装执行文件传输到目标主机上。根据主机上的环境修改安装执行文件,在通过ssh执行安装执行文件进行应用安装,再重复在其他主机上安装应用,这个过程一般是不会留存部署日志。本方案中用户在货架系统通过更安全的HTTP、HTTPS数据传输协议将安装包分发到目标主机上安装应用并有日志留存,更简单、清晰并且可以查看历史安装记录。
步骤106中,各企业管理服务器时,每个运维人员的电脑要访问服务器都需要经过复杂的授权流程,其目的是防止有人在服务器上进行危险操作。货架系统将针对服务的运维操作局限在启动、停止、重启、卸载等操作上提高了人员误操作导致服务器不稳定的情况。并且在货架系统的鉴权体系下进行操作的控制会让每一项运维操作变得可控制、可追溯责任人。
步骤107中,之前的做法运维需要定位需要升级的应用在哪些主机的哪个目录下,并且要清楚知道产生的数据文件挂载(mounting是指由操作系统使一个存储设备(诸如硬盘、CD-ROM或共享资源)上的计算机文件和目录可供用户通过计算机的文件系统访问的一个过程)在哪个目录上,进行数据和安装包的备份再安装新的应用完成升级。如果中途出现升级失败,只能修复现有问题或者一台台设备将刚刚备份的操作逆向执行一遍,特别耗时耗费精力。货架系统的升级更加简单,有升级记录可以很方便回滚。
通过货架系统一个不懂得shell脚本编写、docker执行命令、docker-compose编排文件编写、k8s编排文件编写的人也可以轻松部署一套他所需要的应用软件,并且完成一系列需要专业运维才能办到的服务运维。并且耗时更短,管理更方便。第二点,在网络环境严苛不允许使用ssh方式操作服务器的时候,货架提供更加安全可靠的HTTP、HTTPS的网络数据传输手段管理服务器。
由此,本发明提供一个能够方便安装、运维应用的软件管理运维平台。
在本说明书的描述中,参考术语“实施例”、“示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。此外,本领域的技术人员可以在不产生矛盾的情况下,将本说明书中描述的不同实施例或示例以及其中的特征进行结合或组合。
上述内容虽然已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型等更新操作。
Claims (9)
1.一种基于货架系统来运行应用软件的方法,其特征在于,所述方法包括以下步骤:
步骤S101,构建产品包;
步骤S102,将产品包导入货架系统并解析具体信息;
步骤S103,添加主机;
步骤S104,选择应用,进行应用部署配置;
步骤S105,分发安装包和编排文件执行部署;
步骤S106,在货架系统的服务管理模块中对服务进行启动、停止、重启和配置文件修改的运维操作;
步骤S107,选择服务进行升级和备份;
在步骤S101中,通过数据协议规范JSON Schema定义一种描述应用安装方式的配置文件,文件名为meta.json;在计算机中新建一个文件夹并进入到这个文件;将安装文件、安装可执行文件放置到当前目录,并且创建名为image的文件夹将图标文件和介绍应用图片放入这个文件夹中;再创建一个名为sql的文件夹存放数据初始化的sql文件最后当前目录打包成一个 .tar.gz结尾的压缩包,在macos系统和linux系统中通过执行tar -zcvfmypackage.tar.gz * 的命令打包;最后在当前目录就能够获得一个可以导入货架系统的复用产品包。
2.根据权利要求1所述的一种基于货架系统来运行应用软件的方法,其特征在于,在步骤S102中,通过货架上传产品包;将产品包上传到货架系统服务器运行目录下的tmp_download目录,货架系统对产品包进行解压操作,并读取里面的meta.json文件并解析文件内容;并将应用和中间件的依赖关系,通过以拓扑排序为基础的排序算法转换成应用部署的顺序,保存到货架系统的数据库中。
3.根据权利要求2所述的一种基于货架系统来运行应用软件的方法,其特征在于,在步骤S103中,货架系统中添加主机;首先用户填写目标机器的ip和ssh端口以及用于认证通过的秘钥或者账号密码;通过主机连接信息货架系统将存放在服务器的货架Agent安装包和对应安装执行文件通过scp命令放置到目标机器的/opt/startdt/metastack/metastack-agent目录下;并执行安装执行文件,货架Agent启动后会主动通过HTTP或HTTPS调用货架系统的API信息。
4.根据权利要求3所述的一种基于货架系统来运行应用软件的方法,其特征在于,步骤S104中,在应用中心用户可以选择应用和对应的版本号,下一步创建集群并选择添加完成的主机,选择需要安装应用和有依赖关系的中间件,为每个安装包选择部署在主机上后进行环境监测。
5.根据权利要求4所述的一种基于货架系统来运行应用软件的方法,其特征在于,步骤S105中,货架系统将步骤S104 中用户部署流程中产生的数据转化拆解成部署任务,并调用货架Agent的API将任务分发到货架Agent上;货架Agent解析部署任务内信息;通过HTTP方式下载安装包和安装执行文件,分别下载至货架Agent当前目录的download文件夹和script文件下;并且将部署任务中的其他参数信息加入当前调用安装执行文件命令的环境变量中;货架Agent执行安装执行文件进行应用的部署并将安装过程产生的日志信息写入到货架Agent的log目录下的.log文件中。
6.根据权利要求5所述的一种基于货架系统来运行应用软件的方法,其特征在于,步骤S106中,读取和修改配置文件,具体为货架系统调用货架Agent的API,货架Agent读取服务器本地的配置文件;货架Agent再将内容通过货架系统的API返回给用户,完成查询配置信息的操作;修改配置文件则是将修改过的配置信息调用货架API,并通过货架API写入本地文件。
7.根据权利要求6所述的一种基于货架系统来运行应用软件的方法,其特征在于,步骤107中,在货架系统中点击服务的升级按钮,货架系统将从数据库中查询到生成这个服务所有的应用的不同版本;用户选择版本再通过选择调整应用对应的主机数量来满足自己是需要扩容服务还是单纯升级服务的需求。
8.根据权利要求7所述的一种基于货架系统来运行应用软件的方法,其特征在于,在升级失败时能够进行回滚,具体为倒序执行升级步骤,将卸载任务修改为还原任务,安装任务修改为卸载任务;首先开始卸载新安装的应用,再执行还原任务;依次执行回滚,完成回滚操作。
9.一种基于货架系统来运行应用软件的系统,其特征在于,所述系统能够实现根据权利要求1-8任一项所述的基于货架系统来运行应用软件的方法;所述货架系统是包括应用中心、服务管理模块、主机管理模块、产品包管理模块、数据库管理模块和巡检中心;应用中心是进行应用部署的功能模块,其通过quartz的任务调度和agent任务执行能力来实现;服务管理模块是管理应用部署完后在主机上的服务的模块,包含对服务的启动、停止、重启、卸载、升级的功能,其通过quartz和agent实现;主机管理模块是将目标主机纳入货架系统的管理中;产品包管理模块是将用户创建好的产品包导入、更新、管理的功能模块;数据库管理模块是针对部署安装中需要初始化数据而生产的模块,主要功能是数据库的创建、初始化数据、备份数据;巡检中心是一个能够定义巡检指标、巡检任务帮助运维人员及时发现和定位集群中出现的问题,其通过grafana和prometheus实现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211282104.7A CN115344273B (zh) | 2022-10-19 | 2022-10-19 | 一种基于货架系统来运行应用软件的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211282104.7A CN115344273B (zh) | 2022-10-19 | 2022-10-19 | 一种基于货架系统来运行应用软件的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115344273A CN115344273A (zh) | 2022-11-15 |
CN115344273B true CN115344273B (zh) | 2023-01-31 |
Family
ID=83957568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211282104.7A Active CN115344273B (zh) | 2022-10-19 | 2022-10-19 | 一种基于货架系统来运行应用软件的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115344273B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117119077B (zh) * | 2023-02-23 | 2024-07-09 | 荣耀终端有限公司 | 一种通信方法和电子设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112487340A (zh) * | 2020-12-23 | 2021-03-12 | 深圳市哈哈丫丫互联网有限公司 | 一种极速简约防盗Linux全屏浏览器的创新技术 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020124245A1 (en) * | 2000-08-14 | 2002-09-05 | Alvin Maddux | Method and apparatus for advanced software deployment |
US7496645B2 (en) * | 2001-10-18 | 2009-02-24 | Hewlett-Packard Development Company, L.P. | Deployment of business logic software and data content onto network servers |
US8769127B2 (en) * | 2006-02-10 | 2014-07-01 | Northrop Grumman Systems Corporation | Cross-domain solution (CDS) collaborate-access-browse (CAB) and assured file transfer (AFT) |
CN105306237A (zh) * | 2014-06-26 | 2016-02-03 | 中兴通讯股份有限公司 | 网管的分布式管理方法及装置 |
CN110196731B (zh) * | 2018-10-29 | 2021-05-11 | 腾讯科技(深圳)有限公司 | 一种运维系统、方法及存储介质 |
CN111782205B (zh) * | 2020-07-30 | 2024-06-11 | 杭州玳数科技有限公司 | 一种通用软件部署监控方法 |
CN112130871B (zh) * | 2020-09-27 | 2022-11-15 | 深圳平安医疗健康科技服务有限公司 | 远程部署中间件的方法、装置、计算机设备及存储介质 |
CN113791785A (zh) * | 2021-09-18 | 2021-12-14 | 大连华信计算机技术股份有限公司 | 基于混合基础设施可随处运维的可视化运维平台 |
CN113987068A (zh) * | 2021-10-09 | 2022-01-28 | 浪潮软件股份有限公司 | 基于脚本的MySQL组复制集群自动配置方法 |
-
2022
- 2022-10-19 CN CN202211282104.7A patent/CN115344273B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112487340A (zh) * | 2020-12-23 | 2021-03-12 | 深圳市哈哈丫丫互联网有限公司 | 一种极速简约防盗Linux全屏浏览器的创新技术 |
Also Published As
Publication number | Publication date |
---|---|
CN115344273A (zh) | 2022-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11907254B2 (en) | Provisioning and managing replicated data instances | |
JP7011737B2 (ja) | コネクタ開発および統合チャネル展開のためのシステムおよび方法 | |
KR101891506B1 (ko) | 하나 이상의 클라우드 시스템 상에 애플리케이션들을 이식 가능하게 배치하기 위한 방법들 및 시스템들 | |
US9760358B2 (en) | System and method for test to production support in a cloud platform environment | |
RU2417416C2 (ru) | Развертывание решений в ферме серверов | |
US6202207B1 (en) | Method and a mechanism for synchronized updating of interoperating software | |
US7684964B2 (en) | Model and system state synchronization | |
JP5628894B2 (ja) | 関係データ管理のための制御サービス | |
JP5364850B2 (ja) | データ環境のためのセルフサービス構成 | |
US20040205179A1 (en) | Integrating design, deployment, and management phases for systems | |
EP1267518A2 (en) | Multiple device management method and system | |
US20040088397A1 (en) | System and method for management of software applications | |
JP7231518B2 (ja) | パッケージ化支援システムおよびパッケージ化支援方法 | |
CN113434158B (zh) | 一种大数据组件的自定义管理方法、装置、设备及介质 | |
GB2333865A (en) | Synchronised updating of interoperating software | |
CN111538590A (zh) | 一种基于cs架构的分布式数据采集方法及系统 | |
CN115344273B (zh) | 一种基于货架系统来运行应用软件的方法及系统 | |
Cisco | Installation and Licensing | |
Scott | Differences in Database Containers | |
CN117785266B (zh) | 应用程序的自动发布方法、调度服务器及低代码平台 | |
Gianola | Exploring the OCSF Framework in AWS: Design, Implementation and Performance Analysis of a Security Lake Platform | |
WO2010039993A2 (en) | Automation for virtualized it environments | |
Allison et al. | Oracle Real Application Clusters Installation Guide, 11g Release 1 (11.1) for Microsoft Windows B28251-06 | |
Allison et al. | Oracle Real Application Clusters Installation Guide, 11g Release 1 (11.1) for Microsoft Windows B28251-05 | |
Metzig | Elasticity Concept for a Microservice-based System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |