目 录
第1章 引言 1
1.1 性能问题 1
1.2 解决方案 2
1.3 什么是负载均衡 3
1.3.1 负载均衡的前世 3
1.3.2 负载均衡的今生 3
1.3.3 纵向扩展 3
1.3.4 横向扩展 4
1.4 负载均衡的实现 4
1.4.1 网络的构成 4
1.4.2 缓存:网站的曲速引擎 5
1.4.3 使用DNS进行负载均衡 5
1.4.4 内容分发网络 5
1.4.5 6P原则 6
1.4.6 基础知识 6
1.4.7 HTTP负载均衡 6
1.4.8 对数据库进行负载均衡 7
1.4.9 对网络连接进行负载均衡 7
1.4.10 SSL负载均衡 7
1.4.11 建立高可用性集群 7
1.4.12 云平台上的负载均衡 7
1.4.13 IPv6:实现和概念 8
1.4.14 下一步做什么 8
1.5 总结 8
第2章 网站工作原理 9
2.1 开始我们的旅程 10
2.1.1 来自非IT背景 10
2.1.2 开始浏览的过程 10
2.1.3 通过DNS查找网站 11
2.1.4 最终连接到服务器 11
2.1.5 服务器自身 12
2.1.6 连接到数据库 12
2.1.7 缓存技术速览 12
2.1.8 回传到客户端 13
2.2 进一步了解 13
2.3 网络 14
2.3.1 TCP 14
2.3.2 DNS 16
2.3.3 速度、带宽和延迟 17
2.3.4 网络连接小结 19
2.4 HTML和Web 19
2.4.1 HTML 20
2.4.2 为什么基于文本很重要 20
2.4.3 为什么链接很重要 21
2.4.4 HTML小结 22
2.4.5 浏览器 22
2.5 Web内容 23
2.5.1 静态内容 23
2.5.2 动态内容 24
2.5.3 创建动态内容 24
2.5.4 Web内容小结 25
2.6 数据库:最薄弱的环节 26
2.7 总结 26
第3章 内容缓存:保持低负载 28
3.1 什么是缓存 29
3.2 走马观花 29
3.2.1 基于浏览器的缓存 29
3.2.2 Web加速器 30
3.2.3 Web代理 31
3.2.4 透明Web代理 32
3.2.5 边缘缓存 33
3.2.6 平台缓存 34
3.2.7 应用缓存 35
3.2.8 数据库缓存 36
3.2.9 仅仅是个开始…… 36
3.3 缓存理论:缓存为什么这么难 36
3.3.1 HTTP 1.0对缓存的支持 37
3.3.2 HTTP 1.1加强的缓存支持 37
3.3.3 解决方案 38
3.3.4 缓存不像看起来那么简单 39
3.4 Web代理 39
3.4.1 Squid代理服务器 39
3.4.2 开始了 40
3.4.3 故障排除 41
3.4.4 透明代理 42
3.4.5 发生了什么 42
3.4.6 获得帮助 44
3.4.7 Squid,代理中的瑞士军刀 44
3.5 边缘缓存:Varnish 45
3.5.1 默认保守缓存 46
3.5.2 安装Varnish 46
3.5.3 配置并运行 47
3.5.4 定制Varnish 49
3.6 总结 49
第4章 基于DNS的负载均衡 51
4.1 DNS内幕 51
4.1.1 IP地址 51
4.1.2 问题 52
4.1.3 解决方案 52
4.1.4 回退一步 53
4.2 DNS详解 53
4.2.1 亲自查询 54
4.2.2 DNS查询进阶 55
4.3 DNS缓存 56
4.3.1 查询DNS缓存 56
4.3.2 Linux系统上的DNS缓存 58
4.3.3 实质内容 58
4.4 BIND9 58
4.4.1 DNS DB的头 60
4.4.2 DNS数据库记录 61
4.4.3 加载数据库 62
4.4.4 检查配置文件 63
4.4.5 常见问题 63
4.4.6 测试DNS 63
4.5 基于DNS的负载均衡 64
4.5.1 基于DNS的负载均衡的优势 65
4.5.2 基于DNS的负载均衡的问题 65
4.6 总结 66
第5章 内容分发网络 67
5.1 选择CDN服务提供商 68
5.2 开始使用Rackspace 68
5.3 向CDN账户添加内容 69
5.4 Rackspace云文件API 72
5.4.1 将API集成到PHP中 72
5.4.2 用API密钥进行认证 72
5.4.3 建立连接和断开连接 73
5.4.4 对容器进行操作 74
5.4.5 对文件进行操作 79
5.4.6 其他有用的函数 84
5.5 总结 86
第6章 性能和可靠性计划 87
6.1 yoU MAke DInner In TiME 87
6.1.1 理解 88
6.1.2 决策 90
6.1.3 设计与实现 91
6.1.4 安装 92
6.1.5 测试、维护、评估 93
6.1.6 计划的重要性 95
6.2 备份 96
6.2.1 为什么备份如此重要 96
6.2.2 前方可能有麻烦 97
6.2.3 必须实现自动化 98
6.2.4 战术备份 98
6.2.5 战略备份 98
6.2.6 增量备份与全备份 99
6.2.7 一定,一定要测试恢复! 99
6.3 总结 100
第7章 负载均衡基础 101
7.1 什么是负载均衡 101
7.2 有哪些可用的计算资源 102
7.2.1 处理器 102
7.2.2 内存 103
7.2.3 使用top命令查看CPU和RAM的性能 103
7.2.4 网络 104
7.2.5 存储(磁盘) 105
7.3 负载均衡实战 105
7.4 指导原则 106
7.4.1 深入理解系统 106
7.4.2 规划 106
7.4.3 监测和测试 107
7.5 总结 107
第8章 对网站进行负载均衡 108
8.1 测量Web服务器的性能 108
8.2 加速Apache HTTP 110
8.2.1 禁用空载模块 111
8.2.2 禁用DNS查询 111
8.2.3 采用压缩 112
8.2.4 FollowSymLinks和SymLinksIfOwnerMatch选项 113
8.3 加速nginx 114
8.3.1 worker_processes和worker_cpu_affinity 114
8.3.2 Gzip压缩 115
8.4 对Web服务器进行负载均衡 116
8.4.1 配置 117
8.4.2 准备IPVS服务器 118
8.4.3 准备工作服务器 120
8.4.4 测试负载均衡器 121
8.5 划分动态和静态内容 122
8.6 总结 123
第9章 对数据库进行负载均衡 124
9.1 搭建MySQL Cluster 124
9.1.1 安装管理程序 126
9.1.2 配置管理程序 126
9.1.3 准备集群数据节点 129
9.1.4 安装MySQL Server和NDB守护进程 129
9.1.5 配置NDB守护进程 130
9.1.6 启动集群节点上的服务 131
9.1.7 更新MySQL的root用户 132
9.1.8 测试上述安装和配置 133
9.2 实施负载均衡 135
9.2.1 建立负载均衡 135
9.2.2 设置负载均衡服务器 136
9.2.3 设置工作服务器 137
9.2.4 测试负载均衡服务器 138
9.3 总结 139
第10章 对网络进行负载均衡 140
10.1 分担负载 140
10.2 TCP/IP 141
10.2.1 TCP 141
10.2.2 IP 142
10.3 路由 142
10.4 负载均衡服务器 144
10.5 IPVS 146
10.5.1 IPVS的调度方式 146
10.5.2 在Ubuntu上安装IPVS 148
10.5.3 在CentOS上安装IPVS 149
10.6 IPVSADM 150
10.7 扩展IPVS 151
10.8 IPVS进阶 153
10.8.1 修改调度算法 153
10.8.2 分配权值 154
10.8.3 协议与多台虚拟服务器 155
10.8.4 增加IP地址 156
10.9 保存设置 158
10.10 总结 159
第11章 对SSL进行负载均衡 160
11.1 什么是SSL和TLS 160
11.2 公钥密码学 161
11.3 信任和数字证书认证机构 162
11.4 TLS加密 162
11.5 TLS负载均衡 162
11.6 配置Web服务器上的SSL 163
11.6.1 配置Apache服务器上的SSL 165
11.6.2 配置nginx服务器上的SSL 166
11.7 SSL加速 166
11.7.1 在Apache上启用SSL加速 166
11.7.2 在nginx上启用SSL加速 166
11.8 SSL前端 167
11.9 测试SSL 168
11.10 进一步配置 170
11.10.1 在SSL前端中启用SSL加速 170
11.10.2 启用缓存 171
11.10.3 指定要支持的协议 172
11.10.4 指定加密方法 172
11.11 LVS和SSL终结前端 173
11.12 将负载均衡服务器/SSL终端功能集成到同一台服务器上 175
11.13 总结 175
第12章 使用集群提高可用性 176
12.1 高可用性 177
12.2 单一故障点 178
12.3 集群化 179
12.4 IPVS故障恢复 180
12.4.1 在Ubuntu上安装集群软件包 181
12.4.2 在CentOS上安装集群软件包 182
12.4.3 配置集群 182
12.4.4 常见配置问题 185
12.4.5 检查系统 186
12.5 测试 187
12.6 Web服务器细节配置 189
12.6.1 Ubuntu 189
12.6.2 CentOS 189
12.7 高级配置选项 189
12.7.1 ha.cf 189
12.7.2 ldirectord.cf 190
12.7.3 Web服务器 190
12.8 总结 190
第13章 云端负载均衡 191
13.1 云计算 191
13.2 虚拟化 192
13.3 虚拟化资源 195
13.4 管理虚拟资源 196
13.4.1 平衡 197
13.4.2 超量供给 198
13.4.3 计划 199
13.5 云的弹性 200
13.6 用云服务器工作 201
13.7 总结 203
第14章 IPv6:影响和概念 204
14.1 IPv6 204
14.2 十六进制表示 204
14.3 缩略表示 205
14.4 IPv4地址的耗尽 205
14.5 部署IPv6 205
14.6 IPv6的优势 206
14.7 实现 206
14.8 互联网连接 208
14.9 DNS 208
14.10 操作系统 208
14.11 网络 208
14.11.1 单一网关的网络 209
14.11.2 双重网络 209
14.12 软件支持 209
14.12.1 Apache 209
14.12.2 nginx 210
14.12.3 Varnish 210
14.12.4 Memcached 210
14.12.5 IPVS 211
14.12.6 ldirectord 211
14.12.7 heartbeat 211
14.13 总结 212
第15章 何去何从 213
15.1 回顾 213
15.2 监控 214
15.3 安全 215
15.3.1 访问控制 215
15.3.2 视图 216
15.3.3 常见的攻击防护 216
15.4 操作系统性能 217
15.4.1 自己编译 217
15.4.2 裁剪 218
15.4.3 高性能操作系统 218
15.5 计划 218
15.6 总结 219
索引 220