一种云计算环境下优化部署资源与软件交付平台的制作方法

文档序号:19878335发布日期:2020-02-08 06:41阅读:129来源:国知局
一种云计算环境下优化部署资源与软件交付平台的制作方法

本发明涉及软件交付平台,具体为一种云计算环境下优化部署资源与软件交付平台。



背景技术:

随着云计算技术的日益稳健与成熟,云计算技术是最近几年来it产业发展的新热点,受到各方的广泛关注;云计算的概念已经从提出到现在已经有好几年了,很多技术领先的企业已经采用了虚拟化技术为用户提供大量的虚拟的计算资源和存储资源;在计算机虚拟化技术的推动下,云计算中包括虚拟机在内的计算资源急剧增加,通常需要大量的计算资源上动态的部署软件,以构建不同计算环境满足用户不断变化的需求。

传统的资源划分方法大多以虚拟机与业务整合后进行资源分配,随着业务的扩展需要投入的计算资源越来越多,同时虚拟机数量也越来越多,人员维护成本增加,软件交付成本急剧上升。传统依靠运维工程师向线上交付软件已不现实,效率太低,且出错率及其高,耗费大量人力,软件交付版本不易于控制。出现问题无法跟踪和追溯。



技术实现要素:

本发明的目的在于提供一种云计算环境下优化部署资源与软件交付平台,以解决上述背景技术中提出的问题。

为实现上述目的,本发明提供如下技术方案:一种云计算环境下优化部署资源与软件交付平台包括:服务端server和工作端worker,其中服务端server负责调用开发软件api,同时下发软件交付指令与监控指令给工作端worker;在服务端server部署有apiservice、dockermavenplugin、gitlab、jenkins、grafana、prometheus、harbor、haproxy、kubernetes、keepalived、数据库存储模块database。

其中apiservice提供配置服务:包括自动化测试、二进制包应用构建、镜像创建并上传至harbor、kubernetes下载镜像、触发部署等工作,并接受来自工作端worker反馈的交付成果,将过程记录到数据库中,交付完成后进入7*24监控流程;

其中dockermavenplugin为开源工具插件,用于dockerfile自动生成以及自动化制作docker镜像。在持续交付过程中,系统一般使用dockermavenplugin编辑打包,并生成镜像,推送到镜像仓库harbor。

其中gitlab为源代码日常管理与存储代码的仓库,是一个用于仓库管理系统的开源项目,是一个分布式版本控制软件。进一步的,所述gitlab以group为单位,下分多个仓库。

其中jenkins负责job任务构建与shell脚本执行,通过dockermavenplugin上传基础镜像或业务镜像至镜像仓库harbor同时自动更新镜像到在kubernetes中运行。

其中grafana、prometheus为开源工具,用于容器环境与部署资源监控。

其中prometheus用于收集和存储时间序列数据,为需要监控的服务生成相应的指标并对外暴露,接收指标数据,发出告警。prometheus自带的ui界面功能较少,可视化展示的功能不完善,不能满足日常的监控所需,因此常常我们需要再结合prometheus+grafana的方式来进行可视化的数据展示。

grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将prometheus采集的数据查询然后可视化的展示,可视化地为最重要的指标定制化报警规则,并及时通知。

其中harbor为镜像仓库用于存储基础镜像与各业务镜像。harbor是一个用于存储和分发docker镜像的企业级仓库服务器,作为一个企业级私有仓库服务器,harbor提供了更好的性能和安全。提升用户使用仓库构建和运行环境传输镜像的效率。harbor支持安装在多个仓库节点的镜像资源复制,镜像全部保存在私有仓库中,确保数据和业务镜像在内部网络中管控。

其中haproxy是一个使用c语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于tcp和http的应用程序代理。haproxy结合keepalived用于kubernetes主节点访问的负载均衡和高可用。

kubernetes是google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。使用kubernetes进行容器管理,为容器化的应用提供部署运行,资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。

其中keepalived用于结合haproxy做harbor高可用负载均衡,keepalived的作用是检测服务器的状态,如果有一台harbor服务器宕机,或工作出现故障,keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

其中database负责存储资源分配与管理日志,包括二进制软件包位置、制作镜像制作过程等变更内容和变更时间等信息。

其中工作端worker,负责接收服务端server的指令,使用开源工具将镜像制作完成后推送到开源工具harbor中,kubernetes集群通过拉取最新业务镜像将其部署至集群中。

本发明还公开了一种云计算环境下优化部署资源与软件交付平台的自动化交付的方法,具体步骤包括如下:

步骤一、搭建服务端server,部署apiservice、dockermavenplugin、gitlab、jenkins、grafana、prometheus、harbor、haproxy、kubernetes、keepalived、数据库存储模块database;

步骤二、apiservice根据需求创建并集成对应项目持续交付jenkins的job任务;

步骤三、搭建工作端worker、部署工作端worker;

步骤四、用户按照配置的格式将项目对应的gitlab仓库地址的链接添加到配置中,并自动配置jenkins中的job任务,如果job任务运行,jenkins会选择对应节点的job任务进行构建,执行对应的shell脚本,进行自动化测试、应用构建、业务镜像的制作并推送到镜像仓库harbor、更新业务的配置文件将镜像更新至容器云中,同时将项目对应的配置信息保存到数据库database中;完成构建后将日志记录并将服务加到监控中;

步骤五、apiservice接收到工作端的的构建结果后,记录构建日志到数据库database中。

进一步的,在所述步骤四中,更新完成后prometheus负责日志记录与收集与监控,grafana负责将prometheus收集相关指标的数据进行图形化展示。

所述云计算环境下优化部署资源与软件交付平台的工作流程为:

通过配置apiservice后自动生成jenkins的job任务,根据需求配置并触发job任务,此时工作端worker接收服务端server指令将gitlab中的案件自动检测系统源代码拉取并通过自动化测试、二进制包应用构建,并通过dockermavenplugin开源软件插件创建镜像并上传至镜像仓库harbor中,然后自动执行shell脚本,并自动化完成kubernetes业务镜像的更新。更新完成后prometheus自动检测到业务镜像以及运行情况将指标数据存储到数据库中,grafana通过读取prometheus提供的指标数据通过图形模板自动在grafana中充分展示。

与现有技术相比,本发明的有益效果是:解决云计算环境下提高资源使用率,简化配置;降低it成本支出、降低运维人员投入,实现业务持续交付多、快、好、省、稳。目前现状是业务不能快速的横向扩展,需要创建虚拟机,然后部署程序和代码,才能对外提供服务;虚拟机出现故障后无法自治愈,依赖于负载实现高可用;解决方案:使用容器替代虚拟机,实现业务代码与容器镜像一体化,达到可以在任何宿主机快速启动不同业务容器目的,快速实现业务横向扩展。使用kubernetes进行容器管理,在docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器管理的便捷性。

附图说明

图1为本发明的结构示意图;

图2为本发明的自动化交付方法流程图。

具体实施方式

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

实施例:

一种云计算环境下优化部署资源与软件交付平台包括:服务端server和工作端worker,其中服务端server负责调用开发软件api,同时下发软件交付指令与监控指令给工作端worker;在服务端server部署有apiservice、dockermavenplugin、gitlab、jenkins、grafana、prometheus、harbor、haproxy、kubernetes、keepalived、数据库存储模块database。

其中apiservice提供配置服务:包括自动化测试、二进制包应用构建、镜像创建并上传至harbor、kubernetes下载镜像、触发部署等工作,并接受来自工作端worker反馈的交付成果,将过程记录到数据库中,交付完成后进入7*24监控流程;

其中dockermavenplugin为开源工具插件,用于dockerfile自动生成以及自动化制作docker镜像。在持续交付过程中,系统一般使用dockermavenplugin编辑打包,并生成镜像,推送到镜像仓库harbor。

其中gitlab为源代码日常管理与存储代码的仓库,是一个用于仓库管理系统的开源项目,是一个分布式版本控制软件。进一步的,所述gitlab以group为单位,下分多个仓库。

其中jenkins负责job任务构建与shell脚本执行,通过dockermavenplugin上传基础镜像或业务镜像至镜像仓库harbor同时自动更新镜像到在kubernetes中运行。

其中grafana、prometheus为开源工具,用于容器环境与部署资源监控。

其中prometheus用于收集和存储时间序列数据,为需要监控的服务生成相应的指标并对外暴露,接收指标数据,发出告警。prometheus自带的ui界面功能较少,可视化展示的功能不完善,不能满足日常的监控所需,因此常常我们需要再结合prometheus+grafana的方式来进行可视化的数据展示。

grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将prometheus采集的数据查询然后可视化的展示,可视化地为最重要的指标定制化报警规则,并及时通知。

其中harbor为镜像仓库用于存储基础镜像与各业务镜像。harbor是一个用于存储和分发docker镜像的企业级仓库服务器,作为一个企业级私有仓库服务器,harbor提供了更好的性能和安全。提升用户使用仓库构建和运行环境传输镜像的效率。harbor支持安装在多个仓库节点的镜像资源复制,镜像全部保存在私有仓库中,确保数据和业务镜像在内部网络中管控。

其中haproxy是一个使用c语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于tcp和http的应用程序代理。haproxy结合keepalived用于kubernetes主节点访问的负载均衡和高可用。

kubernetes是google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。使用kubernetes进行容器管理,为容器化的应用提供部署运行,资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。

其中keepalived用于结合haproxy做harbor高可用负载均衡,keepalived的作用是检测服务器的状态,如果有一台harbor服务器宕机,或工作出现故障,keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

其中database负责存储资源分配与管理日志,包括二进制软件包位置、制作镜像制作过程等变更内容和变更时间等信息。

其中工作端worker,负责接收服务端server的指令,使用开源工具将镜像制作完成后推送到开源工具harbor中,kubernetes集群通过拉取最新业务镜像将其部署至集群中。

所述云计算环境下优化部署资源与软件交付平台的工作流程为:

通过配置apiservice后自动生成jenkins的job任务,根据需求配置并触发job任务,此时工作端worker接收服务端server指令将gitlab中的案件自动检测系统源代码拉取并通过自动化测试、二进制包应用构建,并通过dockermavenplugin开源软件插件创建镜像并上传至镜像仓库harbor中,然后自动执行shell脚本,并自动化完成kubernetes业务镜像的更新。更新完成后prometheus自动检测到业务镜像以及运行情况将指标数据存储到数据库中,grafana通过读取prometheus提供的指标数据通过图形模板自动在grafana中充分展示。

一种云计算环境下优化部署资源与软件交付平台的自动化交付的方法,具体步骤包括如下:

步骤一、搭建服务端server,部署apiservice、dockermavenplugin、gitlab、jenkins、grafana、prometheus、harbor、haproxy、kubernetes、keepalived、数据库存储模块database;

步骤二、apiservice根据需求创建并集成对应项目持续交付jenkins的job任务;

步骤三、搭建工作端worker、部署工作端worker;

步骤四、用户按照配置的格式将项目对应的gitlab仓库地址的链接添加到配置中,并自动配置jenkins中的job任务,如果job任务运行,jenkins会选择对应节点的job任务进行构建,执行对应的shell脚本,进行自动化测试、应用构建、业务镜像的制作并推送到镜像仓库harbor、更新业务的配置文件将镜像更新至容器云中,同时将项目对应的配置信息保存到数据库database中;更新完成后prometheus负责日志记录与收集与监控,grafana负责将prometheus收集相关指标的数据进行图形化展示;

步骤五、apiservice接收到工作端的的构建结果后,记录构建日志到数据库database中。

实际应用效果对比:

采用本实施了所述的云计算环境下优化部署资源与软件交付平台用于处理保险理赔风控企业的资源划分业务,并与现有的案件自动检测系统进行对比,结果显示:

现有的案件自动检测系统需要人工进行功能测试、性能测试、冒烟测试等测试工作,并且需要通过人工创建虚拟机形式进行部署上线,业务不能快速横向扩展,需要创建虚拟机,然后部署程序代码,才能对外提供服务,耗时费力。且虚拟机故障无法自治愈,依赖于负载实现高可用。运维人力成本高,且耗时费力,容易出错。

而本申请所述方法和平台使用容器替代虚拟机,实现案件自动检测系统代码与容器镜像一体化,达到可以在任何宿主机快速启动容器的目的,快速实现案件自动检测系统的横向扩展。同比提高100%左右的效率,节省至少70%的横向扩展基础设施准备的时间。同时将现有资源利用最大化,资源自动回收。使用kubernetes进行容器管理,在容器技术的基础上,为容器化的案件自动检测系统及其辅助功能模块提供部署运行、资源调度、服务发现和动态伸缩等一系列功能,提高了大规模容器集群管理的便捷性。动态灵活伸缩同比运维干预更节省时间成本(不需要另外去准备虚拟机部署代码)、人力成本(不需要运维干预,自动伸缩扩容)、资源成本(创建虚拟机不利于资源回收使用)。目前一个节点提交大概在10s至15s左右,同比运维手动干预部署代码至虚拟机,部署1个节点至少需要3-5分钟暨180s,效率提升效果显著。

尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

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