运维的85条规则

1.容量第一,优化第二——这条规则在故障发生时生效。在宕机的时候别研究什么优化,先恢复设备。

2.保留所有可以捕获的记录——以 PostgresQL 为例,包括有 WAL 文件,Slony 复制,快照技术,基于硬盘的 DB 版本(快照附带的)

3.不要因为优化引入更多问题。通常我们解决问题时做出来的东西都会转变成之后运维工作的负担。请确认为运维工作开发的那些工具已经完全交付使用。这些东西经常无法正常运行结果要返回开发组重来。更重要的,这种变更请求通常会打破团队原本安排好的工作计划。

4.保持简单,不要让事情变得太复杂,聪明的你一定可以做到的。

5.谨慎使用缓存以保护那些难以水平扩展的资源。当然,如果你可以水平扩展它,那么给他加缓存层就不用考虑太多。一旦用上了缓存层,它的目的应该是提高最终用户的访问性能,而不是增加网站的容量。否则,你不过是给自己加上了一个新的非常不可靠的瓶颈。他们潜在的负面影响可能危及整个系统。事实上缓存层失效带来的,经常是雪崩式的级联故障。

6.不要什么都自己写代码实现,也不要什么都从厂家买——要在适当的时候采用适当的工具。

7.谈判——和真正有实力的厂家谈判的唯一办法就是提前做好功课,准备好一切可行项。这样一旦有必要,你可以从你的首选厂家里选择离开。不用搞虚张声势那套了。

8.永远要准备好 N+1 的服务器。如果 N 等于 1,那么不管什么情况都不要动用这个 +1 的设备,专职等待 N 失效后的接管。当你使用冗余的服务器来均衡负载的时候,就只有49%或者更少的容量可管理了。通常我们会获得 N+2 的机会——一定要好好利用起来。

9.数据丢失是任何一家公司都不敢冒的风险——这是一条普遍真理。丢失数据造成的损耗远远超过用于保证数据不丢失的花费。

10.随时随地的并行化——这是一种很重要的思维方式。比如,如果 MogileFS 设置为位置感知的方式并且需要实时复制,那么每个 MogileFS 服务器都必须可以复制自己的数据到负载均衡器指定的另一端。只要有可能,尽量实现这种多对多的方式。

11.RTFM——就在今天我还要阅读一对 RAID 卡的说明书来比较他们微妙的差异。魔鬼在于细节。像做家庭作业一样读文档吧!

12.了解每一层上的瓶颈以及如何发现瓶颈。必须要知道你是在磁盘,内存,还是 CPU 上受限制了,搞清楚这个其实挺简单的。

13.要有一个固定的容量管理流程——而且是主动式的,不是被动式的。要知道系统的弱点在哪里,让实际负荷曲线跑到容量曲线之上是极度危险的。

14.不促成失败,也不惧怕改变。

15.不要吸进你自己的废气。别以为你现在的工作结果会变成未来你如何工作的动力。

16.运维人员要写的代码是运维工具,而不是应用软件。

17.不要低估运维团队中项目经理、技术作者、金融分析师的价值。这些人通常比你给的工资值钱多了。

18.监控所有的东西——报警只用在异动的时候,其他的都记录下来供趋势分析。

19.要有一个固定的流程来查看每个地方的趋势数据。

20.不要让监控太吵闹,那样很快就变得没作用了。

21.确保你的监控系统简单易用到公司里每个人都能上手。监控数据指标转换成为业务指标、市场指标和销售指标等等的频率可能高的让你吃惊。

22.只在可以做出相应改变的地方做总结,否则就是白白浪费时间。

23.总结要公开,同时附上事件相关的数据。这样大家可以很容易的找到总结的关键点并且跳转到对应数据。

24.要让技术的每一个点都有人员在负责。

25.同时为这些负责人准备好备份人员。

26.不断发招聘——哪怕没有名额了。

27.做自己最严厉的批评者。不管自己或者自认多聪明,总有可以提高的地方。

28.多往外看,拿自身的水平和尽量多的公司的职位需求做对比。

29.每年参加一个技术交流大会。如果一年有好几个,那选最好的那一个去就够了。

30.买你需要的而不是你想要的。绝不摘下你公司的帽子换上那个写着“对我来说什么最简单最安全”的。

31.只做对业务最好的事情,哪怕这件事是让你滚蛋……

32.问责制度正规化——记录承诺,事后追究没有完成者。

33.不允许重复失败。听起来有些过于苛责了。不过要区分不可挽回的失误和失误的差别。

34.无情——因为对手都是无情的。

35.工作是你要在完成的时候亲自署名的东西。署名同时也意味着完成任务。

36.保持对外的可用联络。

37.创业的伙伴——告诉他们你的专长和能力范围。你会得到免费的产品回报,有时候是生活中的。

38.容量是一个业务/产品问题。也就是说每个页面、上传或者登录等请求的网络消耗,都必须是可见的,以协助完成正确的业务/产品决策。

39.一定要打败预算!运维团队总是预算金额最大的挥霍者。公司的收入目标经常达不到,运维团队应该有很多办法来推迟自己的花费。

40.过去的经验不一定适用于现在乃至将来——多尝试没错,而且要有恰当的测试工具来做这件事。

41.文档——所有事情都应该好好记录成文档。避免团队的新成员绕着圈的找遍全团队逐一了解工作内容。

42.画一张超大尺寸的网络拓扑图,描绘你的数据中心。

43.为你的每个产品都画一个逻辑流程图。

44.维基——让大家可以很容易的发布“如何修复这个问题”的文档并且容易查找。这是技术作者发挥作用的地方,不过维基可以让哪怕非正式的文档或者增增改改的小段落也更好查看。

45.确保团队的每个成员,对,是每一个,都是可以替换的。

46.有些人在家里干活比在公司的时候还好,但有些人却不行。

47.订单打包签订——把硬件需求打包成大订单后再去咨询最大的折扣合同,记得订单里要包括所有一切,比如备件包,租赁条件等等。

48.和供应商保持长期联系,哪怕你换到下一份工作的时候也能联系上他们。

49.给运维团队每个人都配上一切他们可以远程操控的东西——掌上电脑, 3G 网卡,24 寸 LCD 屏幕……你为有才华的人付出得到的回报,远超过在远程雇佣的现场工程师。记住,运维工程师都是电力狂人,他们知道并且能充分利用屏幕上每个像素。

50.除非 Mac 可以运行 office 2007 和 outlook,否则团队里总需要几个 windows。这事很破坏团队的会议安排,联系人管理和邮件列表等等。

51.要有一个简化的采购流程——前提是你要了解自己的预算,并且能够管理好。我们可以从财务报告中得到实际。技术驱动的报告和财务驱动的报告之间通常存在差距。一个好的运维经理可以创建一些模型,将这些差别计入销售总成本中。而理解这些的 CFO 才可以帮助推动业务决策。

52.周会一定要持续举行,对上周的事件逐一总结和问责。

53.创建一个独立的升级系统,来管理那些对运维产生负面影响的代码开发工程。这个想法的来源是:一个同时涉及运维和开发的问题,在运维或者开发的跟踪系统里大多被湮没无视,最后没人理睬,所以给这些问题单独创建一个跟踪系统反而更加简单清楚。

54.产品开发从设计开始的每个阶段都要和运维技术相结合。这样,扩展性,监控和可靠性都融入到产品里。这样同时也可以确保运维负责的硬件采购、监控系统按时到位,运行手册即时更新,最后产品按照预计时间上线运行并且都符合运维标准。

55.像一个真正的公司一样运作——萨班斯法案,WebTrust 安全审计认证,SAS 70 审计标准,Visa 组织和银行等等。如果你真的成功了,这些都是你不得不打交道的。早点开始这些准备其实很简单,不需要太多的知识。不过就是开发一个工单/任务跟踪工具,然后好好使用。把变更控制和管理放进同样的系统里,好好使用。其他信息也放进来。系统就可以帮助我们找出像“上周变更了什么”这类信息。

56.给冗余留空间。一开始或许很难,但是一个没有真正的扩展性和可靠性的系统,才会真正耽误你获得成功的时间。

57.买个 Oracle 标准版(或者微软 SQL Server 标准版)是值得的。如果你可以限制住自己不超过标准版的需求,那就绝对值得买,哪怕你刚刚开始创业。

58.Postgres 和 MySQL 的免费不错。如果你不是特别在意事务完整性,MySQL 其实挺好的。

59.容量设计应该按照每日峰值再上抛 20% 到 30% 的冗余。除非你是个 vmotion(译注:VMWare 的热迁移技术)达人。

60.尽量多读一些贸易杂志。它们通常是免费的,只要你填写一些调查问卷就好了。新闻的价值是巨大的。对了,记得让他们投递到你家里,工作的时候读杂志的机会趋近于零。

61.注意安全。开发人员不应该有生产线的权限,而应该去做代码复核。这是和运维之间的职责分离。然后运维中应该有人控制设置其他运维人员权限的权限。创建一个员工手册,警告大家违反安全条例会有很严重的后果。从一开始就要记住从物理的、逻辑的、功能的各个方面来保护客户的数据安全和隐私。万一有客户要和你对簿公堂,你回忆起来发现自己只是靠勇气和勤奋来保护客户数据,这感觉可不怎么好。

62.控制好访问入口。首先要保证大家可以正常完成工作;其次要确保你知道他们是从哪里进来的。快去实现双因素身份验证方法吧。

63.对于人们访问生产环境必经之路的堡垒机和网关,键盘记录是至关重要的。对于 Windows 可能稍微有点难度,不过有些网关可以提供自动截屏功能。

64.确保有多种办法登录生产环境。不要期望公司的 VPN 在网络中断的时候还能起作用。直接把 VPN 架设在生产环境里。

65.使用 LDAP 做认证,哪怕你只有 10 台机器,通过复制 passwd 和 shadow 文件的方式来管理,你也要 LDAP 认证。

66.不要低估在 UNIX 环境中一台 Windows Server 2008 设备是多么有用。如果只是因为不懂 Windows,那么去学,而不是贬低它。

67.不要用那些无效的无线方案浪费大家的时间。公司里所有人都在移动,沙发上,会议室里,门口,到处都要上网。千万维护好你的无线路由。

68.总有些人把额外的精力和时间都投入到工作上——直接通过他们的请假单好了。而另一些人恰恰相反只把注意力放在怎么通过自己的请假单。在个人时间安排上,运维人员总是做出巨大的牺牲,他们随时准备凌晨3点爬起床快速响应排障需求。

69.通过集中式的 RDBMS 管理你所有的设备资产。然后复制资产,人员,网络,合同等所有数据到异地。没错,要的是一个在线的实时可用的复制,而不是每天晚上备份到磁带。

70.自动使用多进程以确认安全,包括操作系统或者产品的上线,文件的推送,日志的分析等。

71.自动化操作必须和运维的 RDBMS 数据相关联。

72.设备通常有三种状态——离线,服务中,预备。预备状态就是说正在通过 cfengine、rsync 或者其他你在使用的工具完成配置。服务中就是已经运行着流量了。同时还需要一个状态,这个状态下的设备可以在不提供生产服务的情况下收集或者测试数据。

73.尊重日志数据。在设备下线或者重建之前,一定要先导出日志。

74.如果业务飞速发展让你没有太多时间来做优化,那就尽力锁定一切——进程还能工作,就不要改变它,直到后来有了绝对必要的理由。总之,锁定默认值,等待成长到必要时再审视。

75.你永远无法避免运维工程师在你基础设施最关键的地方犯点啥错——比如在哪台机器上不小心执行 rm -rf / 命令。

76.为团队保持好玩和有趣的气氛——如果他们不再享受他们的工作,他们就会找别的事情来消遣。要让团队有主人翁意识,运维不是哪个经理的个人任务。

77.提供 99.999% 可用性的真正价值在于让我们有能力保持灵活。这意味着当你需要的时候可以充分利用系统冗余。物理变更、设备迁移、代码修改和回退等等都游刃有余。这个对于公司本身价值巨大,甚至比对客户还大。

78.如果你能做到 99.999%,那就给客户一个 100% 的SLA承诺。

79.不要湮没软件热更新的能力。应该被湮没的是你自己回滚或者转移到旧版本代码的能力。压根就不应该“处理”这种徒劳的失败转移。当事情变得不如人意的时候,你更应该做的是找个大玩意儿来挡住你的肥屁股。CYA(译注:Cover Your Ass,就是前面说的盖屁股) = 保持敏捷 = 成功的公司。

80.记住你为客户构建产品的思路里每一步的原因和目的——不管你部署给最终用户的是什么,把这些放在最先考虑,即你所有(基础设施、流程和人员)的设计都是为了提供最好的服务和产品。

81.第一次就要成功。很少有机会让你回去重新开始的。重做是对公司资源的巨大浪费。

82.多联系业内的合作伙伴、盟友和类似的企业,看看他们的运维是怎么做的。很可能他们碰到了跟你一样的挑战,而解决的更为巧妙。不要害怕分享自己的经验和处理过程,因为别人也会回馈的。

83.招人就要招那些足以让自己担心会被挤掉目前工作的,招那些你欣赏和可以学习的榜样,招那些你愿意和他一起工作的。这感觉甚至超过你招聘一个工作考评为A的员工。

84.IT 和运维是完全不同的两个概念。一个不错的运维经理应该可以管理好企业 IT,但是一个传统的 IT 工程师很难有能力处理互联网运维任务。

85.当你开始一份新工作或者在每年的起始,都应该去争取预算。这不是说滚着那个滋滋响的轮子往前走(应该是指循规蹈矩照本宣科),而是要一个基于历史数据做出的优秀的文案。如果你正在评估一份新工作,请确认你完完全全的知道预算以及预算的来源。同时,还应该有的是改善这份预算的权利。

(0)

相关推荐

  • 运维的85条规则

    1.容量第一,优化第二--这条规则在故障发生时生效.在宕机的时候别研究什么优化,先恢复设备. 2.保留所有可以捕获的记录--以 PostgresQL 为例,包括有 WAL 文件,Slony 复制,快照技术,基于硬盘的 DB 版本(快照附带的) 3.不要因为优化引入更多问题.通常我们解决问题时做出来的东西都会转变成之后运维工作的负担.请确认为运维工作开发的那些工具已经完全交付使用.这些东西经常无法正常运行结果要返回开发组重来.更重要的,这种变更请求通常会打破团队原本安排好的工作计划. 4.保持简单

  • Python自动化运维之Ansible定义主机与组规则操作详解

    本文实例讲述了Python自动化运维之Ansible定义主机与组规则操作.分享给大家供大家参考,具体如下: 一 点睛 Ansible通过定义好的主机与组规则(Inventory)对匹配的目标主机进行远程操作,配置规则文件默认是/etc/ansible/hosts. 二 定义主机与组 所有定义的主机与组规则都在/etc/Ansible/hosts文件中,为ini文件格式,主机可以用域名.IP.别名进行标识,其中webservers.dbservers 为组名,紧跟着的主机为其成员.格式如下: ma

  • 很实用的Linux 系统运维常用命令及常识(超实用)

    作为Linux运维,需要了解Linux操作系统的基本使用和管理知识,下面我们小编给大家介绍下Linux运维需要掌握的命令,想成为Linux运维的朋友可以来学习一下. 1 文件管理2 软件管理3 系统管理 4 服务管理5 网络管理6 磁盘管理 7 用户管理8 脚本相关9 服务配置 ================================== ---------------------------------- 1 文件管理 ---------------------------------

  • python ansible自动化运维工具执行流程

    ansible 简介 ansible 是什么? ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能. ansible是基于 paramiko 开发的,并且基于模块化工作,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来

  • python开发的自动化运维工具ansible详解

    目录 ansible 简介 ansible 是什么? ansible 特点 ansible 架构图 ansible 任务执行 ansible 任务执行模式 ansible 执行流程 ansible 命令执行过程 ansible 配置详解 ansible 安装方式 使用 pip(python的包管理模块)安装 使用 yum 安装 ansible 程序结构 ansible配置文件查找顺序 ansible配置文件 ansuble主机清单 ansible 常用命令 ansible 命令集 ansible

  • Python+微信接口实现运维报警

    说到运维报警,我觉得都可以写个长篇历史来详细解释了报警的前世来生,比如最早报警都是用邮件,但邮件实时性不高,比如下班回家总不能人一直盯着邮箱吧,所以邮件这种报警方式不适合用来报紧急的故障,日常磁盘利用率监控什么的可以用它来报没问题,网站宕机不能访问这种故障,用它就明显不合适了,那对这种业务稳定性要求比较高的业务,后来就发展成了用短信,就是公司买个短信机,提供一个http接口,然后运维人员写脚本把收集到的异常数据写入文件,然后脚本实时检测如果这个文件不为空,就调用短信机接口把文件里的内容发送出去,

  • 运维角度浅谈MySQL数据库优化(李振良)

    一个成熟的数据库架构并不是一开始设计就具备高可用.高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善.这篇博文主要谈MySQL数据库发展周期中所面临的问题及优化方案,暂且抛开前端应用不说,大致分为以下五个阶段: 1.数据库表设计 项目立项后,开发部根据产品部需求开发项目,开发工程师工作其中一部分就是对表结构设计.对于数据库来说,这点很重要,如果设计不当,会直接影响访问速度和用户体验.影响的因素很多,比如慢查询.低效的查询语句.没有适当建立索引.数据库堵塞(死锁)等.当然,有测试工程师的团队

  • 运维人员处理服务器故障的方法总结

    我们团队为上一家公司承担运维.优化和扩展工作的时候,我们碰到了各种不同规模的性能很差的系统和基础设备(大型系统居多,比如CNN或者世界银行的系统).要是再赶上修复时间紧.奇葩的技术平台.缺少信息和文档,基本上这过程都会惨痛到让我们留下深刻的记忆. 遇到服务器故障,问题出现的原因很少可以一下就想到.我们基本上都会从以下步骤入手: 一.尽可能搞清楚问题的前因后果 不要一下子就扎到服务器前面,你需要先搞明白对这台服务器有多少已知的情况,还有故障的具体情况.不然你很可能就是在无的放矢. 必须搞清楚的问题

  • 10大HBase常见运维工具整理小结

    摘要:HBase自带许多运维工具,为用户提供管理.分析.修复和调试功能.本文将列举一些常用HBase工具,开发人员和运维人员可以参考本文内容,利用这些工具对HBase进行日常管理和运维. HBase组件介绍 HBase作为当前比较热门和广泛使用的NoSQL数据库,由于本身设计架构和流程上比较复杂,对大数据经验较少的运维人员门槛较高,本文对当前HBase上已有的工具做一些介绍以及总结. 写在前面的说明: 1) 由于HBase不同版本间的差异性较大(如HBase2.x上移走了hbck工具),本文使用

  • Linux运维基础交换分区和lvm管理教程

    目录 1.交换分区SWAP 1.1创建swapfile 1.2格式化swap分区 1.3检测当前swap分区情况 1.4开启新建的SWAP分区 1.5关闭新建的swap分区 1.6给新区增加一个交换分区swap 2. lvm管理 步骤lvm 1.准备物理磁盘(加磁盘参考上一博客) 3.卷组管理 扩展卷组,将新磁盘加入卷组 4.逻辑卷管理 逻辑卷扩展的容量不能超过卷组的容量 对ext4文件系统的逻辑卷裁剪容量 首先自己创建一个1G的逻辑卷作为裁剪的对象 1.如果已经挂载,必须先卸载 2.裁剪容量,

随机推荐