【译文精选】编者注:本文是SixApart的MySQLDBADormando在2008年总结的一套运维秘籍。小编看到了Google系统管理员TomLimoncelli前天在EverythingSysadmin上推荐了这篇文章,并表示这篇文章的内容今天仍然适用。看完之后发现确实是一篇不可多得的好文章,经验分享很多,总结的也很全面。现系统频道已将本文全文翻译出来,作为送给所有运维读者的2011年新年礼物。以下为正文。在运维管理的过程中,我发现了很多有价值的秘密。这篇文章是对这些秘密的总结。虽然这些秘诀可能比较“理想化”,但我已经总结出来了,相信会对你有所帮助。Dormando的运维秘籍分为以下三个部分:技术部分交流部分实战部分实战部分现在就修,不晚了如果一个web服务器掉线了,别担心,因为你应该有10个备用的!◆挑出一周中的一天来“清门”。更换任何有故障的硬件。在周末出发前确保一切都井井有条。◆如果突然出现烦人的小问题,早上要做的第一件事就是永久修复它们。日志填满磁盘在上周发生了两次?我们明天再说!如果总是这样,这些问题就会堆积起来……如果你的构建过程是自动化的,利用它来修复一些你可以立即修复的问题,也许是分批修复。自动化一切◆人类不能(轻易地)搞乱脚本任务。◆从第二次开始自动化。如果您是第一次必须手动执行某项操作,请将您执行的操作写入脚本。◆带注释的脚本是完美的文档。与其在20页的文档中详细说明如何安装某些东西,不如编写一个不言自明的脚本。◆可将脚本放入自动化构建过程。如果你想更接近这个目标,你应该把一些经常做的任务变成“零时间”的任务。只做必要的改变◆只做小的、独立的改变。◆如果不需要改变,就保持原样。◆这也意味着你必须弄清楚什么时候做出改变。找出必须更改和升级的内容,将其删除,将其标准化。Designforchange◆这里的Designforchange(编者按:技术文章第一篇也是Designforchange)是针对个人成长的。努力成为快速解决问题的大师。◆如果问题难以快速解决,可以学习一些基础知识,制定清晰的升级路线图。尽管您的新邮件系统可能不是您梦寐以求的具有强大反垃圾邮件功能的庞大系统;但是用干净的配置设置两个postfix邮件服务器会比你想象的更好。◆每个人都倾向于把未完成的项目放在那里而忽略它们。这是你要避免的。尽快将更新的内容付诸实践◆运维工作一般来说就是为了让代码跑得更好。并行化,建立回滚重启机制。◆操作内容包括软件更新、安全补丁、配置变更等。◆使用puppet、cfengine和任何您需要的工具来控制配置。保持干净、简洁且易于浏览。◆文件越少越好。如果你必须在20个文件中的每个文件中添加一行只是为了启动一个新的数据库,那么你的方法一定是错误的。创建简单的模板,不要重新编辑需要手动编辑的数据。标准化,坚持按照规范行事◆OS规范、httpd规范、数据库规范、包装系统规范。◆坚持按照这些规范行事。调整和改进一些方法以使其更有意义。◆永远不要执着于主版本。如果您的产品功能没有明确冻结,您将不得不继续规范,将一些过去抛在脑后。◆你按照规范做的事情越多,你的工具就越有用。用于支持其他运维领域的软件包越多,可以适配的场景就越多。文档◆记录过程◆记录产品◆深树和浅树◆不要让文档变得多余。如果一个脚本的帮助文档比较长,可以参考。好的文档是一个不断改进的过程,需要始终准确无误。◆链接文档与代码、perldoc、pydoc等。◆过时的文档是有害的。留出一些时间来更新它们。当新员工遇到问题时,与新员工坐下来更新文档。◆适当使用问题跟踪系统(issuetracking)。保留操作历史记录非常重要,以避免因DNS故障再次发生而骚扰他人。使用源代码控制工具◆使用git或mercurial。避免使用SVN。◆在源代码管理工具中管理各种配置文件和脚本。◆提供多种代码移植入口。◆保持搬出的严谨性、精确性和可控性。禁止提交无法审查的更改。应该提交的更改应该可以在没有源代码控制工具的情况下轻松测试(在虚拟机环境中,直接在单独的测试机器上)。雇用◆把固执的人和精明的人分开◆不要避免雇用“老前辈”。某个领域的“老前辈”可能已经赶不上技术变革的步伐,以至于您可能不想雇用他们。然而,总有少数“巨星”站稳脚跟。◆不要避免雇用新手。我认识的很多人一开始都是真正的新手(包括我自己!事实上,我一直认为自己是新手)。过了这个阶段,他们会迅速成长起来。现在是建立你的事业的时候了。我相信我们大多数人都是这样的。当然,不包括不学习的人,不上进心的人,做错行业的人。在与供应商保持良好关系的同时避免供应商锁定购买专有硬件的主要缺点是供应商锁定,您必须始终使用该供应商的产品。这可能是一个特殊的SAN、NAS,或者有特殊用途的设备上存储、备份系统等(推荐阅读:Don'tputallyoureggsinonebasket)。尽量避免这种情况发生。如果你按照上面的设计建议,你应该可以很快在不同的平台上搭建测试环境。然后,您可以进行硬件评估并自由选择。◆如果一切都是深奥的、不透明的、未记录的,并且直接依赖于专有的负载平衡器……那么不要使用它,因为你不是免费的。◆善待您最终选择的供应商。如果您在每次购买时都在价格上逼迫他们,那么您最终只会得到一些垃圾硬件。◆有时数据中心有很多潜在的可用资源。尝试在合同中包含一些免费的远程协助服务,例如协商更换硬盘驱动器的细则、供应商的运输/RMA条款以及一些基本硬件的安装。我有一个设备架,我们的人没有费心把它放到架子上……非常好。给开源一个机会nginx,mongrel,lighttpd,apache,perlbal,mogilefs,memcached,squid,OpenBGPD,PF,IPTables,LVS,MySQL,Postgres,etc.在你选择一个值得信赖的、可靠的、昂贵的专有安装程序之前,给开放源一个机会。您会发现使用开源软件意味着您可以自己添加插件、扩展和代码修复,或者您可以外包自己无法实现的功能。在我看来,开源软件非常可靠,在重负载下它们通常比大型昂贵的硬件更可靠。◆“一分钱一分货”的想法是彻头彻尾的谎言。如果您无法获得适合您的开源软件并需要帮助,您可以寻找供应商。如果您有一群聪明、积极进取的人,他们想弄清楚他们的基础架构是如何工作的,那么您将无法抗拒GPL或BSD系统的诱惑。◆MySQL和Postgres都不错。如果您打算使用它们,请权衡利弊。晚上没有什么东西会从你的衣橱里爬出来“吃掉”你的数据。与经过测试且稳定的冗余master<->slaveMySQL集群实例相比,庞大的离线Oracle实例更容易出现问题。◆关于LAMP架构的文章数不胜数。无数知名网站、ISP,甚至企业现在都在使用开源软件。给开源一个机会。最糟糕的结果是浪费了一些时间,而***从你害怕的供应商那里得到了一些好的报价。【.com翻译,转载请注明原译者及出处。】原文:http://dormando.livejournal.com/484577.html【小编推荐】系统管理员需要掌握哪些软技能?为您的生产服务器选择合适的Linux发行版不要阅读令人遗憾的Linux生产服务器shell脚本共享
