24小时365天不间断服务

24小时365天不间断服务:服务器基础设施核心技术(中文版) [日] 伊藤直也/[日] 胜见祐己/[日] 田中慎司/[日] 广濑正明/[日] 安井真伸/[日] 横川和哉著

运维
浏览人数:292
在读人数:2
读者:
本书是著名的网络服务供应商Hatena和Klab有限公司的工程师团队的经验总结。全书从实际的生产环境出发,就大规模、高性能、不间断的网络服务的搭建和管理技术进行了分析和说明。前3章讲解了如何搭建兼具冗余性和可扩展性的服务器/基础设施;第4章讲解了性能优化方面的内容,特别是对单个服务器的性能提升方法进行了介绍;第5章讲解了监控、管理等运行方面的内容,以笔者身边的实际生产环境为例,介绍了提升设备运行效率的技巧;第6章介绍了Hatena与KLab实际运作的网络和服务器基础设施的情况。 本书适合所有致力于运维和网络后端的开发者阅读。
第1章 服务器及基础设施搭建入门 1   
冗余及负载分流的基础 1   
1.1 冗余的基础 2   
1.1.1 冗余概述 2   
1.1.2 冗余的本质 2   
①设想可能发生的故障 2   
②预先准备好备份设备 3   
③部署工作机制……当故障发生时,切换到备份设备 3   
1.1.3 应对路由器故障的情况 4   
冷备份 4   
1.1.4 应对Web服务器故障的情况 4   
热备份 5   
1.1.5 故障转移 6   
VIP 6   
IP地址的映射 6   
1.1.6 检测故障……健康检查 7   
Web服务器的健康检查 8   
路由器的健康检查 8   
1.1.7 搭建Active/Backup的拓扑结构 8   
IP地址的映射操作 10   
1.1.8 还想更有效地使用服务器……负载分发 10   
1.2 实现Web服务器的冗余……DNS轮询 12   
1.2.1 DNS轮询 12   
1.2.2 DNS轮询的冗余拓扑结构示例 13   
1.2.3 还想更轻松地扩充系统……负载均衡器 16   
1.3 实现Web服务器的冗余……基于IPVS的负载均衡器 17   
1.3.1 DNS轮询与负载均衡器的不同点 17   
1.3.2 IPVS……基于Linux的负载均衡器 18   
负载均衡器的种类与IPVS的功能 18   
1.3.3 调度算法 18   
1.3.4 使用IPVS 20   
ipvsadm 20   
keepalived 20   
1.3.5 搭建负载均衡器 21   
配置Web服务器 22   
启动keepalived 23   
确认负载分流 23   
确认冗余的拓扑结构 24   
1.3.6 四层交换机与七层交换机 24   
1.3.7 四层交换机的NAT模型与DSR模型 26   
1.3.8 同一子网下的服务器进行负载分流时需要注意的地方 28   
1.4 路由器及负载均衡器的冗余 30   
1.4.1 负载均衡器的冗余 30   
1.4.2 虚拟路由器冗余协议(VRRP) 30   
1.4.3 VRRP的拓扑模型 30   
VRRP报文 31   
虚拟路由器ID 32   
优先顺序 32   
抢占模式 33   
虚拟MAC地址 33   
1.4.4 安装keepalived时可能遇到的问题 34   
延迟发送gratuitous ARP(GARP) 34   
1.4.5 keepalived的冗余 35   
确认VIP 36   
确认VRRP的运行情况 37   
分离VRRP实例 37   
同步VRRP实例 38   
1.4.6 keepalived的应用 38   
第2章 优化服务器及基础设施的拓扑结构   
冗余、负载分流、高性能的实现 39   
2.1 引入反向代理……Apache模块 40   
2.1.1 反向代理入门 40   
2.1.2 根据HTTP请求的内容来控制系统的行为 41   
根据IP地址进行控制 42   
根据User-Agent进行控制 42   
网址的重写 42   
2.1.3 优化系统整体的内存使用率 43   
例:动态页面中的请求详情 43   
2.1.4 缓存Web服务器的应答数据 45   
HTTP的Keep-Alive 45   
例:内存消耗与Keep-Alive的开启/关闭 46   
2.1.5 使用Apache模块控制处理规则 47   
增设反向代理的判断 48   
2.1.6 增设反向代理 48   
使用Apache 2.2 48   
以worker模式启动httpd 49   
httpd.conf的配置 49   
设定最大进程/线程数 49   
Keep-Alive的配置 51   
载入必要的模块 52   
设定RewriteRule 52   
2.1.7 进一步对RewriteRule进行设置 53   
禁止来自特定主机的请求 54   
对于来自搜索引擎机器人的请求使用缓存服务器 54   
2.1.8 使用mod_proxy_balancer向多台主机分流 55   
mod_proxy_balancer的使用示例 56   
2.2 增设缓存服务器……Squid、memcached 58   
2.2.1 引入缓存服务器 58   
HTTP与缓存 58   
通过Live HTTP Headers得知缓存效果 58   
2.2.2 Squid缓存服务器 59   
使用Squid搭建反向代理 60   
Squid缓存什么 61   
Squid的设定示例 62   
2.2.3 使用memcached进行缓存 64   
2.3 MySQL同步……发生故障时的快速恢复 66   
2.3.1 万一数据库服务器停止 66   
导致数据库停止的原因 66   
短时间内恢复的办法 66   
2.3.2 MySQL的同步功能的特性和注意点 67   
单主与多从 67   
异步数据同步 68   
被同步的数据内容 68   
2.3.3 同步的结构 69   
Slave 的I/O线程与SQL线程 69   
二进制日志与中继日志 69   
位置信息 70   
2.3.4 搭建同步结构 70   
同步条件 70   
my.cnf 71   
建立同步专用的用户 71   
同步开始时所必需的数据 72   
2.3.5 启动同步 73   
Master和Slave的my.cnf文件的差异 73   
Slave开始运行&确认 73   
2.3.6 确认同步的状态 74   
Master的状态确认 74   
Slave的状态确认 75   
2.4 MySQL的Slave+内部负载均衡器的灵活应用示例 78   
2.4.1 MySQL的Slave的运用方法 78   
Slave的运用策略 78   
分发到多台Slave上 78   
2.4.2 通过负载均衡器将请求分发到多台Slave的方法 79   
概况图 79   
内部负载均衡器的配置 80   
MySQL Slave的设定 82   
体验将请求分发到多台Slave的负载均衡 83   
2.4.3 内部负载均衡器的注意点……基于DSR的分发方法 83   
2.5 选择轻量高速的存储服务器 85   
2.5.1 存储服务器的必要性 85   
存储服务器容易导致单点故障 86   
存储服务器容易造成瓶颈 86   
2.5.2 理想的存储服务器 88   
减轻负载 88   
2.5.3 将HTTP作为存储协议使用 88   
轻量Web服务器的选择 89   
利用HTTP的优势 89   
2.5.4 遗留的问题 90   
第3章 进一步完善不间断的基础设施   
DNS服务器、存储服务器、网络 93   
3.1 DNS服务器的冗余 94   
3.1.1 DNS服务器冗余的重要性 94   
3.1.2 使用解析库实现冗余及存在的问题 94   
解析库存在的问题 95   
性能下降的危险性……以邮件服务器为例 95   
DNS故障会造成很大的影响 96   
3.1.3 基于服务器集群的DNS冗余 96   
3.1.4 使用VRRP的拓扑结构 96   
3.1.5 DNS服务器的负载分发 98   
3.1.6 小结 100   
3.2 存储服务器的冗余……利用DRBD实现镜像 101   
3.2.1 存储服务器的故障排解 101   
3.2.2 存储服务器同步的难点 101   
3.2.3 DRBD 102   
DRBD架构 102   
3.2.4 DRBD的设置与启动 103   
启动DRBD的Master服务器 104   
启动DRBD的备份服务器 105   
3.2.5 DRBD的故障转移 105   
手动切换 105   
keepalived的配置 106   
利用daemontools来控制keepalived 108   
3.2.6 NFS服务器故障转移时的注意事项 109   
3.2.7 备份的必要性 110   
3.3 网络的冗余……驱动绑定、RSTP 111   
3.3.1 L1/L2上部件的冗余 111   
3.3.2 故障点 111   
3.3.3 链路冗余与驱动绑定 112   
驱动绑定 112   
3.3.4 交换机的冗余 114   
链路故障时的行为 114   
交换机故障时的行为 115   
交换机间遭遇连接故障时的情况 115   
3.3.5 增设交换机 116   
实现多重冗余 117   
3.3.6 RSTP 117   
网桥的优先顺序及根网桥 118   
RSTP中端口的作用 119   
RSTP的行为 119   
3.3.7 总结 120   
3.4 引入VLAN……使网络更加灵活 121   
3.4.1 基于服务器集群的高灵活性网络 121   
3.4.2 引入VLAN的优点 121   
交换机的有效使用 122   
故障服务器的恢复机制 …灵活使用一台备用机 123   
使用VLAN,仅用一台备用机就能实现恢复 123   
3.4.3 VLAN的基础知识 124   
3.4.4 VLAN的种类 125   
端口VLAN 126   
标记VLAN 127   
3.4.5 在服务器集群中的使用 128   
不使用VLAN的拓扑结构 128   
使用端口VLAN的拓扑结构 129   
使用VLAN标签的拓扑结构 130   
3.4.6 即便在复杂的VLAN结构下,也需要让物理层面的设备   
结构尽可能简易化 132   
第4章 性能优化、调整   
Linux单个主机、Apache、MySQL 133   
4.1 基于Linux单个主机的负载评估 134   
4.1.1 充分发挥单个主机的性能 134   
清楚何为性能、何为负载 134   
4.1.2 别臆断,请监控 135   
4.1.3 确认瓶颈的基本流程 136   
观察load average 136   
观察CPU、I/O是否存在瓶颈 137   
当CPU负载较高时 137   
当I/O负载较高时 137   
4.1.4 何为负载 138   
两种负载 138   
多任务操作系统与负载 139   
搞清负载的本来面目=知晓内核的行为 140   
进程调度和进程状态 140   
进程状态变迁的具体例子 142   
进程状态迁移汇总 144   
换算到load average的等待状态 144   
load average表述的负载意义 145   
4.1.5 计算load average的内核编码 146   
4.1.6 通过load average判断CPU使用率和I/O等待时间 148   
使用sar来查看CPU使用率及I/O等待时间 149   
CPU的用户模式和系统模式 149   
I/O密集型服务器的sar 150   
4.1.7 多核CPU与CPU使用率 151   
4.1.8 如何计算CPU的使用率 152   
4.1.9 进程记账的内核编码 153   
4.1.10 线程和进程 156   
内核中的进程和线程 157   
ps和线程 158   
LinuxThreads和NPTL 159   
4.1.11 ps、sar、vmstat的使用方法 159   
ps……输出进程信息 159   
VSZ与RSS……虚拟内存和物理内存的指标 160   
TIME……CPU占用时间 162   
通过ps命令查看Blocking和Busy Loop的差异 162   
sar……查看系统报告的各项指标 163   
sar -u……查看CPU的使用率 165   
sar -q……查看load average 165   
sar -r……查看内存的使用状况 166   
减轻I/O负载及页面缓存 166   
通过页面缓存减轻I/O负载的实施效果 167   
将所需的数据整个放到页面缓存上 168   
sar -W……查看交换区的吞吐状况 169   
vmstat……查看虚拟内存的相关信息 170   
4.1.12 找到系统负载的症结并解决 171   
4.2 Apache的优化 172   
4.2.1 Web服务器的优化 172   
4.2.2 Web服务器遭遇瓶颈怎么办 172   
4.2.3 Apache的并发处理与MPM 173   
prefork与worker,进程与线程 175   
从编程模型看多进程/多线程的差异 175   
从性能的观点来看多进程/多线程的差异 176   
一个客户端对应一个进程/线程 177   
4.2.4 httpd.conf的配置 177   
Apache的安全阀MaxClients 177   
在prefork模式的情况下 178   
父子进程共享内存的写时复制技术 180   
查看写时复制时共享的内存大小 181   
MaxRequestsPerChild 183   
在worker模式的情况下 183   
在系统超载的情况下,改变MaxClients前需要了解 185   
4.2.5 Keep-Alive 186   
4.2.6 Apache以外的选择 186   
lighttpd 187   
4.3 MySQL的调优诀窍 189   
4.3.1 MySQL的调优诀窍 189   
基于调优视角的分类 189   
1 服务器方面 189   
2 服务器之外的其他方面 190   
3 周边系统 190   
本章接下来要处理的内容 191   
4.3.2 内存相关的参数优化 191   
缓冲的种类……优化时的注意事项① 191   
不能分配太多……优化时的注意事项② 192   
内存的相关参数 192   
4.3.3 内存相关的检查工具……mymemcheck 194   
第5章 高效运行   
确保服务的稳定提供 197   
5.1 服务状态监控Nagios 198   
5.1.1 稳定的服务运营与服务状态监控 198   
5.1.2 状态监控的种类 198   
1 存活状态的监控 198   
2 负载状态的监控 199   
3 可用率的统计 200   
5.1.3 Nagios概述 201   
安装Nagios 201   
5.1.4 Nagios的配置 201   
配置文件 202   
host……主机的配置 202   
service……服务的定义 203   
command……命令的定义 204   
contact与contactgroup……通知对象和通知对象组 205   
配置的测试 206   
5.1.5 Web管理界面 206   
5.1.6 Nagios的基本使用方法 208   
主机和服务的定义 208   
通知 209   
5.1.7 实用的使用方法 212   
可用率的测定 212   
独立插件 214   
5.1.8 小结 216   
5.2 服务器资源的监控……Ganglia 217   
5.2.1 服务器资源的监控 217   
监控的目的 217   
5.2.2 检测工具的讨论 218   
5.2.3 Ganglia……面向大量节点的图表化工具 218   
5.2.4 将Apache的进程状态图表化 220   
在Ganglia中增加图表的方法 222   
尝试增加多个图表 222   
其他的自定义图表 223   
5.3 高效的服务器管理……Puppet 225   
5.3.1 实现高效的服务器管理的工具Puppet 225   
5.3.2 Puppet的概要 225   
5.3.3 Puppet的配置 226   
节点的定义 227   
类的定义 227   
确认配置是否有效 229   
5.3.4 配置文件的语法 230   
资源的定义 230   
资源 231   
对各个服务器的配置进行微调 232   
资源间的依赖关系 233   
通过模板完成Manifest文件的定义 233   
5.3.5 通知操作日志 237   
5.3.6 运用 238   
5.3.7 自动配置管理工具的利与弊 239   
5.4 守护进程的工作管理……Daemontools 241   
5.4.1 守护进程的异常终止 241   
5.4.2 daemontools 241   
使用daemontools的原因 242   
成为守护进程的条件……在前台运行 243   
5.4.3 守护进程的管理方法 243   
创建守护进程 243   
启动守护进程 244   
停止、继续、重新启动守护进程 245   
停用守护进程 245   
发送信号 245   
Keepalived……run文件的例子① 246   
自编的监控脚本……run文件的例子② 246   
5.4.4 daemontools的实用技巧 248   
控制所依赖的服务的启动顺序 248   
常用的shell函数 249   
5.5 网络引导的应用……PXE、initramfs 252   
5.5.1 网络引导 252   
网络引导的特性及优势 252   
5.5.2 网络引导的行为……PXE 253   
5.5.3 网络引导的应用实例 255   
负载均衡器 255   
数据库服务器/文件服务器 256   
维护用的引导映像 256   
5.5.4 构建网络引导 257   
initramfs的通用化和作用的识别 257   
无盘结构中需要注意的事项 258   
Master文件的安全性 259   
5.6 远程维护……维护线路、Serial Console、IPMI 260   
5.6.1 轻松实现远程登录 260   
5.6.2 网络故障的应对 260   
维护线路 260   
交换机故障的应对 262   
5.6.3 Serial Console 263   
Serial Console的实现 264   
5.6.4 IPMI 266   
IPMI的功能 266   
使用IPMI 267   
5.6.5 总结 267   
5.7 Web服务器的日志处理……syslog、syslog-ng、cron、rotatelogs 268   
5.7.1 Web服务器日志的分拣·收集 268   
5.7.2 分拣与收集 268   
5.7.3 日志的分拣……syslog和syslog-ng 269   
使用syslog进行日志的分拣 269   
syslog-ng 270   
5.7.4 日志的收集 272   
Apache日志的转储……cron与rotatelogs 272   
5.7.5 日志服务器的作用与构成 273   
5.7.6 总结 274   
第6章 服务后台   
自律的基础设施、稳健的系统 275   
6.1 Hatena网站的内容 276   
6.1.1 Hatena的基础设施 276   
6.1.2 可扩展性和稳定性 277   
反向代理 278   
数据库 279   
文件服务器 281   
6.1.3 提高运营效率 282   
安装Kickstart 282   
软件包管理和Puppet 282   
服务器的管理和监控 283   
使用Capistrano部署 284   
6.1.4 用电效率·提高资源的利用率 285   
重视服务器每1A所发挥的性能 285   
充分利用每台服务器的性能 286   
不安装无用的零件 287   
6.1.5 为了自律的基础设施而努力 288   
6.2 DSAS的内容 290   
6.2.1 什么是DSAS 290   
6.2.2 DSAS的特征 291   
一个系统容纳多个网站 291   
使用开源软件搭建 291   
无论切断任何地方,网络服务都不会停止 294   
服务器增设非常方便 295   
故障修复非常简单 295   
6.2.3 系统架构的详情 296   
使用驱动绑定的原因 296   
DRBP实现故障转移时的注意事项 297   
配置SSL加速器 299   
扩展健康检查功能 301   
既方便又安全地使用负载均衡器 303   
处理会话数据 306   
memcached 307   
repcached 307   
6.2.4 DSAS的未来 309   
优质好资源
PDF

24小时365天不间断服务:服务器基础设施核心技术(中文版).pdf

2018-10-16上传 下载:30 影印版
已下载
注:所有资源均由网友分享,经由管理员审核,保证完整性、清晰度,请放心使用!
作者简介
评论