如何成为一名合格的运维工程师

如何成为一名合格的运维工程师,第1张

一、什么是大型网站运维
首先明确一下,全文所讲的”运维“是指:大型网站运维,与其它运维的区别还是蛮大的;然后我们再对大型网站与小型网站进行范围定义,此定义主要从运维复杂 性角度考虑,如网站规范、知名度、服务器量级、pv量等考虑,其它因素不是重点;因此,我们先定义服务器规模大于1000台,pv每天至少上亿(至少国内 排名前10),如sina、baidu、QQ,renrencom等等;其它小型网站可能没有真正意义上的运维工程师,这与网站规范不够和成本因素有关,更多的 是集合网络、系统、开发工作于一身的“复合性人才”,就如有些公司把一些合同采购都纳入了运维职责范围,还有如IDC网络规划也纳入运维职责。所以,非常 重要一定需要明白:运维对其它关联工种必须非常了解熟悉:网络、系统、系统开发、存储,安全,DB等;我在这里所讲的运维工程师就是指专职运维工程师。
我们再来说说一般产品的“出生”流程:
1、首先公司管理层给出指导思想,PM定位市场需求(或copy成熟应用)进行调研、分析、最终给出详细设计。
2、架构师根据产品设计的需求,如pv大小预估、服务器规模、应用架构等因素完成网络规划,架构设计等(基本上对网络变动不大,除非大项目)
3、开发工程师将设计code实现出来、测试工程师对应用进行测试。
4、好,到运维工程师出马了,首先明确一点不是说前三步就与运维工作无关了,恰恰相反,前三步与运维关系很大:应用的前期架构设计、软/硬件资源评估申请 采购、应用设计性能隐患及评估、IDC、服务性能\安全调优、服务器系统级优化(与特定应用有关)等都需运维全程参与,并主导整个应用上线项目;运维工程 师负责产品服务器上架准备工作,服务器系统安装、网络、IP、通用工具集安装。运维工程师还需要对上线的应用系统架构是否合理、是否具备可扩展性、及安全 隐患等因素负责,并负责最后将产品(程序)、网络、系统三者进行拼接并最优化的组合在一起,最终完成产品上线提供用户使用,并周而复使:需求->开 发(升级)->测试->上线(性能、安全问题等之前预估外的问题随之慢慢就全出来了)在这里提一点:网站开发模式与传统软件开发完全不一样, 网站一天开发上线1~5个升级版本是家常便饭,用户体验为王嘛,如果某个线上问题像M$ 需要1年解决,用户早跑光了;应用上线后,运维工作才刚开始,具体工作可能包括:升级版本上线工作、服务监控、应用状态统计、日常服务状态巡检、突发故障 处理、服务日常变更调整、集群管理、服务性能评估优化、数据库管理优化、随着应用PV增减进行应用架构的伸缩、安全、运维开发工作:
a 、尽量将日常机械性手工工作通过工具实现(如服务监控、应用状态统计、服务上线等等),提高效率。
b、解决现实中服务存在的问题,如高可靠性、可扩展性问题等。
c、大规模集群管理工具的开发,如1万台机器如何在1分钟内完成密码修改、或运行指定任务?2000台服务器如何快速安装 *** 作系统?各分布式IDC、存储集群中数PT级的数据如何快速的存储、共享、分析?等一系列挑战都需运维工程师的努力。
在此说明一下其它配合工种情况,在整个项目中,前端应用对于网络/系统工程师来说是黑匣子,同时开发工程师职责只是负责完成应用的功能性开发,并对应用本 身性能、安全性等应用本身负责,它不负责或关心网络/系统架构方面事宜,当然软/硬件采购人员等事业部其它同事也不会关心这些问题,各司其职,但项目的核 心是运维工程师~!所有其它部门的桥梁。
上面说了很多,我想大家应该对运维有一些概念了,在此打个比方吧,如果我们是一辆高速行驶在高速公路上的汽车,那运维工程师就是司机兼维修工,这个司机不 简单,有时需要在高速行驶过程中换轮胎、并根据道路情况换档位、当汽车速度越来越快,汽车本身不能满足高速度时对汽车性能调优或零件升级、高速行进中解决 汽车故障及性能问题、时刻关注前方安全问题,并先知先觉的采取规避手段。这就是运维工作~!
最后说一下运维工程师的职责:”确保线上稳定“,看似简单,但实属不容易,运维工程师必须在诸多不利因素中进行权衡:新产品模式对现有架构及技术的冲击、 产品高频度的升级带来的线上BUG隐患、运维自动化管理承度不高导致的人为失误、IT行业追求的高效率导致流程执行上的缺失、用户增涨带来的性能及架构上 的压力、IT行业宽松的技术管理文化、创新风险、互联网安全性问题等因素,都会是网站稳定的大敌,运维工程师必须把控好这最后一关,需具体高度的责任感、 原则性及协调能力,如果能做到各因素的最佳平衡,那就是一名优秀的运维工程师了。
另外在此聊点题外话,我在这里看到有很多人要sina、QQ、baidu,51com等聊自已的运维方面的经验,其实这对于它们有点免为其难:
a、各公司自已网络架构、规模、或多或少还算是公司的核心秘密,要保密,另外,对于大家所熟知的通用软件、架构,由于很多公司会根据自已实际业务需要,同 时因为原版性能、安全性、已知bug、功能等原因,进行过二次开发(如apache,php,mysql), *** 作系统内核也会根据不同业务类型进行定制 的,如某些应用属于运算型、某些是高IO型、或大存储大内存型。根据这些特点进行内核优化定制,如sina就在memcache上进行过二次开发,搞出了 一个MemcacheDB,具体做得如何我们不谈,但开源了,是值得称赞的,国内公司对于开源基本上是索取,没有贡献;另外,服务器也不是大家所熟知的型 号,根据业务特点,大部份都是找DELL/HP/ibm进行过定制;另外,在分布式储存方面都有自已解决方案,要不就是使用现成开源hadoop等解决方 案,或自已开发。但90%都是借鉴google GFS的思想:分布式存储、计算、大表。
b、各公司业务方向不一样,会导致运维模式或方法都不一样,如51com和baidu运维肯定区别很大,因为他们业务模式决定了其架构、服务器量级、 IDC分布、网络结构、通用技术都会不一样,主打新闻门户的sina与主打sns的51com运维模式差异就非常大,甚至职责都不大一样;但有一点,通 用技术及大致架构上都大同小异,大家不要太神化,更多的公司只是玩垒积木的游戏罢了,没什么技术含量。
c、如上面所讲,目前大型网站运维还处于幼年时期理念和经验都比较零散,没有成熟的知识体系,可能具体什么是运维,大家都要先思索一番,或压根没想过,真 正讨论也只是运维工作的冰山一角,局限于具体技术细节,或某某著名网站大的框架,真正运维体系化东西没有,这也许是目前网上运维相关资料比较少的原故吧。 或者也是国内运维人员比较难招,比较牛的运维工程师比较少见的原因之一吧。
二、运维工作师需要什么样的技能及素质
做为一名运维工程师需要什么样的技能及素质呢,首先说说技能吧,如大家上面所看到,运维是一个集多IT工种技能与一身的岗位,对系统->网络 ->存储->协议->需求->开发->测试->安全等各环节都需要了解一些,但对于某些环节需熟悉甚至精通,如系统 (基本 *** 作系统的熟悉使用,nix,windows)、协议、系统开发(日常很重要的工作是自动运维化相关开发、大规模集群工具开发、管理)、通用 应用(如lvs、ha、web server、db、中间件、存储等)、网络,IDC拓朴架构;
技能方面总结以下几点:
1、开发能力,这点非常重要,因为运维工具都需要自已开发,开发语言:c/c++(必备其中之一)、perl、python、php(其中之一)、shell(awk,sed,expect…等),需要有过实际开发经验,否则工作会非常痛苦。
2、通用应用方面需要了解: *** 作系统(目前国内主要是linux、bsd)、webserver相关 (nginx,apahe,php,lig>你应该说对linux系统管理都没有问题,比如设置ftp或者防火墙等,还有linux命令要都会使用,最好还要会oracle数据库。因为现在要是用linux系统的~都是用oracle数据库。本人现在就是做linux运维的。希望对你有所帮助。

不知道你到底对这下面这句话怎么理解的:
“Linux一些常用命令都会,对各种应用服务源代码安装都熟悉,如:Apache、nginx、mysql、web+lvs、nagios、cacti、mail、iptables等部署与维护。”
说实话,熟悉以上的东西,待遇不可能低于10K。
这样吧,看看这几道题。
几个运维笔试题,感兴趣的可以讨论一下,没有答案。
1、给定一个nginx的日志accesslog,请输出实时的qps(request per second)。
2、现有一个100G大小的日志文件,由于时间因素,只允许读取一次,但需要分别将含有两个pattern的行输出到两个文件中,请给出方案。
3、发现某IP无法访问,请给出尽可能详细的诊断方案,定位可能存在的问题。(目标机器宕机、近机房端网络中断、骨干网问题、或者其他可能的问题。)
4、uptime命令的输出中有load average: 024, 030,
024,请(1)解释这里load的数值的含义;(2)说明该数值多大时表示系统负载很高;(3)当系统负载高时,如何找出是什么因素导致负载高的。
5、现在有一个大小约1g的源代码目录(如linux内核源码),需要从机器A上传输到机器B上。请给出两到三种方案,并陈述各方案的优劣。
6、现有一个目录,其中有一百万(数量级)个的小文件,请给出两到三种删除该目录的方法,并陈述各方案的优劣。

有那么多年的甲方运维工作经验,不妨可以关注智能运维厂商。在一个未来十年内前景看好的行业,借助过去经验的积累和自身的努力,前景光明。
是不是转做业务,要看个人的性格和能力所在。如果很爱跟人打交道,做业务不错;如果更喜欢技术,不浪费已有的经验才是上策。
一点浅显看法,供参考

工作强度低不低是看各个公司的,在A公司运维的强度非常高,基本都是晚上回去还要加班做一些事情,主要原因是人比较少;而B公司的运维强度和人均的负荷成正比,这个我虽然为B服务过(以前我在一家B的供应商呆过,去过B做过一段时间),但是现在B怎么样我不太清楚;2运维工程师工作的技术含量会不会低一些 所以压力小一些– 运维的工作性质主要还是维持运行的平稳和高效,工作主要有安装调试软硬件,根据不同开发项目配置服务器软件,监控等事情;相对开发来说更加偏向 *** 作系统或数据库(这是两个方向,一般是分开招人的);而开发的偏向于开发软件和一些中间件,数据库和系统一般就由运维的人把关;我个人认为: aIT运维工程师发展的方向。DBA偏向软件,而OS管理员和network(比如cisco)管理员偏向软硬件结合,还有一种人就是纯粹玩硬件的(安装服务器硬件、机柜什么的); c 相对开发,运维的经验学习成本是比较高的,就是说你不在一定的实用环境下是没法学会真本事的,而开发你坐在家里就可以摸索一个大概出来;而运维的知识更新的速度相对慢,10年前的DBA知识更新可能只有50%,而他本人会非常值钱,而2年前java的一些内容可能都没有发明出来;除非你在开发做到管理职位,否则纯技术开发学习更新的代价会非常高;反过来说:技术开发适合比较喜欢新鲜、喜欢创新的人,而运维适合循规蹈矩比较踏实的人;3在B,运维工程师的薪水只有开发的2/3左右你们公司也是一样吗 –我个人认为:公司给不同position的薪水肯定是和他预估这个职位重要性和工作强度成正比的,但和未来发展是否正比就不得而知了,这在B内部是有可比性的,至于A如何,我不太清楚,应该相差不大,毕竟A的运维已经是全球领先的,而且人数非常少;4IT运维工程师发展前景怎么样,会不会以后的发展空间比较小– 所谓IT运维工程师发展空间是要结合你个人的性格,资深DBA之类的人在地球上还是很稀缺的,我知道ebay china operating center的DBA有开宝马上班的,而且运维不是吃青春饭,越老越吃香,可以说是个平滑的上升直线,而开发如果你只是一个执行者和coder,恐怕就是一个开始猛涨后面猛跌的曲线,毕竟开发知识代谢成本太高,过了30就走下坡路; 推荐阅读◆外籍IT运维管理人员有何难处◆网络运维管理工程师四则故事解读◆系统运维工程师技能都应包含哪些◆优秀运维管理工程师成长手册 本文来自互联网,仅供参考

一、运维方法
技术层面:
随着信息技术的发展以及企业业务的不断扩张,运维人员所面临的系统架构越发的复杂,关联度越发紧密。对运维人员的要求也会越来越高,打造个个都是高手,对业务系统了如指掌。
1、需要运维人员快速转变观念,学会通过主动运维的方式应对复杂多变的 IT 问题,保证业务系统的稳定。
2、更多的站在客户的层面思考问题,解决问题。
3、使用集成的运维平台,在业务系统没有感知的情况下实现了业务的变更、升级。
运维文档层面:
一个好的系统或者项目,必定有很多的文档进行支撑。
1、系统建设前期,一定要做好系统的需求文档、设计文档、实施文档。在系统建设中要依据前期的文档进行实施和设计,并生成系统相关的问题总结文档和更新实施文档。
2、系统建设完成后,要基于系统的业务能力和使用对象编写 *** 作手册和运维手册等。
3、业务在交付一定要文档同行。否则系统上线后问题层出不穷,导致运维人员手忙脚乱,不知道从何下手处理,往往会让运维人员绕很多的弯路,错失良机。
4、文档归类保存:文档也分好多种,比如配置文档、实施文档、设计文档、系统规范性文档、项目管理文档等等。做到一式两份,运维部门一份,档案室一份。
5、要求运维人员一定要具备相应的文档编写能力和整理能力。同时一定要严格按照之前的文档进行实施,有问题要学会及时沟通,并把修正后的问题更新到文档中。
6、建立知识库:把运维过程中出现的问题及解决办法和思路,另外最重要的是运维事件的总结,记录在案。
运维流程层面:
1、建立运维流程。要求运维人员一定要基于一个既定的规则来干活。
2、通过流程确定事件责任。业务人员专注点与运维人员的专注点不同,责任也不同。
3、使用ITIL 了(即 IT 基础架构库(Information Technology Infrastructure Library,ITIL,信息技术基础架构库)。ITIL 为企业的 IT 服务管理实践提供了一个客观、严谨、可量化的标准和规范。
二、运维人员技术
正所谓工欲善其事,必先利其器。很多的企业都在强化以用户服务为中心,专业技术为驱动的理念,可见拥有过硬的技术是多么的重要。
1、运维人员必须掌握的技能:
运维对技术的要求是很高的,首先运维人员要对自己所负责的系统有较深的理解,全程参与系统的设计、实施与运维。一定要具备相关领域的技术积累,有较丰富的设计或者排错经验
同时运维人员具备以下软实力:如沟通能力、合作心态和文档编写能力。
2、运维人员一定要对现在的主流技术有一定的涉猎(云计算、边缘计算、大数据、AIOps、人工智能、深度学习等等),要与时俱进。
3、经常参与线上或者线下的相关讨论和交流学习。了解目前流行的 IT 技术,并学习它,思考如何将其用于企业的业务中,为企业创造价值,提升运维效率。所以具备主流技术的捕捉能力,也是运维人员的必修课之一。
三、运维现场监控层面
监控的目的就是防患于未然。通过监控,运维人员能够及时了解到企业网络的运行状态。
一旦出现安全隐患,可以及时预警或者是以其他方式通知运维人员,让运维监控人员有时间处理和解决,避免影响业务系统的正常使用,将一切问题的根源扼杀在摇篮当中。现在的监控工具可以在监控指标触发时,自动修复一些故障,但是它最多帮你做些简单的自动化任务,更高阶的自动化任务需要运维人员具备较深的脚本和系统知识。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13370558.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-23
下一篇 2023-07-23

发表评论

登录后才能评论

评论列表(0条)

保存