前言
为什么要写这本书
随着信息时代的迅速发展,尤其是互联网日益融入大众生活,作为这一切背后的 IT 服务支撑,运维角色的作用越来越大,传统的人工运维方式已经无法满足业务的发展需求,需要从流程化、标准化、自动化去构建运维体系,其中流程化与标准化是自动化的前提条件,自动化的最终目的是提高工作效率、释放人力资源、节约运营成本、提升业务服务质量等。我们该如何达成这个目标呢?运维自动化工具的建设是最重要的途径,具体包括监控、部署变更、安全保障、故障处理、运营数据报表等。本书介绍如何使用 Python 语言来实现这些功能点,以及 Python 在我们的自动化运维之路上发挥作用,解决了哪些运维问题等。
为什么是 Python?Python 是一种面向对象、解释型计算机程序设计语言,由 Guido van Rossum 于 1989 年年底发明,具有简单易学、开发效率高、运行速度快、跨平台等特点,尤其是具有大量第三方模块的支持,其中不乏优秀的运维相关组件,例如 Saltstack、Ansible、Func、Fabric 等。大部分运维人员为非专业开发人士,对他们而言,选择一门上手快、技术门槛低的开发语言非常重要。由于 Python 具有脚本语言的特点,学习资源多,社区非常活跃,且在 Linux 平台默认已安装等优势。Python 已经是当今运维领域最流行程的开发语言之一。
2003 年毕业后,我的第一份工作是当 PHP 程序员,人力紧张时还要兼顾美工的工作。时常回想,其实也只有在小公司才能修炼出 “十八般武艺”。在 “非典” 肆虐的岁月,大部分公司都闭门不招聘,一个毕业生能有这样的机会锻炼也显得尤为珍贵。工作中一次偶然的机会看到导师诗成兄在黑漆漆的界面中输入不同指令,第一感觉非常震撼,很酷,联想到《黑客帝国》电影中的画面,与之前接触到的 Windows 系统完全不一样,后来才晓得是 Redhat 9(红帽9)。此后很长的一段时间里,整个人完全沉醉在 Linux 的世界里,处于一种痴迷的状态,那时我还是一个程序员。
到了 2005 年 10 月,看到隔壁公司招聘一名 Linux 系统工程师,抱着试一试的心态去面试,结果出乎意料,我被录用了,这样我就找到了第二个东家—天涯社区。人生的第一个转折点在此酝酿,由于赶上了公司快速发展的阶段,接触到了很多开源技术,包括 LVS、Squid、Haproxy、MongoDB、MySQL、Cfengine 等,并且不断在生产环境中应用所学的技术,取得了非常不错的效果,重点业务的高可用持续保持在 99.99%。期间新的问题也陆续出现,包括如何更好整合各类开源组件,发挥其最大效能,以及如何高效运营。不可否认,具有开发背景的运维人员有着先天优势,可以在不同角色之间进行思考,扩大视野。期间我参与了推动大量标准化、规范化的建设,以此为前提,开发了 “SDR1.0-Linux主机集中管理”、“天涯LVS管理系统”、“天涯服务器管理系统(C/S与B/S版)”、“服务器机柜模拟图平台”、“Varnish 缓存推送平台V1.0” 等平台,这些平台在很大程度上改变了运维人员手工作坊式的工作模式。在释放人力的同时,我看到国内其他公司的同仁也在做同样的事情,突然间有一个想法,就是开源。此时已经是 2009 年,这个想法也得到系统部经理小军认可,同年 12 月陆续在 code.google.com 平台托管,让业界更深入了解天涯社区的技术架构。凭着这些作品及分享的技术文章,我的博客 “运维进行时”( http://blog.liuts.com/ )荣获了 “2010年度十大杰出IT博客” 的殊荣。我还先后参与了 51CTO、IT168、CU 等门户网站以架构、运维为主题的专访,在运维圈得到越来越多同仁的认同。
再谈谈如何与 Python 结缘。接触 Python 是从《简明 Python 教程》开始,由于我有 Perl 与 PHP 的基础,学习 Python 没有太大压力。事实上,Python 的简洁、容易上手以及大量第三方模块等特点,深深吸引了我,让我第二次沉醉于知识的海洋。我很快深入学习了 Func、Django 框架、SQLAlchemy、BeautifulSoup、Pys60、wxPython、Pygame、wmi 等经典模块,同时将所学知识应用到运维体系中,解决在工作中碰到的问题。例如,开发的 “多节点应用延时监控平台” 解决了多运营商网络环境下的业务服务质量监控问题;开发的 “Varnish&Squid缓存推送平台” 解决了快速刷新缓存对象的问题。再例如,删除敏感帖子的时效性要求非常高,需要在后台触发删除后立即生效,与缓存推送平台对接后很好地解决了这一问题;天涯服务器管理系统(C/S、B/S、移动版)实现自助、智能、多维度接入,提高了运维效率,减少了人工误操作,释放了人力资源,同时标准化与流程化得到技术保障与实施落地。
回到主题 “为什么要写这本书”,这一点可以从 51CTO 对我的专访中找到答案。当时的场景是这样的:51CTO:您对开源是如何理解的?天涯社区在过去两年间陆续开源了包含 LVS 管理系统、Varnish 缓存推送平台、高性能数据引擎 memlink 等好几个项目,业内人士对此都十分关注,您认为这给整个产业带来了哪些好处?身为天涯社区的一位运维人员,您认为在这个过程中自己的价值在哪里?刘天斯:开源就是分享,让更多人受益的同时自己也在提高。经常看到很多朋友都在做监控平台、运维工具。事实上功能惊人相似,大家都在做重复的工作,为什么不能由一个人开源出来,大家一起来使用、完善呢。这样对整个行业来讲,这块的投入成本都会降低,对个体来讲也是资源的整合。如果形成良性循环,行业的生态环境将会有很大程度的改善。本人热衷于开源技术,同样也愿意为开源贡献自己一分微薄之力,希望更多的人能支持开源、参考开源。
这就是我的初衷,也是答案。写书的意义在于将 10 年的工作沉淀、经验、思路方法做个梳理与总结,同时与大家分享。最终目的是为每个渴望学习、进步、提升的运营人员提供指导。