描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111582953
本书第4版相对于前3版而言改动比较大,删除了不少内容过时的内容,增补了当前热门的技术知识点。另外,本书除了项目部署时采用的系统没有升级到CentOS6.8x86_64外,其他环境均为CentOS6.8x86_64。此外,在写作过程中采纳了读者针对上一版本提出的许多意见和建议,同时修正了第3版的各种错误及其他问题。具体改动如下:删除了第3版中前3章的内容,增补了Vagrant虚拟化软件的应用,并且重写了生产环境下的Shell脚本;删除了对分布式自动化部署管理工具Puppet的相关介绍,改用了Fabric自动化运维工具;删除了关于开源VPN在企业中部署的章节。附录部分增加了对现在流行的GitLab应用,以及强大的编辑工具SulbimeText3的快捷键方式操作的介绍。
前言
第1章 Linux服务器的性能调优1
1.1 网站架构设计相关1
1.1.1 评估网站性能涉及的专业名词术语1
1.1.2 CDN业务的选项2
1.1.3 IDC机房的选择3
1.2 如何根据服务器应用来选购服务器 4
1.3 硬件对Linux性能的影响9
1.4 CentOS 6.8 x86_64小化安装后的优化11
1.4.1 系统的基础优化11
1.4.2 优化Linux下的内核TCP参数以提高系统性能19
1.4.3 CentOS 6.8 x86_64系统小化安装优化脚本21
1.4.4 Linux下CPU使用率与机器负载的关系与区别23
1.5 服务器调优实际案例25
1.6 小结28
第2章 Shell脚本在生产环境下的应用29
2.1 Shell编程基础29
2.1.1 Shell脚本基本元素30
2.1.2 Shell基础正则表达式30
2.1.3 Shell特殊字符32
2.1.4 变量和运算符33
2.2 Shell中控制流结构45
2.3 Sed的基础用法及实用举例48
2.3.1 Sed的基础语法格式48
2.3.2 Sed的用法举例说明53
2.4 awk的基础用法及实用举例56
2.5 Shell基础正则表达式举例61
2.6 Shell开发中应该掌握的系统知识点68
2.7 生产环境下的Shell脚本74
2.7.1 Amazon Linux系统简介74
2.7.2 生产环境下的备份类脚本75
2.7.3 生产环境下的监控类脚本78
2.7.4 生产环境下的运维开发类脚本84
2.8 小结88
第3章 利用Vagrant搭建分布式环境89
3.1 Vagrant简单介绍89
3.2 Vagrant安装90
3.3 使用Vagrant配置本地开发环境91
3.3.1 Vagrant的具体安装步骤91
3.3.2 Vagrant配置文件详解93
3.3.3 Vagrant常用命令详解95
3.4 使用Vagrant搭建分布式环境96
3.5 小结99
第4章 轻量级自动化运维工具介绍100
4.1 轻量级自动化运维工具pssh介绍101
4.1.1 pssh的安装103
4.1.2 pssh的使用103
4.2 轻量级自动化运维工具Fabric介绍105
4.2.1 Fabric的安装105
4.2.2 Fabric的命令行入口fab命令详细介绍107
4.2.3 Fabric的环境变量设置108
4.2.4 Fabric的核心API109
4.2.5 Fabric的执行逻辑112
4.2.6 如何利用进程池大小来限制Fabric并发进程数114
4.3 Fabric在工作中应用实例114
4.3.1 开发环境中Fabric应用实例115
4.3.2 工作场景中常见的Fabric应用实例116
4.4 小结120
第5章 Linux集群及其项目案例分享121
5.1 负载均衡高可用核心概念及常用软件121
5.1.1 什么是负载均衡高可用121
5.1.2 以F5 BIG-IP作为负载均衡器122
5.1.3 以LVS作为负载均衡器123
5.1.4 以Nginx作为负载均衡器132
5.1.5 以HAProxy作为负载均衡器132
5.1.6 高可用软件Keepalived134
5.1.7 高可用软件Heartbeat134
5.1.8 高可用块设备DRBD135
5.2 负载均衡关键技术136
5.2.1 什么是Session136
5.2.2 什么是Session共享136
5.2.3 什么是会话保持137
5.3 负载均衡器的会话保持机制138
5.3.1 LVS的会话保持机制138
5.3.2 Nginx负载均衡器中的ip_hash算法142
5.3.3 HAProxy负载均衡器的source算法145
5.4 服务器健康检测150
5.5 Linux集群的项目案例分享151
5.5.1 用LVS Keepalived建高可用集群151
5.5.2 用Nginx Keepalived实现在线票务系统154
5.5.3 企业级Web负载均衡高可用之Nginx Keepalived157
5.5.4 HAProxy双机高可用方案之HAProxy Keepalived169
5.5.5 巧用DNS轮询作负载均衡179
5.5.6 百万级PV高可用网站架构设计184
5.5.7 千万级PV高性能高并发网站架构设计187
5.6 软件级负载均衡器的特点介绍与对比193
5.7 四层负载均衡和七层负载均衡工作流程的对比194
5.8 Linux集群的总结和思考196
5.9 小结198
第6章 MySQL性能调优及高可用案例分享200
6.1 MySQL数据库的优化200
6.1.1 服务器物理硬件的优化200
6.1.2 MySQL配置文件的优化201
6.1.3 MySQL上线后根据status状态进行适当优化204
6.1.4 利用tuning-primer脚本进行数据库调优212
6.1.5 MySQL架构设计调优216
6.2 MySQL数据库的高可用架构方案216
6.2.1 生产环境下的DRBD Heart-beat MySQL双机高可用217
6.2.2 生产环境下的MySQL数据库主从Replication同步228
6.3 小结240
第7章 Linux防火墙介绍242
7.1 基础网络知识242
7.1.1 OSI网络参考模型242
7.1.2 TCP/IP三次握手的过程详解243
7.1.3 Socket应用245
7.1.4 其他基础网络知识247
7.2 Linux防火墙的状态机制247
7.3 Linux防火墙在企业中的应用247
7.4 Linux防火墙的语法248
7.5 iptables的基础知识252
7.5.1 iptables的状态state252
7.5.2 iptables的Conntrack记录254
7.5.3 关于iptables模块的说明255
7.5.4 iptables防火墙初始化的注意事项256
7.5.5 如何保存运行中的iptables规则256
7.6 如何流程化编写iptables脚本257
7.7 学习iptables应该掌握的工具260
7.7.1 命令行的抓包工具TCPDump260
7.7.2 图形化抓包工具Wireshark261
7.7.3 强大的命令行扫描工具Nmap264
7.7.4 使用TCPPing工具检测TCP延迟266
7.8 iptables的简单脚本学习267
7.8.1 普通的Web主机防护脚本267
7.8.2 如何让别人ping不到自己,而自己能ping通别人呢?269
7.8.3 建立安全的vsftpd服务器271
7.9 线上生产服务器的iptables脚本275
7.9.1 安全的主机iptables防火墙脚本275
7.9.2 自动分析黑名单及白名单的iptables脚本278
7.9.3 利用recent模块限制同一IP的连接数281
7.9.4 利用DenyHosts工具和脚本来防止SSH暴力破解285
7.10 工作中的Linux防火墙总结287
7.11 小结289
第8章 Linux系统安全相关篇290
8.1 TCP_wrappers应用级防火墙的介绍和应用290
8.2 DDos攻击和运营商劫持292
8.3 Linux服务器的安全防护294
8.3.1 Linux服务器基础防护篇294
8.3.2 Linux服务器高级防护篇295
8.4 Linux系统如何防止入侵301
8.5 小结301
附录A GibLab在开发工作中的实际应用302
附录B Sublime Text3的快捷键操作308
附录C 调试网络接口的利器Postman315
附录D RSYNC及INOTIFY在工作中的应用321
运维工程师工作的演变 随着云计算的流行,运维工程师的工作性质在不断地发生变化,很多新的技能点和知识点需要掌握和学习。工作中,大家经常可以看到DevOps这个词汇。近DevOps为什么这么火?跟近两年云计算的快速普及有很大的关系:云计算平台上的各种资源,从服务器到网络,再到负载均衡都是由API创建和操作的,这就意味着所有的资源都可以“软件定义”,这给各种自动化运维工具提供了一个非常好的基础环境。而在传统的互联网行业,比如CDN行业,由于机器数量众多、网络环境错综复杂,故也需要由DevOps人员来设计工具,提供后端的自动化API,结合公司的CMDB资产管理系统,提供自动化运维功能。
我在公司的职务是高级运维开发工程师(DevOps)、系统架构师,主要工作是设计、实施及维护本公司的电子商务网站,以及核心业务的代码开发工作。相对于CDN分布式系统而言,公司的电子商务网站没有节点冗余,对集群技术的要求更高。所以我前期将所有的网站应用都做了双机高HA,包括LVS/HAProxy Keepalived和Nginx Keepalived,以及DRBD Heartbeat NFS文件高可用,MySQL数据库用的是DRBD双主多从架构,甚至Redis也使用了主从复制的架构设计。随着特殊业务的需求量越来越旺盛(比如定点抢红包活动),我也在网站的架构设计中引入了RabbitMQ消息队列集群。后期随着商业推广量的加大,网站流量、UV及并发日益增大,新机器上线也日益频繁,所以我采用了Fabric、Ansbile等自动化运维工具来管理线上机器,避免运维同事们的重复劳动。另外,由于电子商务网站牵涉支付问题,所以对安全性的要求也非常高,我们平时都会从网络安全(包括硬件防火墙、Linux系统防火墙和WAF应用防火墙)、系统安全、代码安全和数据库安全这些方面着手,尽力避免一切影响网站安全的行为。此外,我的工作职责还包括使用成熟的自动化工具(比如Ansible、Saltstack等),利用Python或Golang进行二次开发,根据实际工作需求,结合公司的CMDB系统,提供稳定的后端API,方便前端人员或资产人员进行调用,这样大家可以利用界面来完成自动化运维工作。工作虽然辛苦,但看到自己设计的后端API和网站能够稳定运行,心里还是很有成就感的,这也是我目前工作的主要动力。
撰写本书的目的 从事系统集成、运维开发、架构设计方面的工作已经有十余年了,在工作期间,我曾有幸担任了一段时间的红帽RHCE讲师,在东北大学等高校推广红帽Linux系统。在教学过程中我发现,很多学生进入企业后都无法胜任自己的工作,更谈不上正确规划自己的职业道路了。究其原因,一方面是因为企业的生产环境具有一定的复杂性和危险性;另一方面则是由于市场上入门书居多,缺乏能真正指导读者解决实际问题的书籍。例如,很多书籍都只给出了比较基础的操作及理论,而相对于线上环境,根本没有涉及如何安全操作才能避免误操,以及在PV、UV、并发、数据库压力和高并发环境下消息队列或任务队列如何设计等相关话题。
之所以写这本书,一方面是想对自己这些年的工作进行一次系统的梳理和总结;另一方面是想将自己的经验和心得分享给大家,希望能帮助大家少走弯路。通过本书中介绍项目实践(包括Linux集群、MySQL的高可用方案及Python自动化运维工具的使用)和线上环境的Shell脚本,帮大家迅速进入工作状态。书中所提供的Shell脚本和iptables脚本均来自于线上的生产服务器,大家均可以直接拿来用。关于Linux集群的项目实践和MySQL的高可用方案,大家也可以根据实际项目的需求直接采用,以此来设计公司的网站架构。
希望大家能通过本书掌握Linux的精髓,轻松而愉快地工作,从而提高自己的技术水平,也希望大家通过我分享的内容,了解运维工作的发展趋势,确定以后的学习目标。这是我非常希望看到的,也是我写本书的初衷。
第4版与第3版的区别 本书是第4版,相对于前3版而言改动比较大,删除了不少过时的内容,增补了当前热门的技术知识点。另外,本书除了项目部署时采用的系统没有升级到CentOS 6.8 x86_64外,其他环境均为CentOS 6.8 x86_64。此外,在写作过程中采纳了读者针对上一版本提出的许多意见和建议,同时修正了第3版的各种错误及其他问题。具体改动如下:删除了第3版中前3章的内容,增补了Vagrant虚拟化软件的应用,并且重写了生产环境下的Shell脚本;删除了对分布式自动化部署管理工具Puppet的相关介绍,改用了Fabric自动化运维工具;删除了关于开源VPN在企业中部署的章节。附录部分增加了对现在流行的GitLab应用及强大的编辑工具Sulbime Text3的快捷键方式操作的介绍。出第4版的原因是希望能将现在流行的开源技术展现并分享给大家,增加大家的职业技能知识。
读者对象 本书的读者对象如下:
项目实施工程师; 系统管理员或系统工程师; 网络管理员或企业网管; 系统开发工程; 高级开发人员。
如何阅读本书 本书的内容是对实际工作经验的总结,涉及大量的知识点和专业术语,建议经验不足的读者一定从第1章读起,本章内容相对来说比较基础。大家在学习过程中根据第1章的讲解进行操作,定会达到事半功倍的效果。
推荐系统管理员和运维工程师们通篇阅读本书,并重点关注第2章、第4章、第5章、第7章和第8章的内容,这些都与运维工作息息相关的,建议大家多花些精力和时间,抱着一切从线上环境去考虑的态度去学习。
对于网络管理员和企业网管来说,如果基础不是太扎实,建议先学习第1章和第2章的内容,然后将重点放在第7章和第8章。
. 对于项目实施工程师而言,由于大多数都是从事系统集成相关工作的,因此建议顺序学习全书的内容,重心可以放在第5章和第6章。
对于高级开发人员来说,由于只需对系统有一个大概的了解,重点可以放在第1章、第3章和第4章。如果希望了解集群相关的知识体系,可学习第5章和第6章的内容。
大家可以根据自己的职业发展和工作需要选择不同的阅读顺序和侧重点,同时也可以对其他相关的知识点有一定的了解。
致谢 感谢我的家人,你们在生活上对我无微不至的照顾,让我有更多精力和动力去工作和创作。
感谢好友刘天斯和老男孩的支持和鼓励,闲暇之余和你们一起交流开源技术和发展趋势,也是一种享受。
感谢朋友刘鑫,是你花了大量时间和我一起研究和调试HAProxy Keepalived。
感谢朋友胡安伟,感谢你为本书提供的精美插图,并就Linux集群相关内容提出的许多宝贵的意见。
感谢机械工业出版华章公司的编辑杨福川和孙海亮,正是由于你们的信任、支持和帮助,我才能够如此顺利地完成全部书稿。
感谢热心的读者朋友们,没有大家的支持和鼓励,本书也不可能出到第4版。
感谢朋友三宝,感谢你在我苦闷的时候陪我聊天,感谢你这么多年来对我的信任和支持。
感谢在工作和生活中给予过我帮助的所有人,感谢你们,正是因为有了你们,才有了本书的问世。
关于勘误 尽管我花了大量时间和精力去核对文件和语法,但书中难免还会存在一些错误和纰漏,如果大家发现问题,希望可以反馈给我,相关信息可发到我的邮箱 [email protected]。尽管我无法保证每一个问题都会有正确的答案,但我肯定会努力回答和并且指出一个正确的方向。
如果大家对本书有任何疑问或想进行Linux的技术交流,可以访问我的个人博客,我会在此恭候大家。我的个人博客地址为http://yuhongchun.blog.51cto.com。另外,我在51CTO和CU社区的用户名均为“抚琴煮酒”,大家也可以直接通过此用户名在社区内与我进行交流。
余洪春(抚琴煮酒)
评论
还没有评论。