第1章 系统架构设计的构建基础 1
1.1 网站架构设计相关术语 1
1.1.1 什么是HTTP 1.1 1
1.1.2 什么是Web 2.0 2
1.1.3 软件开发C/S结构与B/S结构的区别 3
1.1.4 评估网站性能的专业术语 5
1.2 IDC机房的选择及CDN的选型 6
1.3 如何根据服务器应用选购服务器 7
1.4 CentOS 6.4 x86_64最小化安装后的优化 13
1.4.1 系统的基础优化 13
1.4.2 优化Linux下的内核TCP参数以提高系统性能 19
1.4.3 CentOS 6.4 x86_64系统最小化优化脚本 22
1.4.4 Linux下CPU使用率与机器负载的关系与区别 23
1.5 MySQL数据库的优化 25
1.5.1 服务器物理硬件的优化 25
1.5.2 利用tuning-primer脚本来调优MySQL数据库 25
1.6 小结 28
第2章 生产环境下的Shell和Python脚本 29
2.1 Shell和Python语言的简单介绍 29
2.2 Shell编程基础 30
2.2.1 Shell脚本的基本元素 30
2.2.2 Shell特殊字符 31
2.2.3 变量和运算符 31
2.3 Shell中的控制流结构 42
2.4 sed的基础用法及实用示例 45
2.4.1 sed的基础语法格式 46
2.4.2 sed的用法示例 51
2.5 awk的基础用法及实用示例 56
2.6 生产环境下的Shell和Python脚本分类 61
2.6.1 备份类脚本 62
2.6.2 统计类脚本 66
2.6.3 监控类脚本 69
2.6.4 开发类脚本 72
2.6.5 自动化类脚本 78
2.7 小结 80
第3章 轻量级自动化运维工具Fabric详解 81
3.1 Python语言的应用领域 81
3.2 选择Python的原因 83
3.3 Python的版本说明 83
3.4 增强的交互式环境IPython 84
3.5 Python(x,y)介绍 85
3.6 轻量级自动化运维工具Fabric介绍 86
3.6.1 Fabric的安装 87
3.6.2 命令行入口fab命令详解 88
3.6.3 Fabric的核心API 88
3.7 Fabric应用实例 92
3.7.1 开发环境中的Fabric应用实例 92
3.7.2 线上环境中的Fabric应用实例 93
3.8 小结 96
第4章 自动化部署管理工具Ansible简介 97
4.1 YAML语言介绍 99
4.2 Ansible的安装步骤 101
4.3 利用ssh-keygen设置SSH无密码登录 105
4.4 Ansible常用模块介绍 107
4.5 playbook介绍 121
4.6 角色 126
4.7 Jinja2过滤器 132
4.8 小结 136
第5章 自动化配置管理工具Puppet 137
5.1 Puppet的基本概念及介绍 137
5.1.1 Puppet简介 137
5.1.2 学习Puppet应该掌握Ruby基础 138
5.1.3 Puppet的基本概念及工作流程介绍 138
5.2 安装Puppet前的准备工作 140
5.3 Puppet的详细安装步骤 141
5.4 Puppet的简单文件应用 145
5.5 Puppet的进阶操作 152
5.5.1 如何同步Puppet-Client端上的常用服务 152
5.5.2 如何在Puppet-Client端自动安装常用的软件包 153
5.5.3 如何自动同步Puppet-Client端的yum源 153
5.5.4 如何根据不同名字的节点机器推送不同的文件 155
5.5.5 如何根据节点机器名选择性地执行Shell程序 158
5.5.6 如何快速同步Puppet-Server端的www目录文件 160
5.5.7 如何利用ERB模板来自动配置Apache虚拟主机 165
5.5.8 如何利用ERB模板来自动配置Nginx虚拟主机 168
5.6 Puppet的负载均衡方式 172
5.7 用GitHub来管理Puppet配置文件 173
5.8 小结 176
第6章 Linux防火墙及系统安全篇 177
6.1 基础网络知识 177
6.1.1 OSI网络参考模型 177
6.1.2 TCP/IP三次握手的过程详解 178
6.1.3 Socket应用及其他基础网络知识 181
6.2 Linux防火墙的概念 182
6.3 Linux防火墙在企业中的应用 183
6.4 Linux防火墙的语法 184
6.5 iptables的基础知识 188
6.5.1 iptables的状态state 188
6.5.2 iptables的conntrack记录 190
6.5.3 关于iptables模块的说明 191
6.5.4 iptables防火墙初始化的注意事项 192
6.5.5 如何保存运行中的iptables规则 192
6.6 如何流程化编写iptables脚本 193
6.7 学习iptables应该掌握的工具 196
6.7.1 命令行的抓包工具TCPDump 196
6.7.2 图形化抓包工具Wireshark 197
6.7.3 强大的命令行扫描工具Nmap 200
6.8 iptables简单脚本:Web主机防护脚本 203
6.9 线上生产服务器的iptables脚本 204
6.9.1 安全的主机iptables防火墙脚本 205
6.9.2 自动分析黑名单及白名单的iptables脚本 207
6.9.3 利用recent模块限制同一IP的连接数 210
6.9.4 利用DenyHosts工具和脚本来防止SSH暴力破解 214
6.10 TCP_Wrappers应用级防火墙的介绍和应用 218
6.11 工作中的Linux防火墙总结 220
6.12 Linux服务器基础防护知识 221
6.13 Linux服务器高级防护知识 222
6.14 如何防止入侵 222
6.15 小结 223
第7章 Linux集群及项目案例分享 224
7.1 负载均衡高可用核心概念及常用软件 224
7.1.1 什么是负载均衡高可用 224
7.1.2 以F5 BIG-IP作为负载均衡器 225
7.1.3 以LVS作为负载均衡器 226
7.1.4 以Nginx作为负载均衡器 230
7.1.5 以HAProxy作为负载均衡器 231
7.1.6 高可用软件Keepalived 232
7.1.7 高可用软件Heartbeat 233
7.1.8 高可用块设备DRBD 233
7.1.9 四、七层负载均衡工作流程对比 235
7.2 负载均衡关键技术 237
7.2.1 什么是Session 237
7.2.2 什么是Session共享 237
7.2.3 什么是会话保持 238
7.3 负载均衡器的会话保持机制 239
7.3.1 LVS的会话保持机制 239
7.3.2 Nginx负载均衡器中的ip_hash算法 244
7.3.3 HAProxy负载均衡器的source算法 244
7.3.4 服务器健康检测技术 249
7.4 Linux集群的项目案例分享 250
7.4.1 案例分享一:用Nginx+Keepalived实现在线票务系统 250
7.4.2 案例分享二:企业级Web负载均衡高可用之Nginx+Keepalived 253
7.4.3 案例分享三:Nginx主主负载均衡架构 265
7.4.4 案例分享四:生产环境下的高可用NFS文件服务器 270
7.4.5 案例分享五:生产环境下的MySQL DRBD双机高可用 280
7.4.6 案例分享六:生产环境下的MySQL数据库主从同步 293
7.4.7 案例分享七:HAProxy双机高可用方案之HAProxy+Keepalived 303
7.4.8 案例分享八:巧用DNS轮询做负载均衡 308
7.5 软件级负载均衡器的特点介绍与对比 313
7.6 网站系统架构设计图 315
7.7 小结 316
第8章 浅谈网站系统架构设计 318
8.1 网站架构设计规划预案 318
8.1.1 利用经验,合理设计 318
8.1.2 规划好网站未来的发展 319
8.1.3 合理选用开源软件方案 319
8.1.4 机房及CDN选型 319
8.1.5 节约成本 320
8.1.6 安全备份 320
8.2 百万级PV高可用网站架构设计 321
8.3 千万级PV高性能高并发网站架构设计 323
8.4 亿级PV高性能高并发网站架构设计 327
8.5 细分五层解说网站架构 333
8.6 小结 335
附录A HAProxy 1.4的配置文档 336
附录B rsync及inotify在工作中的应用 343
附录C 用Supervisor批量管理进程 355