新書推薦:
《
精致考古--山东大学实验室考古项目论文集(一)
》
售價:HK$
250.7
《
从天下到世界——国际法与晚清中国的主权意识
》
售價:HK$
78.2
《
血色帝国:近代英国社会与美洲移民
》
售價:HK$
59.8
《
海外中国研究·王羲之:六朝贵族的世界(艺术系列)
》
售價:HK$
182.9
《
唐宋绘画史 全彩插图版
》
售價:HK$
101.2
《
“御容”与真相:近代中国视觉文化转型(1840-1920)
》
售價:HK$
113.9
《
鸣沙丛书·大风起兮:地方视野和政治变迁中的“五四”(1911~1927)
》
售價:HK$
102.4
《
海洋、岛屿和革命:当南方遭遇帝国(文明的另一种声音)
》
售價:HK$
109.3
|
編輯推薦: |
资深一线运维专家诚意之作,总结多年实践经验,深入浅出,内容涵盖运维工作各方各面。
百度、新浪、人人、音悦台等多名技术经理、高级工程师联名力荐。
《网站运维技术与实践》深入阐述了运维工作所涉及的监测调优、日志分析、集群规划、自动化部署、存数和数据库等各方面的技术要点,引入了对最新开源产品的实践经验,包含了对自动化运维和DevOps等技术形态的大量思考,旨在帮助运维人员“懒惰、急躁和傲慢”(程序员的三大美德)地完成网站运维工作。
|
內容簡介: |
网站运维工作,一向以内容繁杂、覆盖面广著称。《网站运维技术与实践》选取日常工作涉及的监测调优、日志分析、集群规划、自动化部署、存储和数据库等方面,力图深入阐述各项工作的技术要点及协议原理,并介绍相关开源产品的实践经验。在技术之外,作者也分享了一些关于高效工作及个人成长方面的心得。
《网站运维技术与实践》适合Linux 系统管理员、中大型网站运维工程师及技术负责人、DevOps 爱好者阅读。同时也适于刚踏上或有兴趣踏上运维岗位的年轻朋友,了解运维职业的工作和发展。
|
關於作者: |
饶琛琳: “资深运维”,先后在世纪互联云快线和中华网负责运维工作,热爱CDN并乐于尝试一切可以给互联网用户带来便利和优质体验的技术。
“DevOps”,现任人人公司网络运营部高级研发工程师。专注自动化运维平台的构建,活跃于Puppet和Logstash开源社区。
“死理性摩羯座”,比特币大潮中依然坚持要写程序实践证券投资分析原理和时间序列数据预警原理。
“Larry Wall教徒”,推崇“懒惰、急躁和傲慢”三大程序员美德,并时时运用于运维工作中。同时热衷于推广以perltidy、Moo、AnyEvent和Plack为代表的新一代Perl编程,参与组织了Perl中国用户2013年度大会。
|
目錄:
|
第1 章 服务器监测...................................... 1
1.1 理解监测的意义........................... 1
1.2 通过命令了解系统的性能概况.......................................... 2
1.2.1 ifconfig ................................... 2
1.2.2 w.............................................. 3
1.2.3 df ............................................. 4
1.2.4 ps ............................................. 6
1.2.5 vmstat ..................................... 8
1.2.6 netstat ..................................... 8
1.2.7 iostat ....................................... 9
1.3 其他常用工具..............................13
1.3.1 sar..........................................13
1.3.2 dstat.......................................14
1.3.3 mtr.........................................17
1.3.4 IPtraf .....................................18
1.3.5 TcpDump..............................19
1.3.6 Wireshark .............................22
1.3.7 strace.....................................23
1.3.8 stap........................................24
1.4 SmokePing 网络质量监测......34
1.4.1 原理......................................35
1.4.2 配置说明..............................37
1.4.3 报警......................................39
1.4.4 WebUI................................... 40
1.5 Nagios 分布式监测....................41
1.5.1 架构原理.............................. 42
1.5.2 Plugin 编写.......................... 45
1.5.3 SNMP 网络监控................. 46
1.5.4 Gearman 分布式................. 50
1.5.5 OMD 介绍........................... 55
第2 章 产品访问监测...............................57
2.1 关注产品比服务器更重要.....57
2.2 网站监测的明星指标...............58
2.2.1 可用性.................................. 58
2.2.2 响应时间.............................. 59
2.2.3 首屏响应时间..................... 59
2.3 网页浏览过程简介....................60
2.3.1 解析域名.............................. 60
2.3.2 连接服务器......................... 61
2.3.3 发送请求.............................. 61
2.3.4 等待响应.............................. 63
2.3.5 传输响应内容..................... 63
2.3.6 浏览器渲染处理................. 64
2.3.7 并发请求.............................. 64
2.4 浏览器网络监测与分析..........65
2.4.1 Firebug ................................. 65
2.4.2 Chrome 开发人员工具...... 65
2.4.3 HttpWatch ............................66
2.4.4 rvictl 接口监控IOS 设备...67
2.4.5 HAR 格式............................68
2.5 第三方监测...................................72
2.5.1 基调网络..............................72
2.5.2 监控宝..................................91
2.6 简单定制JS 监测.......................92
2.6.1 页面内嵌JS.........................92
2.6.2 Nginx 日志记录和存储.....93
2.6.3 数据展示..............................96
2.7 Boomerang.....................................96
第3 章 数据采集、传输与过滤..........100
3.1 采集点的取舍............................100
3.1.1 服务器数据.......................100
3.1.2 访问日志............................101
3.1.3 系统日志Syslog ...............102
3.2 收集传输......................................107
3.2.1 Rsyslog ...............................107
3.2.2 message queue ...................115
3.2.3 RPC.....................................118
3.2.4 Gearman .............................119
3.3 日志收集系统框架..................122
3.3.1 Flume-ng ............................122
3.3.2 logstash...............................125
第4 章 数据分析与报警.........................136
4.1 时间序列存储............................136
4.1.1 RRDtool(Round-Robin
Database Tool) ................136
4.1.2 Graphite..............................141
4.1.3 OpenTSDB.........................143
4.2 全文搜索引擎ElasticSearch...............................144
4.2.1 简介....................................144
4.2.2 安装....................................145
4.2.3 集群....................................145
4.2.4 基础查询............................146
4.2.5 优化....................................148
4.2.6 时间序列统计示例...........152
4.3 数据可视化.................................156
4.3.1 RRDtool .............................156
4.3.2 Gnuplot...............................160
4.3.3 AmCharts ...........................167
4.3.4 其他绘图库.......................176
4.4 报警................................................177
4.4.1 SendEmail ..........................177
4.4.2 WebSocket .........................178
4.4.3 手机推送............................182
4.4.4 分级和归并.......................183
第5 章 测试评估.......................................185
5.1 服务器性能测试.......................185
5.1.1 IOzone ................................186
5.1.2 Netperf................................189
5.1.3 pktgen .................................193
5.1.4 sysbench .............................194
5.2 应用性能测试............................197
5.2.1 http_load ............................197
5.2.2 AB.......................................198
5.2.3 weighttp..............................201
5.3 分布式测试环境.......................202
5.3.1 AutoBench .........................202
5.3.2 TCPCopy............................205
第6 章 集群架构规划.............................207
6.1 IDC 的规划和选择...................207
6.1.1 网站性质决定基础面......207
6.1.2 IDC 厂商服务质量...........208
6.1.3 BGP 真伪的验证..............209
6.2 CDN 规划....................................213
6.2.1 CDN 原理..........................213
6.2.2 DNS 原理...........................214
6.2.3 DNS 查询结构实现..........217
6.2.4 DNS 调度...........................223
6.2.5 其他调度方法概述...........227
6.2.6 动态加速概述...................229
6.3 缓存设计......................................236
6.3.1 HTTP Header 对缓存的影响.....................................236
6.3.2 Squid 的LM-factor 过期算法.....................................239
6.3.3 squid 的ACL 控制...........241
6.3.4 Squid 的aufscoss缓存引擎............................243
6.3.5 squidclient 的运用............245
6.3.6 使用SSD 提高性能.........250
6.4 本地负载均衡............................255
6.4.1 LVS 负载均衡原理...........255
6.4.2 keepalived 与VRRP 高可用原理............................263
6.4.3 Nginx 的upstream ............268
6.4.4 squid 的cache_peer..........272
第7 章 弹性控制和部署.........................274
7.1 配置集成的思想.......................274
7.1.1 抽象的集群管理...............274
7.1.2 通用模式设计...................275
7.2 操作系统部署KickStart ........276
7.2.1 基本原理............................277
7.2.2 配置安装............................278
7.3 应用部署与配置管理.............279
7.3.1 SSH::Batch ........................279
7.3.2 Puppet.................................282
7.4 搭建私有软件仓库..................312
7.4.1 使用spec 文件构建RPM 包...............................312
7.4.2 命令行打包工具FPM .....322
7.4.3 yum 私有仓库...................324
7.5 随时控制成本............................324
7.5.1 CGroup 配置简介.............324
7.5.2 内存限制............................328
7.5.3 CPU 共享限制..................330
7.5.4 CPU 绑定限制..................331
7.5.5 块设备读写限制...............333
7.5.6 配合TC 完成网络限速...335
7.6 关于云计算.................................337
第8 章 分布式文件系统........................339
8.1 NFS.................................................339
8.1.1 原理....................................340
8.1.2 服务器端配置和优缺点.....................................341
8.1.3 客户端参数优化...............343
8.1.4 丢包与网络参数优化......346
8.2 简单易用的FUSE 协议.........348
8.3 MogileFS ......................................351
8.3.1 GFS 介绍...........................351
8.3.2 MogileFS 介绍..................353
8.3.3 MogileFS 内部原理..........356
8.3.4 安装和配置.......................359
8.3.5 客户端配置和使用...........363
第9 章 数据库............................................368
9.1 MySQL 必知必会.....................368
9.1.1 常见SQL ...........................369
9.1.2 导入导出............................370
9.1.3 简单配置调优...................371
9.2 慢查询分析工具mysqlsla ....372
9.2.1 使用....................................372
9.2.2 结果分析............................373
9.3 Percona 工具集..........................374
9.3.1 备份恢复工具XtraBackup ........................374
9.3.2 在线运维工具箱Toolkit.................................376
9.3.3 监控插件集.......................379
9.4 监控工具......................................380
9.4.1 mytop 和innotop ..............380
9.4.2 orzdba .................................381
9.5 MySQL 集群...............................384
9.5.1 MySQL 复制原理.............384
9.5.2 MHA 原理.........................386
9.5.3 MHA 安装使用.................388
第10 章 备份与同步技术......................390
10.1 rsync.............................................390
10.1.1 原理..................................391
10.1.2 常见运用..........................393
10.2 inotify 和sersync 工具........396
10.2.1 inotify 概述和示例.........396
10.2.2 sersync 介绍....................397
10.2.3 sersync 配置用例............398
10.3 Netcat ..........................................400
10.3.1 文件传输..........................400
10.3.2 端口扫描..........................401
10.3.3 远程控制..........................401
10.4 P2P 传输网络..........................402
10.4.1 P2P 协议概述..................403
10.4.2 BitTorrent 概述...............405
10.4.3 murder 部署和运用........406
第11 章 运维制度化与自管理............408
11.1 运维制度化...............................408
11.1.1 运维为什么要制度化..............................408
11.1.2 运维如何制度化.............409
11.1.3 SLA(Service Level Agreement)协议...........409
11.1.4 故障处理的五问法.........410
11.1.5 知识库..............................413
11.1.6 流程跟踪的Tracker系统..................................425
11.2 自管理.........................................431
11.2.1 时间管理..........................431
11.2.2 思维导图..........................433
11.2.3 Git 管理和应用...............434
11.2.4 交流与活动.....................445
|
內容試閱:
|
运维是一个古老但愈发新奇的职位。在不同时代、不同公司,都有不同的称呼。在万维网到来之前漫长的几十年中,运维工作大都由系统本身的开发人员来完成,他们很自豪地给自己加上了系统管理者(System Administrator)的头衔。随着万维网的出现和发展,计算机系统管理者中也就出现了专注于网站管理的人群,这些人自称为网站管理者,至今我们依然可以在一些历史悠久的软件(比如Apache、Squid)的配置中,看到专门的指令来设定这个身份。与此同时,在互联网的另一端(接入端)——为普及上网而大量出现的网吧和网城中,另一批专注于网络接入、局域网共享和桌面应用管理的人群,则被称为“网吧管理员”。接入端牢牢占据了绝大多数人对互联网的第一印象,并将他们所能触及的方面认定为互联网从业人员的全部,即软件开发者和网络管理者。
毫不讳言,笔者在五年前(大学毕业时),同样以这种眼光看待自己“很熟悉”的这个互联网。
那么,除去接入端的网管,在互联网的另一端的管理者们到底是什么状态呢?
先说看得见的一面:每次当你发现网页变样了,这说明网站管理者完成了一次应用发布;每次你投诉访问有问题并附上截图,这意味着网站管理者要开始一次故障排查和修复;每次你觉得比上次访问快一点了,这说明网站管理者已经悄悄结束了一次后台优化……
再说看不见的一面:管理者尽力为你提供优质的访问体验,也带来指数级增长的新访问者。一百万、一千万乃至更多,大家的访问体验都要一样好,数据都要一样可靠,甚至业大招贼后还要保护大家的信息不被窃取……这些问题的背后,都是网站管理者的工作。
正是由于网站管理者与访问者之间的频繁交流,以及网站访问数据对业务发展的支撑,慢慢地将管理者的职责从系统维护扩展到了运营相关的广泛领域,最终合二为一成为了“运维”,而这也是现代的专职的“网站运维”与“古代的”模糊化的“系统管理员”最重要的区别。在业内公推为经典著作的Web Operations 一书中,甚至专门有第8 章“Community Management and Web Operations”来讲述运维和用户交流、社区管理相关的内容。
从上一代互联网巨头引申出网站运维这个独立的职位到现在,运维的职能依然在不断细化和变化——网络运维、系统运维、应用运维、数据库运维,甚至更细分的CDN 运维和业务变更运维,都有专门的人员和团队来负责。运维团队甚至不再仅仅是网站服务的支持方,还越来越以网站内部的技术需求方的角色出现,进行广泛而细心的考察,采取更激进的方法,从而提升网站的单位成本效益。
从大概一两年前开始,另一个新的概念“敏捷运维”(DevOps)跟随云计算的浪潮出现。从思想和理论上,目前对其依然没有准确的定义,但从技术实质上,无非是在保证产品质量和访问性能的前提下提高产品发布的频率,“自动化一切可自动化的工作”加上“充分了解业务流程”——而这本来就是一个优秀的运维人员应该去实现的事情!
了解业务流程是一件取决于个人偏好和公司文化的事情,虽然笔者在过去的工作经历中见过不少比相应的开发负责人还了解业务的老运维人员,但是这方面确实很难说出太多可以循序渐进的道理,还是让我们先掌握那些可以帮助我们“Laziness, Impatience and Hubris”(程序员的三大美德——懒惰、急躁和傲慢——出自Larry Wall的Programming Perl)地完成网站运维工作的技术吧!
饶琛琳
|
|