《构建高可用Linux服务器 第3版》—— 导读-阿里云开发者社区

开发者社区> 华章出版社> 正文

《构建高可用Linux服务器 第3版》—— 导读

简介:

ebb9edfa4c0f99d9a9329786ec955ae31b745bdc

前言

我的系统架构师之路

2004年我初识UNIX开源系统。那会儿我正在一家大型国有企业做系统管理员,负责值守公司的Windows Server 2000服务器。当时“震荡波”和“冲击波”这两种病毒很猖狂,虽然我们在防毒方面投入了大量的精力和金钱(当时购买的都是正版Windows 2000系统和正版瑞星杀毒软件),但新上线的机器,偶尔也有遗漏的时候,没有打补丁的机器无一幸免,所以对这个问题比较头疼。有一次去朋友的公司(某省太平洋寿险下面的一个分支机构)参观,我发现他们的服务器和终端系统都很奇怪,只有纯字符界面,没有任何图形界面。一问才知道是UNIX系统,因为运行机制不一样,所以Windows Server下的病毒丝毫影响不了它们。而且这些服务器很稳定,基本上不宕机。当时很是羡慕,心想要是哪一天我们的服务器也换成UNIX系统,那“冲击波”和“震荡波”就奈何不了我们的服务器了,而且也不会有蓝屏现象,那该多好。
后来有幸到北京一家大型广告公司上班,公司的核心业务是CDN系统,所用的服务器基本上都是CentOS系统,内部用的文件服务器是Samba,Web服务器是Apache和Nginx,NAT路由器是iptables,装的几乎全部是CentOS 5.1 x86_64,仅有一台服务器安装的是Windows Server 2003(供程序员开发.NET程序之用)。公司的这套CDN分布式系统要负责处理所有的流量,即使在高峰期PV和并发量特别大的时候,网站也非常稳定。
我当时对CentOS系统产生了浓厚的兴趣,尝试改掉自己多年使用Windows的习惯,换成了纯字符操作,用Vim编辑CentOS下面的配置文件,并且尝试用Shell完成自动化工作。渐渐地,我发现自己越来越喜欢CentOS系统了。公司有一台vsftpd服务器,3年没有重启了,这很令人吃惊。后来我又得知另外一位从事Linux运维工作的朋友所在的公司有一台很老的RH9服务器,因为负责的是公司的核心业务,已经9年没有重启了,当时更加感到震撼,这更加坚定了我要学好Linux/UNIX的决心。
后来在担任项目实施工程师期间,接触到一些客户,他们的核心网站的并发量并不是太大,但比较重要,所以他们都要求部署Linux集群,有时指定要部署LVS或HAProxy负载均衡器。在项目实施的过程中,我发现LVS/HAProxy的负载均衡能力确实非常强大,其能力可以与硬件级的F5负载均衡器相媲美。很快我就被Linux集群这门艺术迷住了,我自己也研究了Nginx+Keepalived这种负载均衡高可用架构,并且在许多项目中成功实施,客户反映效果也不错,所以我开始在很多开源社区推广这些技术。
现阶段我的职务是公司的系统架构师,主要工作是设计、实施及维护本公司的电子商务网站,相对于CDN分布式系统而言,它没有节点冗余,所以对Linux集群技术的要求更高。我前期对所有的网站应用都做了双机高HA、LVS/HAProxy+Keepalived和Nginx+Keepalived,以及DRBD+Heartbeat+NFS文件高可用,MySQL数据库用的是DRBD双主多从架构。后期随着流量和规模日益增大,新机器上线也日益频繁,我采用了Puppet自动化运维来管理线上机器,避免重复劳动。另外,由于电子商务网站涉及支付的问题,所以对安全性的要求非常高,我们平时都会从网络安全(硬件防火墙)、系统安全、代码安全和数据库安全这些方面着手,尽力避免一切影响网站安全的行为。虽然工作辛苦,但看着自己架构的网站顺利稳定运行,心里还是很有成就感的,这也是我目前工作的主要动力。

撰写此书的目的

从事系统集成/管理/架构方面的工作已经有9年了,在工作期间,我曾经有幸担任了一段时间的红帽RHCE讲师,到东北大学等高校推广红帽Linux系统。在教学过程中我发现,很多学生在进入企业后都无法胜任自己的工作,更谈不上正确地规划自己的职业道路了。一方面因为企业的生产环境具有一定的复杂性和危险性,另一方面市场上入门书居多,缺乏能真正指导读者解决实际问题的书籍。例如,很多书都只是给出了比较基础的操作及理论,而相对于线上环境,根本没有涉及如何安全操作、如何避免误操、PV、UV、并发数、磁盘I/O压力及数据库压力等相关话题。
之所以写这本书,一方面是想对自己这些年的工作经验和心得进行一次系统的梳理和总结;另一方面是想将自己的经验分享给大家,希望能帮助大家少走弯路。通过本书中的项目实践(包括Linux集群、MySQL高可用方案及Puppet自动化运维工具的使用)和线上环境的Shell脚本,大家能迅速进入工作状态。书中所提供的Shell脚本和iptables脚本均来自于线上的生产服务器,大家均可直接拿来用。关于Linux集群的项目实践和MySQL的高可用方案,大家也可以根据实际项目的需求直接采用,以此来设计自己公司的网站架构。
希望大家能通过本书掌握Linux的精髓,轻松而愉快地工作,从而提高自己的技术水平,这是我非常希望看到的,这也是我写本书的初衷。

第3版与第2版的区别

本书是第3版,相对于第1版和第2版而言改动比较大,第3版涉及的Linux服务器系统以现在主流的CentOS 5.8 x86_64为主(第2版以CentOS 5.5为主)。在写作过程中吸收了读者对上一版本的许多意见和建议,继续修正第2版的排版错误、人为错误及其他问题。如果大家能够完全掌握第3版新增的章节和内容,相信无论是在平常的自动化运维工作方面还是系统架构设计方面都会有自己的认识和见解了。
具体改动如下:
考虑到XEN虚拟化目前应用范围不是特别大,所以删除了第2版第2章Linux服务器虚拟化章节,部分内容并进了附录。
考虑到目前企业中多采用商业版的邮件系统,所以删除了第2版第8章如何构建开源免费的企业级邮件系统。
限于篇幅,再加上编辑希望第3版是一本纯粹的技术书籍的原因,删除了第2版第9章系统管理员在企业中的职业定位及发展方向,部分内容会在我的个人博客发出。
由于现在MySQL在互联网项目中的比重日益增大,所以我特意将第2版第5章构建高可用Linux集群中的MySQL部分重新整理,增加了MySQL性能调优级高可用案例分享章节;考虑到第2版中MySQL双主多从高可用配置方案的受众群范围较小(游戏行业),这里用线上的DRBD+Heartbeat双机高可用方案来代替;还增加了利用sysbench对磁盘I/O作性能测试等新内容,对MySQL有兴趣的读者朋友也可以重点关注这一章节。
构建高可用Linux集群章节增加了千万级PV网站系统架构拓朴图,限于篇幅,集群章节的内容暂时没有考虑前端有CDN的系统架构方案。
另外,现在自动化运维是系统运维的流行趋势,所以增加了分布式自动化部署管理工具Puppet章节,对负载均衡技术有兴趣的朋友可以关注Nginx在Puppet部署中的应用。

目录

前 言
第1章 Linux服务器的构建与优化
 1.1 使用PXE+DHCP+Apache+Kickstart无人值守安装CentOS 5.8 x86_64
 1.2 全面了解Linux服务器
  1.2.1 查看Linux服务器的CPU详细情况
  1.2.2 查看Linux服务器的内存使用情况
  1.2.3 查看Linux服务器的硬盘使用情况
  1.2.4 查看Linux系统的平均负载
  1.2.5 查看Linux系统的其他参数
 1.3 Linux服务器的网络配置
  1.3.1 配置Linux服务器的网络
  1.3.2 查看Linux服务器的网络连接
  1.3.3 查看Linux服务器的进程
  1.3.4 在CentOS 5.8、FreeBSD 8.1及Windows下添加静态路由
 1.4 Linux服务器的日志管理
  1.4.1 系统日志syslog.conf的配置详解
  1.4.2 Linux下的日志维护技巧
 1.5 Linux服务器的优化
  1.5.1 如何根据服务器应用来选购服务器
  1.5.2 CentOS 5.8最小化安装后的优化
  1.5.3 优化Linux下的内核TCP参数以提高系统性能
 1.6 用开源工具Nagios监控Linux服务器
  1.6.1 CentOS 5.8下的监控工具
  1.6.2 Nagios应该监控的服务器基础选项
  1.6.3 工作中的Nagios使用心得
 1.7 小结

第2章 生产环境下服务器的故障诊断与排
 2.1 快速排障的重要性和必要性
 2.2 安装系统时容易发生的错误描述与处理方法
  2.2.1 忘记CentOS 5.8的root密码怎么办
  2.2.2 正确重设root密码
  2.2.3 安装FreeBSD 8.1时不要设置/boot分区
  2.2.4 安装CentOS 5.8时忘了关闭iptalbes和SELinux
 2.3 网络配置时容易发生的错误描述与处理方法
  2.3.1 安装CentOS 5.8时忘了激活网卡
  2.3.2 CentOS 5.8网卡文件备份的正确方法
  2.3.3 在CentOS 5.8下如何正确配置网关
  2.3.4 防火墙初始化的注意事项
 2.4 系统维护时应该注意的地方
  2.4.1 服务器硬件改动进入了Emergency模式
  2.4.2 如何以普通用户的身份编辑无权限的文件
  2.4.3 在Linux下配置最大文件打开数的方法
  2.4.4 在crontab下正确防止脚本运行冲突
 2.5 紧急处理线上服务器故障的办法
  2.5.1 更改Administrator密码导致计划任务无法执行
  2.5.2 CentOS 5.8的root密码被恶意篡改
  2.5.3 bash文件损坏该如何正确处理
  2.5.4 正确操作nohup让程序始终在后台运
  2.5.5 Nginx负载均衡器出现故障
 2.6 检查机房应注意的位置和细节问题
 2.7 系统维护时应注意的非技术因素
 2.8 小结

第3章 生产环境下的Shell脚本
 3.1 Vim的基础用法及进阶心得
 3.2 Sed的基础用法及实用举例
  3.2.1 Sed的基础语法格式
  3.2.2 Sed的用法举例说明
 3.3 基础正则表达式
 3.4 Linux下强大的查找命令find
 3.5 汇总Linux/UNIX下的bash快捷键
 3.6 生产环境下的Shell脚本分类
  3.6.1 生产环境下的Shell脚本备份类
  3.6.2 生产环境下的开发类Shell脚本
  3.6.3 生产环境下的统计类Shell脚本
  3.6.4 生产环境下的监控类Shell脚本
  3.6.5 生产环境下的自动化类Shell脚本
 3.7 小结

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接