vlambda博客
学习文章列表

快速构建简易自动化运维的环境

内容概要

1、什么是自动化运维环境
2、自动化运维有哪些需求
3、proxy工具有哪些能力
4、构建简易自动化运维环境
3、运维案例


1

自动化运维环境

        随着信息时代的持续发展,IT运维已经成为IT服务内涵中重要的组成部分。面对越来越复杂的业务,面对越来越多样化的用户需求,不断扩展的IT应用需要越来越合理的模式来保障IT服务能灵活便捷、安全稳定地持续保障,这种模式中的保障因素就是IT运维。从初期的几台服务器发展到庞大的数据中心,单靠人工已经无法满足在技术、业务、管理等方面的要求,那么标准化、自动化、架构优化、过程优化等降低IT服务成本的因素越来越被人们所重视。其中,自动化最开始作为代替人工操作为出发点的诉求被广泛研究和应用。

       顾名思义,自动化运维就是将过去需要人工操作实现的系统运维工作通过新技术,新手段的组合,以标准和智能的IT运维环境来降低或完全代替人工运维工作。目的就是实现IT运维的质量,降低成本。可以说自动化一定是IT运维最高层面的重要属性之一,但不是全部。那么自动化运维的环境又是什么呢?从硬件上讲,自动化运维的环境就是云平台,云计算技术,因为通过这些技术,软件运行的环境可以智能并严格按照设定的标准规则进行快速构建、容灾倒换、集群运行。但对于软件来讲就要复杂的多。

       就一个常规的软件应用系统来讲,其构成要素为数据库、数据处理、交互界面(以web服务形式提供),以及相关的软件支撑模块,比如消息处理组件、缓存、容器等等。但就运维工作来讲,就是围绕这些模块的运维操作,比如安装、升级、启停、异常检测、故障恢复等。因此对于IT系统的软件来讲就是要实现这些人工操作的步骤能通过脚本的新开发的辅助程序实现自动安装、升级、启停和故障检测恢复。由于软件的差异化和开发成本的考虑,我们不能指望软件开发者在满足用户需求的同时能够完善自身的自动化运维能力,而需要通过实际情况使用安全可靠的技术构建一套松耦合的运维框架,在此框架基础上,运维人员很容易通过脚本批量实现人工运维操作,先固化判断执行逻辑,后逐步通过智能判断减少人工干预。这样的环境我们称之为自动化运维环境

2

自动化运维有哪些需求

       通常我们会选择诸如ansible这样的工具来实现运维自动化,但是这样强大的工具也有诸多的缺点,由于功能过于强大、配置起来相对复杂、也就提高了掌握和使用的难度。通常我们的运维工作会随着运维项目的不同运维阶段出现相对集中类型的操作,比如实施阶段有较多的安装配置、运行阶段大多集中为应用的启停和异常处理。就像devops运维思路也不是万能的,只是适用于频繁功能发布迭代。我们的软件项目一旦进入稳定运维期,更多的运维工作就是保障正常运行。综上所述,罗列常见的运维工作:

       1、上传、下载文件

       2、运行命令和脚本

       3、日志分析

       

     为了让大家能够理解以上几项基本涵盖了95%的运维工作,举几个例子。

   

      1、数据库因为磁盘满了而导致异常,需要人工处理,其实就是日志分析后发现异常,并通过磁盘命令df查看磁盘空间问题。处理的方式是运行rm命令删除异常日志,然后通过命令startup来重启数据库


      2、公司的程序不稳定,内存消耗严重,需要定时重启,或者需要分析日志发现异常或不写日志后需要重启


      3、用户提供一个文件,需要上传的服务器上并解析入库,这样的需求其实就是文件上传和运行特定的导入程序


      4、非rac环境的应用系统因为主的硬件出现问题,一时半会无法故障恢复,需要临时启用备用环境,这样的运维工作其实就是通过日志发现异常,通过命令将备用的IP修改为正式环境,并运行命令启动备用环境

   

      5、系统需要定时采集和汇总一些业务数据,并通过报表展示,但由于采集数据时间窗口问题导致数据采集汇总失败。运维人员需要手工重新执行采集汇总。这里面包括运行命令对数据异常的发现和重新运行采集程序和汇总程序实现数据补采。

       通过以上几个例子来看,只要一个自动化运维的环境满足能够配置实现以上任务的自动化,这样的环境就是成功的。 

         

   

  

3

proxy工具有哪些能力

       我们需要一个安装方便、配置简单、功能满足可通过脚本配置远程执行文件上传、下载和分析,远程执行命令和脚本的自动化运维环境工具。proxy就是这样一个绿色、配置简单、只实现脚手架功能的一个框架工具。

       

       安装方便:无须安装、解压就能使用


快速构建简易自动化运维的环境



4

构建简易自动化运维环境

        有了proxy工具,虽然只能实现了95%的工作,但剩余5%也可以通过批处理或者sh编程实现将复杂的维护工作转化为命令和脚本来执行。将porxy部署在所有运维的服务器上,由于porxy自带容器,无任何依赖环境,监听端口配置灵活,为了维护方便,可将porxy配置为系统启动后自动启动即可,重点是需要将被控服务器上所有的操作梳理后配置到命令映射中,这样的操作一方面可以将维护工作标准化,另外主要是安全考虑,即任何的操作都是白名单操作,只有配置了才能执行。

       

      目前porxy支持windows和linux两种操作系统。


5

   运维案例

      配置好了自动化运维环境,如何去调用执行呢,大家都知道无论是windows还是linux,定时任务都是最好的自动化运行方式,通过定时的异常检测,将发现的异常进行判断后按照设定的执行逻辑执行,这就是自动化运维。为了方便脚本调用,使用者可以用curl程序(linux自带,window需要下载)进行proxy的远程调用


我们继续通过几个操作加深理解功能使用方法


1、文件上传

curl http://192.168.1.100:8888/upfilehand -F "uploadfile=@c:\002.jpg"

以上命令将002.jpg上传到192.168.1.100的指定目录,通过我们可以将程序的安装包、导入的数据、运行的配置文件等上传到指定服务器上


2、文件下载

curl http://192.168.1.100:8888/s/alert.log >c:\oracle\log\alert.log

以上命令将100服务器上的指定目录下的alert.log下载到本地


3、命令执行

curl http://192.168.1.100:8888/a?cmdname=ipinfo -X POST -d @xx.data --header "Content-Type: application/text">ip.txt

重点关注红色部分,这个映射到我们前面配置文件中就是执行ipconfig /all命令,我们将远程在主机100上远程调用执行命令,并将执行返回的结果保存到ip.txt中便于后续分析和联动执行。执行结果截图如下




    说明   

       自动化运维非一朝一夕就能落地的,需要分阶段、分步骤有计划的进行实施,一个最关键的工作其实是盘点当前维护难点和低效工作,只有认清了你每天都把时间浪费到哪里了,你才能找到对应的解决办法,也才能知道自动化运维是否能有效解决你的问题。