做者介绍数据库
战学超,青航数据架构师。曾任职于NEC软件、海尔B2B平台巨商汇,负责企业数据平台构建、B2B电商平台数据管理与搭建。拥有丰富DBA、系统运维架构经验,擅长数据库、数据平台搭建、私有云部署、自动化运维等。安全
最近一段时间,一直在作和运维、数据库相关的工做,也算是完成了从开发向运维的转变。这半年来的研究基本完成了运维管理平台的第一版架构,这里写出来跟你们一块儿讨论交流,以便更好地完成运维工做,摆脱重复运维劳动,尽快转向自动化运维和云服务这一方向,完全解放劳动力,实现高效的服务IT。服务器
整体架构网络
首先是整体架构图:架构
能够看出内容相对仍是比较简陋一些,指望可以在你们的帮助下,丰富完善起来。运维
我主要分为如下几个部分跟你们介绍:工具
基础数据学习
监控模块,监控管理平台测试
灾备管理平台优化
安全模块,安全管理平台
自动化运维平台
虚拟化与私有云
运维管理页面
本文主要对运维管理平台的这几个模块作一个简单介绍,同时综合了咱们日常运维遇到过的一些问题,计划优先完成的模块。具体以下:
1基础数据和监控优先
作运维管理平台通常会有一个优先度,由于不多有公司有充足的运维开发人力一会儿同时开展好几个模块。按照优先级快速迭代,永远是解决IT与业务部门矛盾的银弹。本人一直也在纠结创建运维平台的模块的优先级排序。通过三思仍是决定首先完成基础数据的收集,这里的收集的目的是为了接下来要完成的监控平台的创建。说到底第一步是监控,前提是收集好基础数据。
为何要这样?首先创建起监控平台,实现主动监控咱们的业务系统、服务器、网络的状况、出现问题,从而能够第一时间收到告警,这样在面对IT故障的时候,能够在与业务部门沟通中占据优先权,而非等业务投诉了,才知道系统出现故障。
不少公司可能没有运维开发的能力,此时利用Excel管理基础数据,Zabbix or其它作监控,也是能够很快构建出基础监控平台来监控IT系统。
2灾备紧跟
作好数据采集与监控以后,接下来就要考虑作全局备份。完整、可用的备份集是保障企业数据不丢或是最少丢失的最后一道保障。如何作好备份策略,备份集如何验证,都必需要提早作好准备和计划。
2自动化运维与安全并行
在完成了监控和灾备以后,运维的冗余工做量会获得必定的减小。接下来能够进行自动化的运维工做,例如自动装机,自动部署服务,利用自动化运维将平常的重复工做让系统完成,大大解放运维的劳动力。让运维能够有更多的时间和精力保障整个IT系统的安全、稳定和高效。
要完成自动运维的搭建,或是在构思自动化运维平台时,有一个工做不得不作,那就是:运维标准化和运维流程化。系统安装版本、JDK、Tomcat部署版本、位置等等,只要提早作好了标准化,才能利用自动化运维工具完成运维的自动化。
运维的流程化是指涉及到某一运维主题如应用发布,每一步该如何操做,涉及哪些运维节点,前后顺序等。明确的运维流程,能够有条不紊地保障系统的更新和发布。规范化、流程化的运维操做能够减小运维过程当中的失误,也能够在出现问题的时候,迅速找到问题节点,迅速恢复。
安全一直是一个相对忽略的话题。网络安全、系统安全、应用安全、数据库安全等,一旦任何一个节点出现安全漏洞或是故障,都将会给系统带来毁灭性的灾难。安全并非购买了商业设备以后,就能够高枕无忧。不断学习,不断研究系统的漏洞,最大程度地结合自身的专业深度和安全设备,为整个IT系统筑一道厚重的高墙。
4虚拟化和私有云
虚拟化和私有云的搭建的最大目的是为了节省公司的IT成本。固然也有不少其余优势,例如作虚拟机层面的热备,利用私有云服务快速地搭建须要的服务等。虚拟化和私有云是将来运维的一个方向,必定要把握好时机。给老板省钱,即是跟老板要钱的最佳理由。
5运维管理集成平台
在完成了基础数据采集、CMDB创建、监控平台、灾备、运维自动化、虚拟化和私有云以后,咱们须要一套IT系统来集成各个模块,统一管理,这即是咱们的运维管理平台。
后面将围绕上面几个部分作一个简单的概述,简单概述以后,会陆续推出各个模块的建设心得,技术方案和踩过的坑等,敬请期待。
基础数据
巧妇难为无米之炊,基础数据即是咱们运维管理平台的米。基础数据方面主要分一下几个部分:
1CMDB
CMDB在这里更可能是偏向IT设备管理,由于这样能够更快地完成。与传统的CMDB不一样,咱们把配置管理放在了自动运维模块了。这里的CMDB主要是将整个IT部门的硬件资源,已有系统,服务包括供应商作一个管理,为之后的监控和自动化运维等提供基础数据。该平台CMDB的建设思路主要是以产品线和项目为导向,具体顺序说明以下。
1、产品线和项目
首先是肯定整个公司的IT产品线。以某航空公司为例,涉及到的系统有运行控制系统、飞行排班系统、机务管理系统、B2C官网系统、呼叫中心系统等。
通过分析判断,能够肯定该公司主要分为两大产品主线,即:运行相关系统主线和运营相关主线。运行相关涉及到运行控制、飞行排班、机务等各个项目系统;运营相关系统主要有呼叫中心、B2C等。
为了更好地理解产品线和项目的划分,再举一个B2B电商的例子,涉及到的有买卖家管理系统、订单系统、支付系统、物流系统、对帐系统等。能够大概分为销售产品线:买卖家管理、订单管理;财务产品线:支付系统、对帐系统;物流产品线:物流系统、第三方物流接口等。
产品线的划分必定要站在公司的角度进行,能够结合公司的主要部门,和大产品群进行划分。产品线划分好后,接下来就是梳理整个公司的全部项目,将每个项目,按照所属产品线进行归类。
2、IT资产管理
通过产品线划分和项目归类以后,能够一目了然地看到目前公司全部的IT系统。接下来根据每个项目梳理项目中涉及到的服务器或是虚拟机。而后还须要从另外一个维度去梳理:每一台服务器或是虚拟机上面部署的项目,服务(数据库、Tomcat、WebLogic等)。通过这一步,能够明确每个项目涉及哪些服务器或是虚拟机,每一台服务器或虚拟机上又关联多少个项目,部署了多少服务。
虚拟机在哪些宿主机,宿主机又分布在哪些物理机上,而这些物理机又部署在哪一个机房的哪一个机柜;网络链接是怎样,上行和下行分别是什么,都须要进行梳理和完善,这样能够从硬件层面去关注每个系统的硬件关联。若是硬件或是网路出现任何问题,能够快速地清楚知道涉及到的系统和影响度。
3、供应商管理
每个公司的IT设备或是系统基本都会有供应商公司的参与。集中统一管理这些供应商的信息,能够在系统出现问题的时候紧急联系供应商,进行协助解决。
2生产数据库
生产数据库做为基础数据的重要一环,为业务数据监控提供主要途径。咱们在监控模块中有一个业务监控,主要依赖业务数据库中的数据,根据业务逻辑进行数据比对,判断业务的实时性和准确性。
通常在监控和备份的时候,数据库都会做为单独的一个主题进行(由于过重要)。在基础数据模块,将全部的生产数据库信息进行集中采集,能够很方便地为之后的数据库监控和备份等运维工做提供操做对象参考,以避免遗漏。
生产数据库通常按照数据库的类型(MySQL、Oracle、SQL Server等)进行分类管理。数据库的名称通常即业务系统的名称,简单标识,见名知意。
3日志数据
日志数据是IT系统的重要数据之一,能够很好地反映系统的运行情况,系统出现问题的时候,能够经过反查日志进行查因、排故。
1、系统日志
系统日志主要是包括操做系统级别的日志,包括物理机、宿主机、虚拟机等部署有操做系统的系统日志。通常主要关注如下几种日志:系统操做日志、安全日志、定时任务日志等。
系统操做日志能够看到什么用户什么时间登陆了哪台操做系统,作了什么操做等;安全日志能够判断系统是否已遭受或是正在遭受攻击,是否有过危险操做等;定时任务日志能够看到部署在系统中的定时任务是否按时准确地执行完成。
系统日志主要反映系统级别的运行状况,必定要作好备份和分析的工做。
2、应用日志
应用日志通常分应用服务日志和业务操做日志。应用服务日志指如Tomcat、Nginx运行时候产生的日志等,经过其能够看到应用服务运行的健康状况;业务操做日志主要是业务系统将部分业务操做或是业务错误写到日志中,可能单独一个日志文件也可能集成到应用服务日志中。业务操做日志是进行业务审计,业务监控的重要数据源。
3、数据库日志
这个很少说,数据库中的数据每每是企业的核心资产。数据库日志反映着数据库的每一步每个事务的操做,以及数据库运行的监控情况,进行日志监控和分析时,数据库日志是不可缺乏的。
4、设备日志
设备日志每每是比较容易忽略的。但设备日志能够直观地反映出设备运行的情况,以及设备出现问题的时候,能够经过日志快速准确地找到缘由。如交换机日志、防火墙日志等。经过防火墙日志能够看出系统是否遭受攻击,交换机日志能够看到网络流量是否呈现陡增陡降等突发情况。实时监控和管理设备日志是日志管理的重要工做之一。
4知识库
在基础数据中,咱们单独设立知识库这样一个模块,主要包含事件库、问题库、经典案例库、解决方案库等。
事件库主要是在运维工做中遇到的一些运维事件或是事故,在事件库中详细记录事件的缘由和处理过程。若是涉及到需求变动或是须要修改系统进行解决的,此时由事件库进入到问题库。
问题库涉及到问题解决流程,问题解决的过程当中,可能涉及到应用变动发布等。经过问题库的统计能够侧面反馈系统的情况。
经典案例库记录了解决经典问题的方式和方法。例如记录了防火墙故障,交换机故障时如何从查找缘由到排故到解决的过程,以供解决相似故障处理参考。
解决方案库主要存放一些经典的解决方案如Nginx+Tomcat+Redis的部署方案、MySQL的HA、Oracle的RAC等等解决方案。以便在构建新的系统的时候能够快速地选择解决方案。
基础数据为之后的运维工做作铺垫,基础数据的收集必定要全面,不能遗漏,不然就是之后运维的一个潜在问题点。
监控模块
监控模块主要分为如下几个部分:
1系统监控
主要监控系统层面的健康情况如内存、CPU告警、硬盘存储不足等等,系统层面的监控能够快速反应系统问题,运维工程师能够提早处理可能出现的系统问题。
2网络监控
经过进行网络监控,包括网络的正常性,是否联通,网络访问量是否陡增陡降等,来监控和预防网络问题带来的故障。
3应用监控
主要监控应用的可用性如Tomcat的端口、Nginx的端口、错误日志等等。应用出现问题致使应用不可用,均可以经过应用监控及时发现。
4数据库监控
主要监控数据库的可用性,经过监控数据库状态,日志是否有警告错误,表空间等方面来监控数据库可用与否。
5业务数据监控
经过业务数据监控以监控系统中是否含有业务逻辑错误的状况。例如:每一笔订单支付成功都应该有对应的支付流水号和物流流水号。经过监控数据库中的数据,来观察是否已经生成支付流水和物流流水。
6全链路监控
经过全链路监控能够明确地看到业务操做的每一步正确与否。
7第三方监控
以上6种监控基本都是从公司内部进行监控的,若是是公司级别的网络问题或是服务器大面积故障,可能就难以经过内部监控获得信息,此时须要借第三方云监控进行协助监控,如监控宝、听云等产品。
经过监控能够主动及时地获得系统的故障信息,在与业务部门的沟通中,化被动告知为主动监控,也为解决故障赢得宝贵的时间,这样能够把影响范围和影响时间降至最低。
灾备管理平台
灾备管理,有条件的话能够两地三中心,即同城实时,异地延迟备份。注意必定不能所有都是实时备份,不然在出现问题的时候,尤为是数据篡改实时同步到备份端的话,也将是错误的数据。因此必定要有实时和延迟的策略。另外备份层面能够分数据库备份、文件备份(如应用程序包等)、虚拟机备份和存储级别的备份。
有备份就必定要有验证,并且验证要持续不间断,有计划地实施。只要经过验证可用的备份集才能保障系统的可用性。
在灾备管理模块存储各类系统的应急预案,这样在出现灾难性故障的时候,能够迅速启动应急预案,进行灾难处理。
自动化运维和安全
1安全
安全管理必不可少,而自动化运维是为了最大程度地减小运维的重复劳动,提升运维的工做效率。自动化运维减小的工做量能够转化为更多对系统安全的关注。
安全模块主要从上图的几个方面进行:
登陆服务器经过堡垒机,而非直接SSH登陆,另外利用堡垒机作系统操做审计,利用业务操做日志作业务审计(通常很难)。经过审计挖掘潜在的系统风险和威胁,防患于未然。
UMS即用户帐号管理。操做系统的用户和业务系统的用户密码每每没有一个统一集中的地方进行管理,这些管理员级别的帐户一旦泄漏,危害是很大的。因此经过UMS进行对这些用户的管理,而且指定责任人、权限和密码修改策略,最大程度地避免密码泄漏和丢失的风险。
企业中通常有多种安全设备,防火墙、WAF、IPS等,经过一个统一管理入口,既列举了全部的安全设备,也方便操做。这里每每是经过URL跳转到各类安全设备的管理界面。
漏洞管理平台主要是几个爬虫去爬当前主流系统漏洞和最新的漏洞,在平台进行反馈,以便运维工程师及时得到漏洞信息和思考处理办法。
当运维的服务器数量上来的时候,自动化运维就显得很是重要了。例如漏洞管理平台发现一个新的漏洞时,须要在几百台服务器上打补丁,此时没有运维自动化,每一台都登陆处理的话,将是很是大的一个工做量。
2自动化运维
在这里简单介绍一下运维自动化涉及到的内容。结合前面说的运维流程化中的流程,大概分为如下几点:
一、服务器申请与操做系统自动安装(自动安装的操做系统是通过系统安全加固和优化后的系统)。
二、系统部署服务(如数据库,Tomcat等)的申请和自动部署。通常要求版本统一,或是特定版本。部署的服务须要从自建软件仓库或是自建的Yum源进行自动安装。
三、应用发布申请与应用的自动部署。咱们这里采用的是开发从代码库中检出代码经过编译服务器进行编译,将编译后的程序包和配置文件(若是修改的话)在系统进行提交发布申请;测试人员收到开发的发布申请后,点击发布,发布程序先执行备份,而后自动发布到测试环境,测试人员进行测试,测试有误,回滚测试环境,流程退回至开发,如无误则点击生产发布(有的公司会要求预生产发布测试);运维人员收到测试经过的包和发布时间后,点击建立发布便可。到时会定时在服务器先备份后发布。
四、应用变动申请流程与上述相似,都是先通过测试,再进行变动。服务器变动申请如扩容等会根据资源利用率和硬件资源池进行评估后,给出变动建议。
此外自动运维平台还提供架构自动诊断、压力测试、系统巡检、故障自诊断等方面的功能,具体再也不一一赘述。
总结
运维管理平台的创建涉及到运维工做的方方面面,以减小运维重复工做,提升运维效率为目标,若是你们有新的意见和建议的话,欢迎一块儿沟通交流。
转自:http://www.sohu.com/a/141415011_487514