新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 一个通用应用运维管控平台的设计实现

一个通用应用运维管控平台的设计实现

作者:时间:2018-07-24来源:网络收藏

在使用SSH方式情况下并发的速度会较差,可能控制在单机30-50个任务同时进行。

本文引用地址:http://www.eepw.com.cn/article/201807/383696.htm

在使用Agent的方式情况下,任务本身是异步下发的,可以同时1000+任务同时进行。

由于服务器数量较多,且分机房的模式,整个后端架构会是与目前的UCloud后端架构类似的分布式架构,一个中心任务下发节点,每个机房一个任务中转节点,每台服务器一个Agent(或者中转节点SSH的方式)。

4. 定制任务:

所谓的定制任务,就是可以通过任务组装的方式,将脚本执行和文件分发这两个主要功能(可以根据需要添加其他的功能,比如重启后的服务器ping探测,端口探测等),将上面的这些功能,按照1、2、3、4、5的方式组装,具体的支持功能如下:

1) 支持使用基础功能模块的子任务组装成完成任务

2) 支持设置每个子任务的子步骤的执行控制。比如失败后停止,完成后停止等待确认,忽略失败等功能。

3) 支持每个子任务的执行服务器ip修改。

定制任务适用于某些使用频次较高的任务,比如服务器初始化上线,代码版本发布,软件包更新等操作。

5. 定时任务:

定时任务是对普通的基础任务以及定制任务定时执行的功能,该功能的也相对简单,即按照crontab的分时日月周的语法,支持周期性或者定时性,也可以按照手机创建闹铃的方式选择触发时间和触发频率。

具体的实现方式如下:

1)用户输入的时间计划通过转换后写到管理机的crontab服务中。

2)每次有定时任务产生或删除或修改后生成新的计划任务。

3)计划任务中写明具体的执行命令

4)通过脚本调度API的方式实现任务的定时执行。

6. 灰度计划:

对于非周期性重复执行的任务,都可以加入灰度计划功能,该功能又结合定时任务实现。

灰度计划可以有两个维度体现:

1)定制任务中的每个子任务的子步骤都可以实现灰度,即上面所说的完成后暂停,或失败后暂停。

2)物理机个数维度,并发执行的时候支持自定义灰度计划,比如:任务先执行1台服务器,成功后隔多久后可以执行第二批服务器,再间隔一段时间再执行第三批任务。同时可以设置任务失败条件,比如:任何一台服务器失败,则整个任务失败;或当失败服务器的数量达到灰度计划服务器数量的百分比后整个任务放弃执行。

上面这些是作业管理系统的主要功能,当然想要实现整个作业管理系统还会有一些其他的子功能,比如:

1)任务结果记录跟踪系统。

2)任务重做,重做任务子步骤是否重做控制。

3)脚本内容安全审核功能。

4)其他暂时未想到功能。

3.3 配置管理

配置管理功能是整个管控功能中十分重要的一环,上面的作业管理系统中很多功能都依赖配置管理系统才能实现。

配置管理整个功能经过梳理之后如下图所示:

下面将依次介绍上面所述的功能:

1)账户管理:

所谓的账户管理十分简单,就是服务运行的时候所使用的用户,目前线上的服务大多都是root用户,但是有改成业务用户的趋势,故需要有一个账户管理功能。运维人员在使用作业管理的时候,选择相应的用户进行任务执行。

该功能可以发展成用户权限管理系统,即在该系统中控制每一个用户的系统权限。生成相应的权限配置文件,并下发到所有服务器上。不过用户管理的功能可能系统运维已经管理,这里就不再叙述了。

2) 文件管理:

文件管理功能比较基础,其实主要是对管理机上的重要文件进行管理,比如代码版本,脚本文件,软件包文件等等,文件类型包括:普通文件,文件夹,压缩文件和模板文件。

文件管理中,用户按照一定的规范将所需要的文件放到管理机上的指定位置,并将相应的路径配置在数据库中。

文件管理主要用在作业管理中进行文件分发的基础文件依赖。

3)脚本管理:

脚本管理也是文件管理中的一种,但需要单独管理,脚本是作业管理系统的基础依赖。脚本分为基础系统脚本和用户自定义脚本两种。

所谓的基础系统脚本就是经过严格认证过的,可以重复多次使用的基础功能脚本。而用户自定义脚本指用户通过上传或是通过web 编辑器提交的脚本文件,存储下来用户后续可能的重复使用。

基础系统脚本和用户自定义脚本都会存储在管理机的固定位置上,在文件管理中进行管理,用户在使用的时候选择对应的脚本名称即可。

脚本也支持添加标签,方便记忆和查找。

4)分组管理:

分组管理也是基础功能之一,在作业系统中脚本执行和文件分发都需要有明确的服务器ip地址,而分组管理就是将这些ip地址按照特定的用户自定义的方式来命名和分类,支持添加标签,用户在选择服务器的时候可以通过搜索的方式选择到一组服务器中的一个或几个。

分组管理依赖于资源管理系统,以资源管理系统的物理机资源(管理服务是虚拟机资源)为依据,用户选择一部分服务器并进行命名或添加标签从而得到一个新的分组。

分组可以分为静态分组和动态分组两种。

所谓的静态分组指的是确定完分组后,如需变化必须手动添加或修改的分组。这类分组会占很大一部分。

而动态分组指的是可以通过对服务器资源的某种匹配而自动将其添加到某个分组中的功能,比如说某个机房新上线N台服务器,可以不需要手动,而自动的添加到某个组中。这种功能可以通过手动来实现,在技术和时间限制的情况下,可以暂时不考虑。

分组功能还有组优先级的概念,主要是结合变量管理、模板管理结合使用,这些在变量管理和模板管理里面再进行介绍。

5)变量管理:

变量管理主要是配合分组管理和模板管理使用,所谓的模板就是在不同的情况层显不同内容的文件,而如何呈现不同内容就是在模板中配置了相关的变量名称,而变量的具体赋值则需要在变量管理里面体现。

变量管理建议使用yml语法格式来编写,比如如下的格式:

region: id: 7001 name: js mongodb: hosts: - 172.27.117.201 - 172.27.117.202 - 172.27.117.203 port: 27017



评论


相关推荐

技术专区

关闭