一种开发运维方法、装置及云计算PaaS平台与流程

文档序号:11199044阅读:275来源:国知局
一种开发运维方法、装置及云计算PaaS平台与流程

本发明涉及通信及计算机技术领域,特别是指一种开发运维方法、装置及云计算paas平台。



背景技术:

互联网技术尤其是移动互联网技术的发展极大地推动了整个电信行业的发展。然而,随着用户数量的增长,电信相关支撑服务激增以及彼此之间的依赖关系变得更加复杂,应用服务的部署以及运行面临更大挑战。

传统的应用部署方式主要包括专属物理机、虚拟机和分布式集群三种方式。专属物理机就是把应用直接部署在一台物理机上,这种方式可以获得较高的应用性能,但是不利于应用之间的资源隔离;虚拟机是随着虚拟化技术的发展而产生的,将一台物理机虚拟出多台虚拟机、每台虚拟机上部署一个应用,这种方式的优势在于在较充分利用物理机资源的同时实现了应用之间的资源隔离,但是如果虚机上同时部署多个应用,无法实现多个应用之间的资源隔离,且分配虚机资源时需要消耗分钟级时间,运维效率较低;分布式集群的出现诞生于互联网技术的蓬勃发展,当应用访问量激增,专属物理机和虚拟机的部署方式受限于单台物理机的性能,因而出现了分布式集群的部署方式。然而,受限于自动化水平,分布式集群中多节点多实例的运维难度高、运维工作量大、人为误操作风险高。

云计算paas平台的出现使大规模应用的部署自动化水平得到极大提高,然而现有的公有云paas平台虽然符合大部分互联网产品的需求,但是电信领域诸如话费清算、统一支付等有其自身业务特点,不适合使用公有云。

综上可知,现有符合电信领域业务特点的paas平台,存在如下问题:

1、运维的简便性得不到满足,在大规模部署、启停、故障检查和处理时,仍需要借助辅助工具来处理;

2、应用的可靠性得不到保障,应用实例出现故障时,无法及时高效的进行故障迁移,同时各应用实例的资源无法真正实现隔离;

3、开发、运维的效率低,开发提交的代码到运维人员部署时需要修改配置、搭建环境后才能部署,开发、运维低效,且之间存在壁垒。



技术实现要素:

本发明的目的在于提供一种开发运维方法、装置及云计算paas平台,解决现有技术中paas平台运维效率低的问题。

为了解决上述技术问题,本发明实施例提供一种开发运维方法,包括:

设定基础镜像为初始环境;

接收预设环境变量的配置信息;

根据所述初始环境和所述配置信息生成目标环境;

根据程序包和所述目标环境生成目标镜像;

其中,所述基础镜像包括程序所需基础配置和依赖库。

可选地,所述预设环境变量包括测试环境变量和运维环境变量。

可选地,在所述设定基础镜像为初始环境之前,所述开发运维方法还包括:

获取用户输入的环境配置信息;

根据所述环境配置信息生成所述基础镜像。

可选地,所述开发运维方法还包括:

在运行的实施例数减少时,获取减少原因;

根据所述减少原因执行对应的副本维持操作。

可选地,所述根据所述减少原因执行对应的副本维持操作包括:

在所述减少原因为进程级别的原因时,利用本地镜像重新启动一个容器。

可选地,所述根据所述减少原因执行对应的副本维持操作包括:

在所述减少原因为应用级别的原因时,重新建立对应的副本。

可选地,所述开发运维方法还包括:

实时维护各个宿主机的运行状态;

若有一个宿主机的运行状态指示该宿主机出现问题,则将该宿主机上的所有实施例转移至其他没有出现问题的宿主机上。

可选地,所述开发运维方法还包括:

接收应用一键式部署、启停或重起的触发信息;

根据所述触发信息执行对应操作。

可选地,若所述触发信息为一键式启动或重启的触发信息,则在所述根据所述触发信息执行对应操作之后,所述开发运维方法还包括:

实时获取启动的应用下的各个实施例的启停状态;

将所述启停状态告知用户。

本发明还提供了一种开发运维装置,包括:

设定模块,用于设定基础镜像为初始环境;

第一接收模块,用于接收预设环境变量的配置信息;

第一生成模块,用于根据所述初始环境和所述配置信息生成目标环境;

第二生成模块,用于根据程序包和所述目标环境生成目标镜像;

其中,所述基础镜像包括程序所需基础配置和依赖库。

本发明还提供了一种云计算paas平台,包括:上述的开发运维装置。

本发明的上述技术方案的有益效果如下:

上述方案中,所述开发运维方法通过把基础镜像作为程序的运行环境(把基础镜像设定为初始环境),程序所需基础配置和依赖库放入基础镜像中;(使用不可变的基础镜像)保证了运行环境在开发、测试和运维中的一致性,并且把测试和运维需要的配置信息提取成环境变量进行配置,从而开发人员提交的代码,测试和运维人员不须要经过任何修改即可进行部署,大大提高了开发、运维效率。

附图说明

图1为本发明实施例一的开发运维方法流程示意图;

图2为本发明实施例二的开发运维装置结构示意图;

图3为本发明实施例三的paas平台整体结构示意图;

图4为本发明实施例三的控制中心功能结构示意图;

图5为本发明实施例三的资源管理中心功能结构示意图;

图6为本发明实施例三的服务器发现原理示意图;

图7为本发明实施例三的paas平台操作前台界面示意图;

图8为本发明实施例三的基于docker自动化部署示意图;

图9为本发明实施例三的一键式启停界面示意图;

图10为本发明实施例三的日志管理界面示意图;

图11为本发明实施例三的devops方案流程示意图;

图12为本发明实施例三的paas平台使用流程示意图。

具体实施方式

为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。

本发明针对现有的技术中paas平台运维效率低的问题,提供了多种解决方案,具体如下:

实施例一

如图1所示,本发明实施例一提供的开发运维方法包括:

步骤11:设定基础镜像为初始环境;

步骤12:接收预设环境变量的配置信息;

步骤13:根据所述初始环境和所述配置信息生成目标环境;

步骤14:根据程序包和所述目标环境生成目标镜像;

其中,所述基础镜像包括程序所需基础配置和依赖库。

本发明实施例一提供的所述开发运维方法通过把基础镜像作为程序的运行环境(把基础镜像设定为初始环境),程序所需基础配置和依赖库放入基础镜像中;(使用不可变的基础镜像)保证了运行环境在开发、测试和运维中的一致性,并且把测试和运维需要的配置信息提取成环境变量进行配置,从而开发人员提交的代码,测试和运维人员不须要经过任何修改即可进行部署,大大提高了开发、运维效率。

其中,所述预设环境变量可包括测试环境变量和运维环境变量。

为了保证信息的安全性和使用方便性,可将基础镜像和目标镜像放置于镜像仓库。

具体的,在所述设定基础镜像为初始环境之前,所述开发运维方法还包括: 获取用户输入的环境配置信息;根据所述环境配置信息生成所述基础镜像。

另,本发明中可利用容器技术生成基础镜像,也就是,采用容器技术,在开发阶段就将所有环境的依赖包制作在一个容器镜像文件内;这个镜像文件在测试、运维阶段都可以使用,它屏蔽了各种环境的差异,使得各个环境能够做到统一管理,简化应用因环境差异导致的各种工作,大大提升的开发、测试和运维人员的工作效率。

为了保证副本维持,所述开发运维方法还包括:在运行的实施例数减少时,获取减少原因;根据所述减少原因执行对应的副本维持操作。

具体的,所述根据所述减少原因执行对应的副本维持操作包括:在所述减少原因为进程级别的原因时,利用本地镜像重新启动一个容器;

在所述减少原因为应用级别的原因时,重新建立对应的副本。

也可以说是,副本维持分为进程级别和应用级别两个层次。进程是指程序进程,应用是指与程序对应的应用。

其中,进程级别是指由于程序原因,或外界原因导致进程退出时,该应用的容器也会自动退出。当node发现容器不在时,又用镜像重新起一个容器。

应用级别是指由于系统故障或人为操作删除了某个应用的实例,master很快会扫描到,并重建副本。为了保障故障迁移的及时性,所述开发运维方法还包括:实时维护各个宿主机的运行状态;若有一个宿主机的运行状态指示该宿主机出现问题,则将该宿主机上的所有实例转移至其他没有出现问题的宿主机上。

也就是,当节点发生宕机或其它异常导致无法工作时,系统为应用重新分配资源。具体为:主节点master对从节点node进行实时健康检查,master每隔5秒向node发送查询请求,正常情况下,node会返回ok。master将node的状态设为ready。如果没有收到某个node的返回,master将该node记为unready。

接下来的5分钟master会重复上面的过程,如果5分钟内收到了该node返回的ok。master则将此node设为ready,并开始恢复该node上的应用。如果5分钟后依然没有收到该node的返回,master开始执行迁移,将该node上的应用分配至其它node,分配的策略同创建应用时的调度策略。

为了满足运维的简便性需求,所述开发运维方法还包括:接收应用一键式部署、启停或重起的触发信息;根据所述触发信息执行对应操作。

为了方便用户及时准确地处理故障,本实施例中,若所述触发信息为一键式启动或重启的触发信息,则在所述根据所述触发信息执行对应操作之后,所述开发运维方法还包括:实时获取启动的应用下的各个实施例的启停状态;将所述启停状态告知用户。

实施例二

如图2所示,本发明实施例二提供的开发运维装置包括:

设定模块21,用于设定基础镜像为初始环境;

第一接收模块22,用于接收预设环境变量的配置信息;

第一生成模块23,用于根据所述初始环境和所述配置信息生成目标环境;

第二生成模块24,用于根据程序包和所述目标环境生成目标镜像;

其中,所述基础镜像包括程序所需基础配置和依赖库。

本发明实施例二提供的所述开发运维装置通过把基础镜像作为程序的运行环境(把基础镜像设定为初始环境),程序所需基础配置和依赖库放入基础镜像中;(使用不可变的基础镜像)保证了运行环境在开发、测试和运维中的一致性,并且把测试和运维需要的配置信息提取成环境变量进行配置,从而开发人员提交的代码,测试和运维人员不须要经过任何修改即可进行部署,大大提高了开发、运维效率。

其中,所述预设环境变量可包括测试环境变量和运维环境变量。

具体的所述开发运维装置还包括:第一获取模块,用于所述设定模块执行操作之前,获取用户输入的环境配置信息;第三生成模块,用于根据所述环境配置信息生成所述基础镜像。

为了保证副本维持,所述开发运维装置还包括:第二获取模块,用于在运行的实施例数减少时,获取减少原因;第一执行模块,用于根据所述减少原因执行对应的副本维持操作。

具体的,所述执行模块包括:处理子模块,用于在所述减少原因为进程级别的原因时,利用本地镜像重新启动一个容器;

重建子模块,用于在所述减少原因为应用级别的原因时,重新建立对应的副本。

为了保障故障迁移的及时性,所述开发运维装置还包括:

处理模块,用于实时维护各个宿主机的运行状态;

转移模块,用于若有一个宿主机的运行状态指示该宿主机出现问题,则将该宿主机上的所有实施例转移至其他没有出现问题的宿主机上。

为了满足运维的简便性需求,所述开发运维装置还包括:

第二接收模块,用于接收应用一键式部署、启停或重起的触发信息;

第二执行模块,用于根据所述触发信息执行对应操作。

为了方便用户及时准确地处理故障,本实施例中,所述开发运维装置还包括:第三获取模块,用于若所述触发信息为一键式启动或重启的触发信息,在所述第二执行模块执行操作之后,实时获取启动的应用下的各个实施例的启停状态;告知模块,用于将所述启停状态告知用户。

其中,上述开发运维方法的所述实现实施例均适用于该开发运维装置的实施例中,也能达到相同的技术效果。

实施例三

为了解决上述技术问题,本发明实施例三还提供了一种云计算paas平台,包括:上述的开发运维装置。

下面对本发明实施例三提供的云计算paas平台进行举例说明。

本发明实施例三可提供一种基于容器技术docker(开源的应用容器引擎)的paas平台。

paas平台主要由四部分组成:前台、控制中心、资源管理中心和容器节点组成。

前台:作为人机交互界面,提供系统管理、应用管理、镜像管理、版本管理和日志管理等功能。

控制中心:命令枢纽中心,负责版本控制、镜像管理和运行控制等功能。

资源管理中心:负责资源的生命周期管理、应用副本管理、应用的负载均衡和故障转移failover等功能。

容器节点:以资源隔离的方式部署在docker容器中的每个应用为一个节点,负责实现具体应用的业务功能。

具体如图3所示,下面对其中的每个模块做详细介绍:

一、前台

实现的功能包括:

系统管理:提供用户的注册、注销和授权管理等功能。

应用管理:提供应用和应用实例的增删改查、启停、信号发送、配置管理和应用日志的查看和下载等功能;

版本管理:提供应用的版本维护、新旧版本切换等功能。

镜像管理:提供基础镜像的录入、修改、删除和查询功能。

日志管理:管理所有用户的操作日志记录和查询。

二、控制中心

控制中心是整个系统的命令枢纽,对上接收前台发送的用户请求,对下向资源管理中心的发送操作命令。它的主要功能包括版本控制、镜像管理和应用的运行控制。

如图4所示的控制中心功能结构,其中:

1、版本控制

paas平台接收用户的原始程序包,并且对每次上传的程序包进行版本控制。在系统中,有程序包仓库和镜像仓库,且程序包版本和应用镜像是一一对应的。

版本控制流程如下:

用户上传程序包,版本管理接收并生成一个唯一的版本号,对应一个唯一的程序包仓库目录;

镜像管理对该程序包打镜像操作完成后,镜像仓库中该应用镜像名字唯一对应该程序包版本;

对程序版本的操作同步该应用镜像。

2、镜像管理

镜像管理包括基础镜像管理和应用镜像管理,基础镜像管理对用户常用的基础镜像进行增删改查;应用镜像管理则负责对应用程序打镜像,打镜像处理如下:

镜像管理接收到打应用镜像的请求,请求信息包括程序包目录和基础镜像,验证信息的有效性,检查目标程序包是否存在,基础镜像是否合法;

在本地创建临时目录,目标程序包移至该目录;

自动生成dockerfile文件;

使用dockerfile文件打应用镜像;

将应用镜像push到镜像仓库。

3、运行控制

运行控制管理应用的启动、停止、发送信号操作:

(1)启动应用

应用管理接收到启动应用的请求,调用模板管理;

模板管理从数据库读取应用数据,生成应用模板,该模板中存储应用的运行控制信息,包括期望运行的副本数、运行需要的资源、容器环境变量等信息,模板是控制中心和资源管理中心的通信协议;

模板生成后,应用管理模块调用资源管理中心,启动应用,资源管理中心根据模板信息调度资源。

(2)停止应用

应用管理接收到停止应用的请求,直接调用资源管理中心删除运行模板和所有运行实例。

(3)发送信号

应用管理中心接收到发送信号的请求,会首先获取该应用的所有运行实例,对所有运行实例批量发送运行信号。

三、资源管理中心

资源管理中心是整个系统的资源管理中心,它负责管理所有的容器节点,提供rest接口供控制中心使用。其主要功能包括:资源调度、部署运行、服务发现、扩容缩容。

如图5所示的资源管理中心,其在部署上分为两个角色,分别为主节点master和从节点node。其中master为管理模块,整个系统只有一个。node即为容器节点,是应用具体运行的地方,一个master对应多个node。

实现的功能包括:

资源调度

资源调度是资源管理中心的核心内容,其涉及到两方面的调度:

1.创建应用时为应用分配资源。

下面是创建应用的过程:

master收到创建应用的请求。这些请求可能来自命令行,也可能来自rest接口。但最终都会由api接口服务组件apiserver来处理。

master开始创建副本,这是一个逻辑的过程,仅在内部处理。

为每一个副本选择一个node。这里由编排schedule模块来处理,其策略是空闲的节点优先,如果两个节点的空闲值一样,就按node列表的顺序来分派。

选择node后,开始创建应用控制模块,然后向node发送创建应用请求。

2.当节点发生宕机或其它异常导致无法工作时,系统为应用重新分配资源。

master对node进行实时健康检查。其工作过程描述如下:

master每隔5秒向node发送查询请求,正常情况下,node会返回ok。master将node的状态设为ready。

如果没有收到某个node的返回,master将该node记为unready。

接下来的5分钟master会重复上面的过程,如果5分钟内收到了该node返回的ok。master则将此node设为ready,并开始恢复该node上的应用。

如果5分钟后依然没有收到该node的返回,master开始执行迁移,将该node上的应用分配至其它node,分配的策略同创建应用时的调度策略。

副本维持

副本维持功能是一个很重要的运维功能,在传统的运维场景里,为了保证应用以固定的实例数来运行,必须额外部署一个监控程序,每隔几秒扫描一次进程,将退出的进程重新启动。

采用paas平台后,完全不用担心这个问题,平台天然具备这样的功能。

副本维持分为两个层次:

(1)进程级别

进程级别是指由于程序原因,或外界原因导致进程退出时,该应用的容器也会自动退出。当node发现容器不在时,又用镜像重新起一个容器。

(2)应用级别

应用级别是指由于系统故障或人为操作删除了某个应用的实例,master很快会扫描到,并重建副本。

部署运行

分配资源后,资源管理中心负责将应用部署至容器中心,其负责调用容器 节点的rest接口。

服务发现

在容器节点里运行的服务,其ip是由系统随机分配的,并且通过资源调度,其ip是可能随时变化的。如果服务是类似web服务tomcat的服务,需要提供ip地址供外部访问,就会面临许多麻烦。

为了解决这个问题,本发明引入了service机制,即服务发现。服务发现的原理可以用图6描述:

1.容器里的ip属于内部ip,外面是无法直接访问的。

2.首先选取某一台node的ip作为service的ip。例如我们选取node1的ip,而应用部署在node2上。

3.当用户访问tomcat时,代理服务器proxy将访问请求发送给tomcat。

4.在默认情况下,node1也是无法访问node2上的内部ip的,此时需要做以下事情:

给node1和node2上的ip分段,例如node1的内部ip为172.16.1.0/24,node2的内部ip为172.16.2.0/24。

在node1上设置路由,将所有172.16.2.0/24的访问请求发送给node2。

在node2上设置路由,将所有172.16.1.0/24的访问请求发送给node1。

5.通过设置路由,proxy成功将tomcat的访问请求发送给node2上的tomcat。

6.service与应用一一对应,这样即使应用迁移至其它node,proxy同样能找到。应用也可以是多实例,当tomcat有多实例时,proxy通过轮询的方式来访问。

扩容缩容

所有的节点都无状态,能够支持在线扩容,缩容。

扩容时,master将一个新的node加入系统,此时并不会因为负载均衡将其它node的应用迁移至新加入的node。只有运维人员通过前台界面新建应用或增加应用实例时,需要进行资源调度,此时应用会优先选择新建的node。

缩容时,可以直接将节点从系统中移除,此时会触发资源调度的重分配功能,等迁移完成,将该node从master的node列表中删除即可。

四、容器节点

容器节点的主要功能是使用了容器技术,其上运行的应用由资源管理中心来调度。在调度前,控制中心将应用及运行环境打包成容器。其后的所有操作都基于容器,容器具有轻量,快速等特点。

其主要功能包括:

资源隔离

容器采用的是基于cgroup(controlgroups,linux内核提供的一种可以限制、记录、隔离进程组所使用的物理资源的机制,如:cpu、memory、io等等)的轻量级的虚拟化技术。通过lxc(linuxcontainer)我们可以对容器的资源进行以下的限制:

cpu:cgroup不能像其它虚拟化方案一样提供定义cpu的能力,它能定义cpu的优先级,可以对应用设置一个相对的权重。

cpu设置cpusets:定义哪几个cpu可以被容器使用,这是限制cpu的一种很好的方式。

内存memery:可以限制内存的大小。

采用资源隔离后,用户可以很好的对应用的资源进行限制,防止因部分应用消耗资源过大而对其它应用造成影响。

标准化容器

采用容器技术的另一大优势就是能制作标准化的容器。在日常开发过程中,环境问题一直是困扰开发人员和测试人员的一大难题。后台服务,特别是c++程序,往往会依赖一大堆组件,这些组件都有各自的版本。当应用从开发人员提交到测试人员手中时,测试人员需要重新搭建这些环境,并且经常会因为版本或配置的问题造成应用运行异常。

采用容器技术后,这些问题得到了很好的解决。容器技术是一个轻量化的虚拟化技术,想让应用在容器里运行起来,需要通过以下几个步骤:

1)准备一个基础镜像,可以是任意linux发行版,一般可以通过社区去下载。

2)通过基础镜像启动一个容器。容器运行起来与linux无异,可以在上面进行linux相关的所有操作。

3)在容器里安装应用依赖的组件,包括修改配置文件。

4)将应用也安装在容器里,确保应用能正常运行。

5)将此容器重新提交为一个新的镜像。

新的镜像可以在集群的任意主机上运行,用户无需再担心环境,配置等问题。

其实,paas平台四个模块设计,不仅实现了分布式环境中应用实例的资源隔离和副本维持,还实现了对应用的一键式智能运维、故障迁移及高效devops(英文development和operations的组合,是一组过程、方法与系统的统称,用于促进开发应用程序/软件工程、技术运营和质量保障qa部门之间的沟通、协作与整合)机制,详细介绍如下:

提供可视的paas操作前台界面,在分布式环境中实现应用的一键式智能运维。其中,简洁清晰的可视paas操作界面,如图7所示。

主要分三部分介绍:

1.基于docker镜像技术,实现集群环境应用的自动化部署,如图8所示。

当用户在paas前台触发一键部署,控制中心从svn(是subversion的简称,是一个开放源代码的版本控制系统)下载程序包(用户也可以在前台页面上传程序包),并且从基础镜像库拉取基础镜像进行目标镜像制作,制作以后的应用镜像会写入镜像仓库,控制中心根据前台页面用户配置的配置信息进行资源调度,集群节点会从应用镜像库拉取镜像、启动,从而完成一键部署。

因此用户只需在前台进行一键式应用部署操作,paas平台即可实现应用的全程自动化部署,从而简化运维操作,提升运维效率。

2.支持应用和应用集群的一键启停、一键重启,且支持对单个实例的重启,如图9所示。

当用户在paas前台触发应用的一键式启动、停止和重启操作,前台即刻与控制中心建立长连接,控制中心将以watch的机制监控资源管理中心,实时获取该应用下各个应用实例的启停状态,例如正在调度应用资源,正在启动应用,启动的应用实例个数、启动成功或者失败等等;使得用户能够实时获知应用的启动情况,对出现的错误能够实时获知原因并进行处理,提升运维和管理能力。

3.对应用日志进行归集,支持应用运行日志的在线查看,包括标准输出和日志文件,如图10所示。

应用启动后,会生成应用日志文件和标准输出,应用日志在paas平台会通过flume进行实时归集,统一归集到日志服务器,供用户通过paas前台进行在线查看和下载。而标准输出日志可以通过paas平台进行实时的获取和查阅。用户通过这些日志可以定位问题、统计分析和运维管理,从而精准的获取整个系统各个应用的运行情况,提升运维效率。

基于容器技术的资源隔离与副本维持

paas平台提供了资源隔离和副本维持等特性,能大大的提升开发和运维的效率。主要从下面三个方面来阐述:

1.资源隔离

传统的虚拟化采用的威睿虚拟机软件vmware或类似vmware的技术,在宿主主机上安装虚拟机,然后在虚拟机上安装操作系统。这样,每安装一台虚拟机都会占用一台虚拟机的资源,虽然现在能把cpu和内存都进行虚拟化,但每台虚拟机都实实在在安装了完整的操作系统。占用资源的同时,还需要一套复杂的系统对其进行维护。

而容器技术是轻量级的技术,它与虚拟机的差别是虚拟机管理程序对整个设备进行抽象处理,而容器只是对操作系统内核进行抽象处理。因此能够实现类似虚拟机的资源隔离,同时容器运行不需要模拟层和管理层,而是使用操作系统的系统调用接口,因此降低了运行容器所需的开销,不仅使得容器启动时间能够做到秒级,也使得宿主机上可以运行更多的容器。

基于容器的资源隔离技术,是paas平台的基石,是paas平台实现一键式便捷运维操作以及副本维持和故障迁移功能的基础。

2.标准化容器机制

标准化容器也是容器技术的一大特色,在传统开发测试和运维中,不同的开发和测试环境问题无法做到统一管理。运行一个程序需要开发,测试和运维同时准备环境,安装各种依赖包,而且极易因为版本问题造成程序出错。采用容器技术后,我们在开发阶段就将所有环境的依赖包制作一个容器镜像文件,这个镜像文件在测试、运维阶段都可以使用,它屏蔽了各种环境的差异,使得各个环境能够做到统一管理,简化应用因环境差异导致的各种工作,大大提升的开发、测试和运维人员的工作效率,同时也是devops机制实现的基石。

3.副本维持

paas平台能实现应用的副本维持功能,可根据业务的需要随时调整应用实例数。例如可以在过年过节业务量较大的时候增大实例数以应对业务量瞬间增大的压力。

这个机制只需要在创建应用的时候在paas前台对资源进行设置即可,如设置该应用运行所需的cpu和内存大小。大部分情况下,用户不需要关注这些配置,只有在业务量激增的情况下,才需要进行修改以满足要求。

paas平台的监控系统能实时监控应用的所有变化,包括应用退出,应用重启等健康检测功能,当检测到某个应用实例的状态不正常或进程退出时,可以秒级启动一个正常实例进行替代,也即自动选择一台合适的主机重新部署,并告警给用户。如果一个宿主机出现问题,运行其上的所有实例都可以快速转移至其它健康的宿主机上。基于容器技术使得应用故障转移非常快速,并且可以在集群中任意宿主机上运行。通过基于容器的副本数维持和故障迁移,保障了paas平台的高可靠性。

devops机制,提升运维开发效率

传统方式开发和运维是割裂开的,不符合现代产品和服务开发的需求。paas平台提供了一种devops机制的有效解决方案,以镜像贯穿开发、测试、运维的整个生命周期,有效提升开发运维协同工作效率。

devops方案如下:

把基础镜像作为程序的运行环境,程序所依赖的配置和库放入基础镜像中;使用不可变的基础镜像保证运行环境在开发、测试和运维中的一致性,并且把测试和运维需要的配置信息提取成环境变量在paas前台进行配置,从而开发人员提交的代码,测试和运维人员不须要经过任何修改即可以在paas平台部署。

devops方案下开发运维流程如图11所示:

1.开发人员在发布版本前,需要打基础镜像,并完成应用的调试,基础镜像中包含应用所需基础配置、依赖库等,制作好的基础镜像放入到paas平台镜像仓库中;

2.开发人员提交源代码、发布应用程序包版本;

3.运维人员拿到应用程序包版本,通过直接在paas平台上传或者定制svn 库地址的方式向paas平台提交可执行代码;

4.运维人员在paas平台选择相应的基础镜像,并填写运维配置;

5.paas平台根据程序包和基础镜像,自动生成应用运行的目标镜像。

paas平台devops方案打破了开发、运维的壁垒,做到开发、运维的高效协同工作,使用基于容器的paas平台,可以非常简单的实现电信漫游清算业务服务的安装、部署和运行。

以网间漫游b文件的校验、查重、结果发布服务为例进行说明:

在测试环境,其安装、部署和运行流程如图12所示,包括:

1.开发人员会根据网间漫游b文件的校验、查重和结果发布服务所用到的特定软件,如jdk,oracle客户端等打一个合适的基础镜像,并将该基础镜像上传到镜像仓库;

2.开发人员同时登陆paas前台,录入该基础镜像信息;

3.运维人员根据接入paas规范进行网间漫游b文件校验、查重和结果发布服务的zip包制作;

4.运维人员登陆paas前台,创建校验、查重和结果发布服务这些应用,以校验服务为例,运维人员录入校验服务的相关信息(如名称、应用实例个数、cpu、内存设置)后保存,paas前台会将请求发给控制中心,控制中心将这些信息入到mysql数据库;

5.paas前台收到应用创建成功的结果后,再提示运维人员是否立即创建版本,如果是则开始创建版本,如果不是,则运维人员后续可以在版本面板那里下次再创建。

6.运维人员上传校验的zip包,选择基础镜像,设置环境变量,保存之后,paas前台将校验zip包传送到控制中心服务器,同时发起创建版本的请求,控制中心收到请求后立即获取校验zip包,并在基础镜像的基础上打应用的镜像并存入镜像仓库。同时将版本信息入到数据库并返回给paas前台。

7.paas前台收到版本创建成功的请求后,提示运维人员是否立即启动应用,如果是,则立即启动,如果不是,运维人员后续可以在版本面板那里启动该应用的这个版本。

8.运维人员启动应用,paas前台会将请求发给控制中心,控制中心创建应 用模板,并将请求发送给资源管理中心,资源管理中心根据测试集群中各个节点的负载情况进行实例的启动,启动成功后返回。paas前台会将消息告知运维人员。

至此一个应用从镜像制作、上传到服务器、部署、启动至运行就完成了。

综上所述,本发明提供了一种基于容器的paas平台,由前台,控制中心,资源管理中心和容器节点4部分组成,能够实现基于容器技术的资源隔离与副本维持;分布式环境中应用的一键式智能运维;devops机制,进而提升运维开发效率。

也就是说,本发明提供的基于容器技术的paas平台,通过提供友好的前台操作界面,使运维更加的简便;引入docker容器技术很好的实现了资源的隔离;通过资源管理中心实现了软负载均衡。

其中,上述开发运维装置的所述实现实施例均适用于该云计算paas平台的实施例中,也能达到相同的技术效果。

同样,上述开发运维方法和装置也能够实现该云计算paas平台所能够实现的各种功能。

需要说明的是,此说明书中所描述的许多功能部件都被称为模块/子模块,以便更加特别地强调其实现方式的独立性。

本发明实施例中,模块/子模块可以用软件实现,以便由各种类型的处理器执行。举例来说,一个标识的可执行代码模块可以包括计算机指令的一个或多个物理或者逻辑块,举例来说,其可以被构建为对象、过程或函数。尽管如此,所标识模块的可执行代码无需物理地位于一起,而是可以包括存储在不同位里上的不同的指令,当这些指令逻辑上结合在一起时,其构成模块并且实现该模块的规定目的。

实际上,可执行代码模块可以是单条指令或者是许多条指令,并且甚至可以分布在多个不同的代码段上,分布在不同程序当中,以及跨越多个存储器设备分布。同样地,操作数据可以在模块内被识别,并且可以依照任何适当的形式实现并且被组织在任何适当类型的数据结构内。所述操作数据可以作为单个数据集被收集,或者可以分布在不同位置上(包括在不同存储设备上),并且至少部分地可以仅作为电子信号存在于系统或网络上。

在模块可以利用软件实现时,考虑到现有硬件工艺的水平,所以可以以软件实现的模块,在不考虑成本的情况下,本领域技术人员都可以搭建对应的硬件电路来实现对应的功能,所述硬件电路包括常规的超大规模集成(vlsi)电路或者门阵列以及诸如逻辑芯片、晶体管之类的现有半导体或者是其它分立的元件。模块还可以用可编程硬件设备,诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备等实现。

以上所述的是本发明的优选实施方式,应当指出对于本技术领域的普通人员来说,在不脱离本发明所述原理前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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