自序
写作背景
第一次看见自己的作品发表在《网管员世界》,当时我激动了很久。这对我来说,无疑是个巨大的鼓舞。尽管当时写的那篇短文很简单,但它却为我开启了一扇向前迈进的门,激励着我不断地把自己的工作经验和心得体会,陆续写成文字,然后发表,几年来累计,在杂志、网站正式发表的技术文章尽然有上百篇了。于是有打算把这些文字整理成册出版的愿望,就在我有这个想法的时候,大成通过我的blog注意上我了,于是就有了更进一步的打算。
最初,我们讨论是写一本linux系统方面的内容,以自己的实际经验来讲解怎样更快速有效的学习、使用linux;即以目标为驱动,减少学习过程中的障碍。例如:为了完成安装服务器操作系统这个任务,我们可以放弃安装桌面环境(图形界面)来避免xwindow崩溃这样的障碍;使用主流的网卡,避免操作系统不能识别和驱动网卡等等这样的技巧。由于这样那样的原因,构思了很久,却迟迟没有下手。
因为自己决心写一本原创的、对别人有帮助的书,我经常跑书店去看最近发行的新书,发现linux这一类的书出得是相当的快,几乎是1-2月出一本。于是我开始怀疑自己的动机,在如此多的管理linux系统管理的书籍中,我来写一本比已有的,会有多少优势?实话说,我没有太大的信心。曾经有段时间,我一看见大成msn上线,就很紧张,害怕他问我进度。另外一方面,我自己已把话放出去,告诉朋友们我要写书了,隔三岔五也有朋友打听进展情况,因此对于我还是比较有压力的。2009年春节一过,大概就2个星期的样子,我把现在公司的网络架构基本改造完成,于是工作方面的压力就小了很多,也更有时间来考虑写书这个问题了。
有一天,我在回顾近期所做的工作时,突然发现自己有了很好的写作素材—把自己这段时间改造运营环境的想法和实际操作写出来,不是很好的事情么!何况市面上还没有这种类型的图书。于是我便放弃先前的想法,把目标转移到用开源软件/工具部署和运营千万量级的互联网环境这样一个场景上。
那么这段时间我又做了什么样的事情呢?下面简单总结一下:在刚接手这个运营环境的时候,它是一个存在单点故障、不具备扩张性的架构,虽然也用到了nginx这样比较新的web环境,但离理想状态还差得远。于是我就准备对其进行改造,构建一个高可用、可扩展的运营环境。幸运的是,这个事情得到大力支持和鼓励;通过几个月的规划和实践,基本上作成功了。改造后的环境,使用了当前比较流行的技术,这些技术和方案包括但不限于:lvs+keepalived+failover、dns视图实现简单的cdn功能、nagios服务监控、mysql数据库主从复制、moosefs分布式文件系统实现高性能高可用文件共享、postfix邮件系统等等。
尽管上面提到的每项技术/方案都足以单独写成一本书,但在这里,我只想把这些开源工具做一些组合和取舍,一方面满足实际需求,另一方面也算是对开源的推广做些小小的贡献。
本书的组织形式
本书的一共包括十三章,从简要说明选择开源技术作为运营环境开篇,到选定平台及工具的部署实施,以实例展示如何使用开源工具,来实现用户访问量在1000万这样的一个级别的站点功能。
在本书中,也穿插了一些非技术方面的描述,如在系统运营中,有哪些日常事务、服务扩展该怎么着手、以及在运营中有哪些策略及技巧等等。我自己的本意是希望读者能够从书中获得各自想要的某些部分,或多或少的理解我的想法和思路。如果原本照搬,并不能保证你的成功率,因为各自的需求是不同的;个人认为,最重要的是方法和策略,因此书中贯穿了本人的诸多个人看法和主张,大家可做参考。
本书的特点
1、 原创性。本书内容完全来自实际工作经验的积累和思考。与市面大部分书籍不同的是,书中很多地方阐述了个人的观点和主张。尽管这些想法不一定准确,甚至可能存在错误,但我认为,这肯定比没有思想的书有价值。
2、 真实场景再现。除IP地址为规避风险做了处理而外,其余的内容全部来源于真实的生产运行环境。当前,一些不负责人的攒书人,仅仅在虚拟机上部署一个环境,简单测试一下,截几个图,就能拼一本书;这些人哪里知道,在大负荷、高并发情况下,情况会是什么样子?我常称这种环境为“一个用户访问”的应用。
3、 使用较新的稳定版本。除了第五章“postfix邮件系统外”,所有的章节都以当前最主流的版本做例。
4、 当今最主流的互联网架构技术:云计算、负载均衡、分布式文件系统、cdn等。在行文上,对这些技术的说明是很详尽的,远非那些蜻蜓点水式的拼凑文章可比。
5、 本书紧扣高可用、可扩展这个主题,以局部高可用、可扩展为基础,从而实现整体运行环境的高可用、可扩展性。
6、 尊重他人的知识知识产权。书中凡是引用或使用他人的程序/脚本等,一些是征得原作者的同意;不管何种情况,有引用或使用的地方,都在书中注明了原始出处。
7、 开源的解决方案。如果您是商业软件的拥护者,可能本书不是你所期望的。
由于本人的学识、经验所限,即便本人竭尽所能力图完美,但不足或错误仍然可能存在。对于这些不足和错误,望行家批评指正,不甚感激。
致谢
全书的撰写,花了我大概3年的时间。尽管所有的内容都是我一个人完成的,对于我这样对键盘不是很熟练的人,确实是个挑战。但是,如果没有其他人的帮助和鼓舞,完成这个工作将难以想象。
本书能以完成,离不开各方人士的大力支持,特在此列表:
感谢我的妻子,是她在哪些纷繁复杂的柴米油盐中为我提供合适的营养。
感谢我的儿子羽玄,你的到来为我们增添了无比的乐趣,要知道,本书的部分文字,就是在产房等待小家伙的诞生过程抽空敲出来的。
感谢恩师全真龙门派26代传人王崇静先生,您传授的内功心法将使我受益终身。
感谢挚友王宝辉先生,你的无私帮助让我终身难忘。
感谢引路人杨文飞,是他为我打开了这扇可以展现自己能力的大门。
感谢小废物,你的鼓动和提供展现自我的机会对我的进步有莫大的帮助。
感谢大成的耐性,你一直的期待让我无法放弃。
感谢尚观科技的郄晓烨先生,我对我们一起在闷热的屋子录制视频记忆深刻。
感谢盛大游戏技术保障中心资深研究员、总监陈桂新先生;sohu运维经理窦喆先生;梁昌泰先生;第一视频集团首席技术官王宇飞;去哪儿网副总裁谌振宇;Cdnetworks China 技术总监王晓东;太平洋网络运维总监龙浩;58同城技术总监章杰等人的大力支持。
感谢蒋宇捷为本书提供perl脚本。
感谢周浩为本书提供hadoop相关程序代码。
最后感谢那些对开源事业做出贡献的人们,如章文嵩、Pawel Kalinowski。