运维平台化思路与实践

By 叶正茂@高升

业界运维发展趋势

运维的基本工作包括,网络、服务器、操作系统、数据库、发布、变更、监控、故障处理、运营环境信息维护。传统运维工作属于操作类,主要工作在于变更发布产品的新版本,维护产品的稳定。 运维未来的发展方向将从操作类工作,转向平台化工作,针对产品设计出解决方案,让开发工程师、产品经理能够自主快速迭代产品。运维从重复的操作中解放出来,更加关注的是系统平台的稳定性。最终提升了效率,降低了人力成本。运维的发展主要包括手工阶段、工具阶段、ITIL标准的平台化管理、虚拟化、云计算五个阶段。

手工阶段

1998年至2004年中国互联网兴起。那时候运维和开发没有明显界限。开发兼职运维的工作,主要靠纯手工、重复地进行软件部署。进阶为通过编写脚本、方便地进行维护工作。

工具阶段

2005年至2009年互联网迅速发展。大型互联网公司的运维从开发中独立出来。按业务纵向划分的运维模式,各产品线运维自己的产品。运维主流方向是借助salt、puppet、Func等第三方工具高效、方便地进行软件部署和版本迭代。监控上采用MRTG、Cacti、Nagios、Zabbix等监控软件。

ITIL标准的平台化管理

2009年至2010年,运维横向专业发展,分工更细,基于ITIL建立高效的监控平台,从速度、效率、质量建立运维体系,提升运维能力。

ITIL即IT基础架构库,由英国政府部门制订,现由英国商务部负责管理,主要适用于IT服务管理(ITSM)。ITIL为企业的IT服务管理实践提供了一个客观、严谨、可量化的标准和规范。ITIL流程管理,主要包括事件管理、问题管理、配置管理、变更管理、发布管理。

对于企业实施ITIL,可以有助于最终进行完善的服务管理。在ITIL的各个流程管理中,可以直接与各个业务部门相互作用,实现对业务功能及流程进行重新设计,降低成本、缩短周转时间、提高质量和增进客户满意度。

虚拟化

2010年至2011年运维向虚拟化发展,这也是云计算的雏形。虚拟化的主要目的是对IT基础设施进行简化。它可以简化对资源以及对资源管理的访问。虚拟化降低了消费者与资源之间的耦合程度。因此,消费者并不依赖于资源的特定实现。利用这种松耦合关系,运维人员可以在保证管理工作对消费者产生最少影响的基础上实现对 IT 基础设施的管理。管理操作可以手工完成,也可以半自动地完成,或者通过服务级协定驱动来自动完成。

虚拟化一般包括半虚拟化,操作系统层面隔离的开源应用容器Docker、Vagrant等。完全资源隔离的虚拟化VMWare、KVM、Xen、Virtualbox等。

云计算

2011年至今,运维进入云时代。传统运维的弊端,人力成本高,自动化程度低。云计算平台可以实现自动化部署、自动诊断、动态扩容。云计算是分布式计算、并行计算、效用计算、网络存储 、虚拟化 、负载均衡等传统计算机技术和网络技术发展融合的产物。如阿里云、腾讯云、百度云。

业界优秀企业运维系统调研

腾讯

腾讯的运维系统主要包括IEG的蓝鲸、SNG的织云、云智慧等平台。其中织云主要作为内部平台支撑SNG的业务。蓝鲸支撑IEG业务的同时,也加入了腾讯云体系。蓝鲸系统主要分为6个模块集成平台、移动平台、作业平台、配置平台、管控平台、数据平台。其中集成平台,包含web样例、开发框架等模块,运维制作APP的工具平台;移动平台,是平台的移动端操作入口;作业平台,由手动操作改向为自动化,各种文件传输,含参脚本执行类的动作,可以在作业平台封装,通过接口操作;配置平台是从业务的各层分级结构到子节点的各类属性,都可以直观的存储于配置平台,通过接口存取;管控平台,包括客户端智能agent,为作业平台提供文件管道和任务管道,为数据平台提供数据管道等,整个蓝鲸体系对OS及容器单元、大数据的所有管控;数据平台,基于kafka、storm构建的供应用运维使用的实时计算平台,为上层集成平台上的智能决策、数据视图类、提供大数据处理及实时计算能力。

百度

百度运维部开发的Noah系统。支撑百度所有产品线运维工作。

诺亚(noah),是百度运维管理平台的代号。希望诺亚能承载着服务器、服务、人,避开如洪水般纷繁复杂的手工操作,抵达希望大陆。Noah系统产生的原因是,随着百度运维长期以来,基本依靠人力去完成一个个复杂的上线和操作,失误时有发生,线上运维质量得不到良好保证。虽然各产品线有了较多的工具和系统,但是没有总体规划,较为分散。随着百度业务的发展,运维规模的扩大的运维模式越来越难以为继。在这个背景下,运维部进行运维体系的规划和推动工作。 运维管理平台作为运维体系的三大部分之一,是运维的核心工程,随着Noah的逐期完成,运维生产力会得到极大的提升,从根本上解决运维规模的扩大造成的各种问题。Noah系统分为多个模块,主要有

信息系统,包括收集(信息采集)、存储(信息单元)、组织(信息集合)、展现(信息展现)各种运维信息;监控系统,负责对信息系统中的信息按照条件进行实时监控(信息监控)或者绘制监控图(监控趋势图);主机管理负责对运维环境中的服务器(服务器信息表)及配置信息(配置信息表)进行管理,并提供给平台其它功能使用;关联管理提供服务结构的关联信息;权限管理,提供平台管理、个人中心,Noah Web端的等辅助系统功能。

多年的发展,百度运维系统的各模块功能已经非常完善,目前走在业界前沿的是智能监控模块。随着产品业务的发展,服务模块会不断增多,各服务模块也存在依赖调用关系,监控指标错综复杂,在出现故障时候会发出海量告警,一线工程师靠经验定位故障原因。故障的恢复也需要手动操作,人工处理故障,整个故障处理的时间会让产品服务质量都大打折扣。在这个背景下,产生了智能监控模块。智能监控模块主要分为三部分,智能发现故障,智能定位故障,智能处理故障。

智能发现故障:异常自动检测,精准报警。智能监控系统根据历史数据进行分类学习、参数训练,能够动态给出监控指标。服务器端设定服务器应用指标,超过某合理数值自动报警,并对服务器异常的波动状态进行报警。对相同时间、相同监控策略、相同监控对象、关联挖掘、合并置信度较高的频繁项集。

智能定位故障:通过不同指标的分析方向和下探方法可以形成树状结构,通过树上的某个节点进行逐级探查。最终形成故障诊断树,通过推导路径可以帮助运维工程师快速完成问题出现时的排查过程,节省故障定位时间,也达到直接定位问题、加速解决故障的目的。

智能处理故障:定位故障原因后,自动冗余调度。智能监控系统给出动态策略、部署调度系统最终调度执行。

阿里

阿里的运维系统是集群运维管理系统。其特点是业务针对性强,高度自动化。包括自动装机和配置环境、自动监控、自动扩容、自动发布、服务器自动上下线。最终目标是保证质量、高效率、低成本。

系统大致分为三层,基础服务层、通用服务层、对象服务层。基础服务层,包括资产管理、分组管理。通用服务层,包括日志系统、监控系统、服务监控、容量管理。对象服务层,面向于运维操作,包括克隆、故障管理、四层、 DNS、配管。核心模块包含日志系统,负责统一的日志搜集、灵活的分析模型;监控系统负责所有服务器申请上线,自动添加基本监控;系统监控,包括CPU、内存、端口、链路、服务端监控;网络监控,负责网络设备上线后,自动添加基本监控;应用监控,负责应用自动上线,按照不同产品服务,上线后自动添加基本监控;服务监控,包括用户感受、客户端监控;容量监控,包含集群、服务池、业务调整等;用户端监控,类似高升APM品台的mmtrix系统,监控应用的真实访问质量;容量监控,根据采集的数据,针对应用、集群进行容量监控和规划;自动扩容系统,负责容量监控发现异常预警,通知服务池,服务池接到任务后,安排备机首先进行自动化安装操作系统并自动初始化环境,跟进配置中心的配置进行线上发布,自动添加监控。最后调度器,将预上线机器引入流量。

小米

小米运维系统的主要模块有服务器预算,预算采购至审核流程化管理;服务管理依赖运维树,以树状结构,对产品线、服务进行管理;部署系统,包括自动部署AESIR、部署系统XAE等;服务保障,包括服务监控、服务备份;资源隔离,包括硬件资源隔离采用容器LXC,彻底的系统隔离采用虚拟化KVM等。

自有运维平台构建

一般来讲互联网运维负责软件测试交付后的发布和管理,其核心目标是将交付的业务软件和硬件基础设施高效合理的整合,转换为可持续提供高质量服务的产品,同时最大限度降低服务运行的成本,保障服务运行的安全。运维的工作是相当繁琐的,包括网络、服务器、操作系统、数据库、发布、变更、监控、故障处理、运营环境信息维护。运维平台的目标是降低服务成本减少人力投入,提升工作效率,提高服务质量。因此运维平台需要覆盖运维工程师所有的日常工作。一个具备初步实用价值的运维平台的模块应当包括:部署系统、监控系统、配置管理、权限管理、运维安全、移动运维等六个基础性模块。

部署系统

上线系统

实现应用的自动化部署,具有权限审批,灰度发布,异常回滚的功能。具体功能点包含:

1) 添加上线单。选择服务器,服务单元;运行账户;服务单元调度类型:串行、并行;当前版本(关联svn);部署路径;上线文件数目显示;灰度上线,选择暂停点;回滚,自动将程序、配置、数据从备份位置恢复到原来的位置;异常告警,短信、邮件;备份需要上线替换的数据,用户不可见;

2) 查看上线单。根据上线单编号查询进度,上线单模板管理等;

3) 上线数量趋势图。上线正常,上线异常,回滚正常等维度的趋势分析;

4) 上线审批。开发经理审批,QA经理审批,运维经理审批等业务流程;

任务调度

实现对定时任务的统一调度。超出执行时间,状态异常,告警用户。包括任务创建,定时表达式;任务执行超时返回告警;异常执行返回告警。等待超时告警、运行超时告警;任务列表,如运行时间,启动命令,所在服务器、上下游信息、报警接手人等信息;

支持多种形式的任务执行方式,如时间驱动、事件驱动等。

作业平台

实现运维的一键式自动化操作。包括文件分发、文件拉取、脚本触发,批量操作。

需要支持shell,Python的初始化脚本,填写模板。可以对服务器进行初始化操作。具备文件分发,文件拉取,图形化执行命令功能;支持批量操作;以及执行账户管理、手工录入、本地脚本上传等功能。

数据管理

利用大数据存储、计算。对日志、配置文件等数据进行备份。备份申请功能,通过选择备份类型,填写配置,容量预估等参数进行备份申请;备份管理功能,动态显示备份状态,开始时间,结束时间,当前状态,数据量等信息;备份源配置功能,主要配置服务器节点,执行账户、限速、校验方式、备份路径等信息;告警查看功能,包括邮件告警、短信告警、告警记录等; 结果统计,包括备份次数、成功次数、补备次数、成功率统计、数据量统计等统计功能。

日志管理,通过配置日志文件目录、日志名称、ftp账号密码、存储时长、目标集群名称、单机限速、日志就绪时间等,形成日志采集任务。申请日志权限,ID、部门、产品线、日志模块名、日志描述(内容描述、用途描述、实时性描述、日志大小、保存天数)等。

监控系统

仪表盘

能够查看到处于告警状态的服务器。可以动态显示告警策略总数、告警中策略数、告警持续时间等,支持实时服务排查,各类监控指标显示。

监控

实现自动化监控。包括硬件监控,系统监控,程序监控,服务监控、进程监控。对于基础告警实现自愈策略,减少人工干预。实现复杂服务,对故障根源智能分析。

硬件监控:硬盘(硬盘读写错误、读写超时、硬盘掉线、硬盘介质错误、硬盘坏块率)、

内存(内存缺失、内存配置错误、内存不可用、内存校验)、网卡(网卡速率)、电源(电源电压、电源模块是否失效);风扇(风扇转速)、Raid卡(Raid卡电池状态、电池老化、电池和缓存是否在位、缓存策略;

资源监控:CPU整体使用率、CPU各核使用率、CPULoad负载;内存应用内存、整体内存、Swap;磁盘IO,读写速率、IOPS、平均等待延时、平均服务延时;网络IO,流量、包量、错包、丢包;连接(各种状态的TCP连接数等);文件句柄数;内网探测延时、丢包率等;

域名监控、IP监控、模块监控、日志监控、端口监控、结构体监控、语义监控、进程监控、进程资源监控、自定义脚本监控、网络监控(流量趋势监控,流量波动、流量异常告警);’集群监控(集群列表,集群监控项类型,最大、最小、平均、求和);克隆监控模板;告警收敛(相同时间、相同监控策略、相同监控对象合并告警);故障自愈,基于标准化运维体系(设备响应级别、自定义处理逻辑等基础),实现对于对死机、进程/端口挂、硬盘满/只读等基础告警,自动修复自愈策略;

故障根源智能分析,基于业务的访问拓扑,在单位时间片内把各个监控项的告警信息叠加在链路上的各个模块中,通过算法计算出最有可能的告警点,从而从众多的现象告警和原因告警中,筛选出原因告警,实现故障的根源分析; 真实终端,用户访问质量监控。

容量管理

基于容量管理,可以对成本管控、业务趋势预测、调整调度决策。

根据业务特性,依据带宽硬件配置、系统配置、应用服务器配置、程序逻辑,单机QPS。进行容量管理,和评估。基于容量对不同业务的平均负载、单机QPS、容量一致性等纬度进行分析,驱动运维和开发针对性的优化。有效的控制成本。

硬件监控平台

通过远程管理卡API接口调用,对磁盘、内存等报错信息进行巡检,对异常告警。

做raid后,磁盘正常。有一块磁盘异常,告警,做更换流程。

事件管理系统

对故障进行统计,跟踪故障处理。记录故障状态。根据产品线、服务记录SLA。以日报、周报、季报、年报进行展示。故障视图(故障编号、故障标题、监控策略、节点信息、报警内容);问题视图(对多起故障,合并成统一的问题);服务SLA;故障原因(网络、下游异常、误操作、容量、攻击、程序bug、误报警);故障处理(处理状态、负责人、故障通报组、故障分类、故障原因、故障描述、是否有损);故障日报、周报、季报、年报等。

配置管理

名字服务

实现服务名称或服务组名到服务所有运行实例的映射 。提供的信息包括实例的主机名,ip,还包括提供实例的运行状态、端口、负载、实例自定义配置标签以及其他实例自定义信息。满足服务间交互中常见的资源定位、ip白名单维护等需求,也可以用于机器列表查询,包括服务名、服务实例阀值、正常阀值比例、服务配置、API接口等信息查询。

机器管理

服务器硬件信息查询,包括服务器硬件配置、上架时间、上线时间,所处于的状态。支持自动安装系统以及环境初始化。

预算管理

每个季度进行预算采购,通过资源利用率分析,进行预估,控制成本。预算定制,配置录入;资源利用率计算,预算公式;预算审核流程;预算进度查询。

系统管理

实现资源的拓扑化管理。包括根据产品线划分运维树、权限划分。通过API接口,可以查到对应运营商、机房等机器的列表。

1) 通过机房录入,可以拓扑化的展现,服务器的分布。

2) 通过通过API接口,可以查到对应运营商、机房等机器的列表。

3) 跟据产品线划分运维树、权限划分。对服务器录入。通过API接口,可以查到对应运营商、机房等机器的列表。

权限管理

权限

权限划分。分为运维、开发、质量等不同权限。产品负责人可以操作、查看、修改产品的权限。

1) 权限划分。

运维权限:运维工程师、运维-只读

开发权限:开发工程师、开发-只读

质量权限:质量工程师、质量-只读

2) 堡垒机登录权限。

3) 基于产品线、服务的树状结构列表。部门、产品线、服务、服务单元

个人中心

查看个人产品线的权限,可以申请、删除个人权限。配置节点路径、角色名称增加分配权限。

安全

病毒扫描

通过ClamAV免费开源的杀毒软件,集中式用于Linux系统下杀毒。根据不同业务环境定制扫描策略,包括扫描对象、扫描路径、调度频率等。对于异常,发出安全工单,跟踪处理。

1) 初始化安装,ClamAV免费开源的杀毒软件。

2) 定时作业系统,每天凌晨进行病毒扫描。

3) 对于安全漏洞,发出安全工单,跟踪处理。

堡垒机

通过堡垒机实现访问控制。集中管理服务器的账号、密码和权限。

端口扫描

对外开放端口进行定时扫描,对未申请标示的对外端口,进行告警处理。登记记录开放端口;每天扫描端口,对异常端口进行告警;发出工单,关闭异常端口。

移动运维

实现运维系统,移动app开发。展现仪表盘,故障信息,在移动端操作。APP需支持Android、IOS主流版本。

results matching ""

    No results matching ""