鸟在笼中,恨关羽不能张飞;Survival of the fittest
分类: 系统运维
2012-10-24 16:38:42
我做系统运维工作也好几年了,基本上应付过各种各样的运维环境和工具。从最开始简单的各种应用部署,比如常用的LVS、HAproxy这样的负载应用、Apache、Nginx这类的Web应用,到MySQL数据库的主从结构的部署,以及云计算Hadoop、各种监控(Cacti、Zabbix)、缓存(Squid、Varnish、Nginx、Memcached、Redis)等,无不有所涉足。
此后,更多的工作是根据实际的情况来设计架构。这不仅可以让系统稳定、高性能地运行,还需要在未来的扩展中不影响整个的业务的运行。整体架构的清晰对企业的发展是很重要的,如果上层企业领导不重视或者是外行人领导内行人的话,企业的人力成本、硬件成本等会有更多的消耗。
随着企业的发展、软硬件的增加,有一个健壮的自动化运维平台也是增加效率、减少人力成本,也是很好的方法。可惜很多企业不重视运维,认为只要有个人随便能应付就行,等企业发展起来想做调整也不行了,反而浪费了更多的人力物力。
想做好运维师这个职位,不仅要有相应的技术,还需要在一个具备发展眼光的技术团队和公司。否则只能是混日子,而这不论对公司还是个人都不是一个好的发展。
系统运维师这个职业,就是这样,不断面临新的问题和挑战,也需要不断学习新的知识和概念。不过一路走来,我感觉所有的付出都有所回报,还是值得的。
我工作有七八年时间了,期间也做过技术培训中心的讲师。在教学过程中,我发现很多学生在进入企业后有些是无法胜任工作的,这里不排除一些因为上课不好好听讲、课后不认真练习的学生;另一方面也有可能企业的线上环境比较复杂,再加上自己也没什么职业目标不明确干什么,不重视基础知识积累,实践经验少,根本不会计算流量、软件选型等。所以,我有了写这本书的想法,结合我个人在网站架构上的技术经验和培训时的教学思路,可以帮助初中级读者进行技术方面的一次系统的学习(包括负载、页面级缓存、NoSQL、分布式文件系统、监控)。由浅入深地介绍这些内容,也可以让初中级读者在网站架构上有一个清晰的认识,在多种应用软件中选择适合企业的来完善企业的网站架构。
本书中所提到的系统均为CentOS 5.6,所讲的应用,所提供的脚本均来自于线上生产环境,大家可以直接使用。
希望大家通过学习本书,能够掌握网站架构各种技术的应用,以及在一定程度上可以设置实用的网站架构,使自己的职业技能有一个质的提高。这是我期望看到的,也是我写这本书的目的。
本书的读者对象如下:
q 网站运维工程师
q 系统管理员和系统工程师
q 网络管理员和企业网管
q 计算机相关专业的学生
本书的结构是按一般网站的架构需求顺序来编写的。全书共分为7篇16章。
第一篇是架构规划篇,也就是第1章,主要介绍了对企业网站架构的选型、系统的快速安装及初始化高性能系统的一些参数。
第二篇为负载应用篇,包括第2章到第4章。第2章介绍了LVS+KeepAlived,这是可以媲美硬件负载的开源软件。第3章则简单地介绍了Haproxy,它是提供高可用性、负载均衡以及基于TCP和HTTP应用的代理。第4章介绍的是Nginx的负载功能,它可以按照多种方式对后端的应用服务器做负载均衡。这些内容都是网站前端必然用到的知识,建议大家多花些精力和时间学习。
第三篇为页面缓存篇,包括第5章、第6章和第7章。第5章介绍了老牌的代理服务器和Web缓存服务器软件Squid。第6章介绍相对更为高性能的缓存软件Varnish。第7章介绍了应用在流量不大环境中Nginx的缓存功能。
第四篇为Web服务器篇,包括第8章和第9章两章。第8章介绍了几乎可以在任何平台上运行、世界使用排名第一的Web服务器软件Apache。第9章介绍了一款轻量级软件Nginx,其并发能力在同类型的Web服务器中表现较好,此外,还简单介绍了Lighttpd的安装和配置。
第五篇是数据缓存篇(NoSQL),包括第10章、第11章和第12章。第10章首先对NoSQL的概念进行简单介绍,然后,介绍了Memcache的机理、安装和使用。第11章则介绍了拥有更多的Value类型、持久化和主从功能的Redis。第12章介绍了基于分布式文件存储的数据库MongoDB。
第六篇为文件服务篇,包括第13章和第14章。第13章介绍了一个具备容错功能的网络分布式文件系统MFS,它可以将数据分布在网络中不同服务器上。第14章介绍了Hadoop,它不仅仅是一个用于存储的分布式文件系统,而且可以用来在通用计算设备组成的大型集群上执行分布式应用框架。
第七篇监控应用篇,也是最后一篇,包括第15章和第16章。第15章介绍了各大IDC都在使用监控流量的Cacti。第16章介绍了Zabbix,这是一款基于Web界面的提供分布式系统监视以及网络监视功能的软件。
附录部分分别给出了ipvsadm命令参考、HAProxy关键字列表、Squid客户端命令行参考等常用的信息。
大家可以根据自己的需求选择阅读侧重点,不过我还是希望你能够按照顺序来阅读,这样不仅仅可以对架构上有一个清晰的认识,还可以对架构中的技术有一个简单的对比。
本书编写体例有以下几点提醒读者注意。
需要输入的命令行,用加粗的等宽字体表示。如下所示:
/usr/local/sbin/keepalived -D -f /usr/local/etc/keepalived/keepalived.conf