24小时365天不间断服务

出版日期:2015-1
ISBN:9787115380244
作者:[日] 伊藤直也,[日] 胜见祐己,[日] 田中慎司,[日] 广濑正明,[日] 安井真伸,[日] 横川和哉
页数:336页

内容概要

作者简介:

伊藤直也
Hatena首席技术官, KAIZEN platform Inc. 高级技术顾问。
胜见祐己
KLab基础设施工程师。
田中慎司
信息学博士,现就职于Hatena,负责Hatena服务的350余台服务器的运维工作。
广濑正明
KLab基础设施工程师。
安井真伸
就职于KLab研究开发部。致力于在现有的基础设施的基础上,摸索出新的机制。
横川和哉
就职于KLab研究开发部。
译者简介:
张毅
运维架构师。曾任Google SRE工程师,具备网络架构设计、性能调优、风险预控等能力,对海量数据的运维策略有自身独到的理解。

书籍目录

第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

作者简介

本书是著名的网络服务供应商Hatena和Klab有限公司的工程师团队的经验总结。全书从实际的生产环境出发,就大规模、高性能、不间断的网络服务的搭建和管理技术进行了分析和说明。前3章讲解了如何搭建兼具冗余性和可扩展性的服务器/基础设施;第4章讲解了性能优化方面的内容,特别是对单个服务器的性能提升方法进行了介绍;第5章讲解了监控、管理等运行方面的内容,以笔者身边的实际生产环境为例,介绍了提升设备运行效率的技巧;第6章介绍了Hatena与KLab实际运作的网络和服务器基础设施的情况。
本书适合所有致力于运维和网络后端的开发者阅读。


 24小时365天不间断服务下载 精选章节试读 更多精彩书评



发布书评

 
 


精彩书评 (总计1条)

  •     书里面涉猎到的知识,今天看来已经有些老旧,但是一些基本的概念还是值得一读的。反向代理,自己之前一直搞不明白确切的定义,按书里的讲法一句话就能讲清楚,比较好。观察瓶颈的两大指标:CPU&I/O,可以用sar或vmstat等工具进行观察。有些地方老旧,比如反向代理没有提及nginx,没有提及session共享的问题,在互联网技术日新月异的发展态势下就显得过时了。

精彩短评 (总计28条)

  •     珍藏的基本日本技术书籍都是难得的五星好评的.
  •     科普服务器运维,和图解系列书籍差不多,值得一读。
  •     内容非常全面,大量运维的基础知识和要点都说到了,相关的面都涉及到了,硬件到软件。深度也把握的非常不错,不像国内一大堆抄配置的书。由于此书写于08年,所以部分内容有点老了,不过运维的基础技术更替相对较慢。总之,非常适合初、中级运维看看。
  •     书里有上一代运维一些不错的实战。
  •     无论内容如何,有诚意!严谨!不像国内有些人纯属于应付!
  •     不知为啥,日本人写的技术书看起来都有点没劲..
  •     稳定性服务,基础服务建设
  •     比较老的书,但技术架构还有可取的地方。
  •     运维的知识体系和方式落后太多,自己一看写书的时间是08年,实在是坑爹,人邮是怎么想到引进这么老的一本书……
  •     日本人做事严谨
  •     终于大致的看完了。1.小日本做事真严谨。有思路。2.知识面涉及很广。3.所有对网络的依赖太大。4.构架现在都没过时,依了那句话。没有最好的构架,只有最合适的构架。5.也许是上代运维,对高并发没有研究。但是高可用写的很好。6.没有自动化。4分给08年时代的日本运维
  •     关于基础设施领域各个环节如何避免单点的介绍,深度很浅但比较广泛
  •     PXE是可以试玩一下的东西。
  •     推荐,可以扩展知识面,尤其是硬件冗余,赞,介绍的很完整,有体系,不可多得。后面的内容,收获就很小,所以四星
  •     渣渣烂书
  •     冗余设计
  •     我觉得这本书标题有些不对称,我不是指这本书不够好,而是超出了题目的范围,是属于云可用性的范畴。这是个非常大的课题,涉及软件,硬件,不是单硬件就可以完成的。
  •     深入介绍网络公司执行方面的书,值得一读哦。
  •     一些软件挺老的了感觉,不过思想都是想通的,入门
  •     感觉有点老了,内容不够新了,但是作为运维门外汉,读一读还是有价值的。
  •     一本书翻完,不知道说了啥,也是尴尬
  •     太浅了,不怎么实用。
  •     内容还是很不错的,但是大部分的东西现在的级别都用不上,所以。。。这书还挺适合放在书架上查阅的。
  •     我觉得不错,我不需要手把手的细节,不同的应用和系统不可能实施过程中都一模一样。我只要方案,这本书比较整体的给了方案,这就够了。后续的细节是需要研究的。BTW,这本书纸张很好。阅读毫无障碍。
  •     讲道理真的挺不错, 细节讲的比较全面, 比国内的好太多了
  •     一定要读一下
  •     不间断的核心是冗余, 监控, 切换.
  •     这是我买的第2本别人评价还不错的日本人写的书,跟第一本一样渣.感觉都是科普类读物,没有太深入的探讨,浪费钱
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024