当前位置:首页 > 工业技术
SRE  Google运维解密
SRE  Google运维解密

SRE Google运维解密PDF电子书下载

工业技术

  • 电子书积分:15 积分如何计算积分?
  • 作 者:(美)BERSYBEYERCHIRISJONES(美)JENNIFERPETOFFNIALLRICHARDMURPHY著;孙宇聪译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2016
  • ISBN:9787121297267
  • 页数:452 页
图书介绍:在本书中,不仅展示了Google是如何运用各种计算机工具软件、硬件以持续部署和监控一些世界上最大的软件系统的。还展示了在运维过程中,Google工程师团队是如何学习、成长、反复修改,最后定义出一套完整的工具和科技体系的过程。本书适合各种水平的运维工程师参考使用。
《SRE Google运维解密》目录
标签:解密

第Ⅰ部分 概览 2

第1章 介绍 2

系统管理员模式 2

Google的解决之道:SRE 4

SRE方法论 6

确保长期关注研发工作 6

在保障服务SLO的前提下最大化迭代速度 7

监控系统 8

应急事件处理 8

变更管理 9

需求预测和容量规划 9

资源部署 10

效率与性能 10

小结 10

第2章 Google生产环境:SRE视角 11

硬件 11

管理物理服务器的系统管理软件 13

管理物理服务器 13

存储 14

网络 15

其他系统软件 16

分布式锁服务 16

监控与警报系统 16

软件基础设施 17

研发环境 17

莎士比亚搜索:一个示范服务 18

用户请求的处理过程 18

任务和数据的组织方式 19

第Ⅱ部分 指导思想 23

第3章 拥抱风险 23

管理风险 23

度量服务的风险 24

服务的风险容忍度 25

辨别消费者服务的风险容忍度 26

基础设施服务的风险容忍度 28

使用错误预算的目的 30

错误预算的构建过程 31

好处 32

第4章 服务质量目标 34

服务质量术语 34

指标 34

目标 35

协议 36

指标在实践中的应用 37

运维人员和最终用户各关心什么 37

指标的收集 37

汇总 38

指标的标准化 39

目标在实践中的应用 39

目标的定义 40

目标的选择 40

控制手段 42

SLO可以建立用户预期 42

协议在实践中的应用 43

第5章 减少琐事 44

琐事的定义 44

为什么琐事越少越好 45

什么算作工程工作 46

琐事繁多是不是一定不好 47

小结 48

第6章 分布式系统的监控 49

术语定义 49

为什么要监控 50

对监控系统设置合理预期 51

现象与原因 52

黑盒监控与白盒监控 53

4个黄金指标 53

关于长尾问题 54

度量指标时采用合适的精度 55

简化,直到不能再简化 55

将上述理念整合起来 56

监控系统的长期维护 57

Bigtable SRE:警报过多的案例 57

Gmail:可预知的、可脚本化的人工干预 58

长跑 59

小结 59

第7章 Google的自动化系统的演进 60

自动化的价值 60

一致性 60

平台性 61

修复速度更快 61

行动速度更快 62

节省时间 62

自动化对Google SRE的价值 62

自动化的应用案例 63

Google SRE的自动化使用案例 63

自动化分类的层次结构 64

让自己脱离工作:自动化所有的东西 66

舒缓疼痛:将自动化应用到集群上线中 67

使用Prodtest检测不一致情况 68

幂等地解决不一致情况 69

专业化倾向 71

以服务为导向的集群上线流程 72

Borg:仓库规模计算机的诞生 73

可靠性是最基本的功能 74

建议 75

第8章 发布工程 76

发布工程师的角色 76

发布工程哲学 77

自服务模型 77

追求速度 77

密闭性 77

强调策略和流程 78

持续构建与部署 78

构建 78

分支 79

测试 79

打包 79

Rapid系统 80

部署 81

配置管理 81

小结 82

不仅仅只对Google有用 83

一开始就进行发布工程 83

第9章 简单化 85

系统的稳定性与灵活性 85

乏味是一种美德 86

我绝对不放弃我的代码 86

“负代码行”作为一个指标 87

最小API 87

模块化 87

发布的简单化 88

小结 88

第Ⅲ部分 具体实践 93

第10章 基于时间序列数据进行有效报警 93

Borgmon的起源 94

应用软件的监控埋点 95

监控指标的收集 96

时间序列数据的存储 97

标签与向量 98

Borg规则计算 99

报警 104

监控系统的分片机制 105

黑盒监控 106

配置文件的维护 106

十年之后 108

第11章 on-call轮值 109

介绍 109

on-call工程师的一天 110

on-call工作平衡 111

数量上保持平衡 111

质量上保持平衡 111

补贴措施 112

安全感 112

避免运维压力过大 114

运维压力过大 114

奸诈的敌人——运维压力不够 115

小结 115

第12章 有效的故障排查手段 116

理论 117

实践 119

故障报告 119

定位 119

检查 120

诊断 122

测试和修复 124

神奇的负面结果 125

治愈 126

案例分析 127

使故障排查更简单 130

小结 130

第13章 紧急事件响应 131

当系统出现问题时怎么办 131

测试导致的紧急事故 132

细节 132

响应 132

事后总结 132

变更部署带来的紧急事故 133

细节 133

事故响应 134

事后总结 134

流程导致的严重事故 135

细节 135

灾难响应 136

事后总结 136

所有的问题都有解决方案 137

向过去学习,而不是重复它 138

为事故保留记录 138

提出那些大的,甚至不可能的问题:假如 138

鼓励主动测试 138

小结 138

第14章 紧急事故管理 140

无流程管理的紧急事故 140

对这次无流程管理的事故的剖析 141

过于关注技术问题 141

沟通不畅 141

不请自来 142

紧急事故的流程管理要素 142

嵌套式职责分离 142

控制中心 143

实时事故状态文档 143

明确公开的职责交接 143

一次流程管理良好的事故 144

什么时候对外宣布事故 144

小结 145

第15章 事后总结:从失败中学习 146

Google的事后总结哲学 146

协作和知识共享 148

建立事后总结文化 149

小结以及不断优化 151

第16章 跟踪故障 152

Escalator 152

Outalator 153

聚合 154

加标签 155

分析 155

未预料到的好处 156

第17章 测试可靠性 157

软件测试的类型 158

传统测试 159

生产测试 160

创造一个构建和测试环境 163

大规模测试 165

测试大规模使用的工具 166

针对灾难的测试 167

对速度的渴求 168

发布到生产环境 170

允许测试失败 170

集成 172

生产环境探针 173

小结 175

第18章 SRE部门中的软件工程实践 176

为什么软件工程项目对SRE很重要 176

Auxon案例分析:项目背景和要解决的问题 177

传统的容量规划方法 177

解决方案:基于意图的容量规划 179

基于意图的容量规划 180

表达产品意图的先导条件 181

Auxon简介 182

需求和实现:成功和不足 183

提升了解程度,推进采用率 185

团队内部组成 187

在SRE团队中培养软件工程风气 187

在SRE团队中建立起软件工程氛围:招聘与开发时间 188

做到这一点 189

小结 190

第19章 前端服务器的负载均衡 191

有时候硬件并不能解决问题 191

使用DNS进行负载均衡 192

负载均衡:虚拟IP 194

第20章 数据中心内部的负载均衡系统 197

理想情况 198

识别异常任务:流速控制和跛脚鸭任务 199

异常任务的简单应对办法:流速控制 199

一个可靠的识别异常任务的方法:跛脚鸭状态 200

利用划分子集限制连接池大小 201

选择合适的子集 201

子集选择算法一:随机选择 202

子集选择算法二:确定性算法 204

负载均衡策略 206

简单轮询算法 206

最闲轮询策略 209

加权轮询策略 210

第21章 应对过载 212

QPS陷阱 213

给每个用户设置限制 213

客户端侧的节流机制 214

重要性 216

资源利用率信号 217

处理过载错误 217

决定何时重试 218

连接造成的负载 220

小结 221

第22章 处理连锁故障 223

连锁故障产生的原因和如何从设计上避免 224

服务器过载 224

资源耗尽 225

服务不可用 228

防止软件服务器过载 228

队列管理 229

流量抛弃和优雅降级 230

重试 231

请求延迟和截止时间 234

慢启动和冷缓存 236

保持调用栈永远向下 238

连锁故障的触发条件 238

进程崩溃 239

进程更新 239

新的发布 239

自然增长 239

计划中或计划外的不可用 239

连锁故障的测试 240

测试直到出现故障,还要继续测试 240

测试最常用的客户端 241

测试非关键性后端 242

解决连锁故障的立即步骤 242

增加资源 242

停止健康检查导致的任务死亡 242

重启软件服务器 242

丢弃流量 243

进入降级模式 243

消除批处理负载 244

消除有害的流量 244

小结 244

第23章 管理关键状态:利用分布式共识来提高可靠性 246

使用共识系统的动力:分布式系统协调失败 248

案例1:脑裂问题 249

案例2:需要人工干预的灾备切换 249

案例3:有问题的小组成员算法 249

分布式共识是如何工作的 250

Paxos概要:协议示例 251

分布式共识的系统架构模式 251

可靠的复制状态机 252

可靠的复制数据存储和配置存储 252

使用领头人选举机制实现高可用的处理系统 253

分布式协调和锁服务 253

可靠的分布式队列和消息传递 254

分布式共识系统的性能问题 255

复合式Paxos:消息流过程详解 257

应对大量的读操作 258

法定租约 259

分布式共识系统的性能与网络延迟 259

快速Paxos协议:性能优化 260

稳定的领头人机制 261

批处理 262

磁盘访问 262

分布式共识系统的部署 263

副本的数量 263

副本的位置 265

容量规划和负载均衡 266

对分布式共识系统的监控 270

小结 272

第24章 分布式周期性任务系统 273

Cron 273

介绍 273

可靠性 274

Cron任务和幂等性 274

大规模Cron系统 275

对基础设施的扩展 275

对需求的扩展 276

Google Cron系统的构建过程 277

跟踪Cron任务的状态 277

Paxos协议的使用 277

领头人角色和追随者角色 278

保存状态 281

运维大型Cron系统 282

小结 283

第25章 数据处理流水线 284

流水线设计模式的起源 284

简单流水线设计模式与大数据 284

周期性流水线模式的挑战 285

工作分发不均造成的问题 285

分布式环境中周期性数据流水线的缺点 286

监控周期性流水线的问题 287

惊群效应 287

摩尔负载模式 288

Google Workflow简介 289

Workflow是模型—视图—控制器(MVC)模式 290

Workflow中的执行阶段 291

Workflow正确性保障 291

保障业务的持续性 292

小结 294

第26章 数据完整性:读写一致 295

数据完整性的强需求 296

提供超高的数据完整性的策略 297

备份与存档 298

云计算环境下的需求 299

保障数据完整性和可用性:Google SRE的目标 300

数据完整性是手段,数据可用性是目标 300

交付一个恢复系统,而非备份系统 301

造成数据丢失的事故类型 301

维护数据完整性的深度和广度的困难之处 303

Google SRE保障数据完整性的手段 304

24种数据完整性的事故组合 304

第一层:软删除 305

第二层:备份和相关的恢复方法 306

额外一层:复制机制 308

1T vs.1 E:存储更多数据没那么简单 309

第三层:早期预警 310

确保数据恢复策略可以正常工作 313

案例分析 314

Gmail——2011年2月:从GTape上恢复数据(磁带) 314

Google Music——2012年3月:一次意外删除事故的检测过程 315

SRE的基本理念在数据完整性上的应用 319

保持初学者的心态 319

信任但要验证 320

不要一厢情愿 320

纵深防御 320

小结 321

第27章 可靠地进行产品的大规模发布 322

发布协调工程师 323

发布协调工程师的角色 324

建立发布流程 325

发布检查列表 326

推动融合和简化 326

发布未知的产品 327

起草一个发布检查列表 327

架构与依赖 328

集成 328

容量规划 328

故障模式 329

客户端行为 329

流程与自动化 330

开发流程 330

外部依赖 331

发布计划 331

可靠发布所需要的方法论 332

灰度和阶段性发布 332

功能开关框架 333

应对客户端滥用行为 334

过载行为和压力测试 335

LCE的发展 335

LCE检查列表的变迁 336

LCE没有解决的问题 337

小结 338

第Ⅳ部分 管理 341

第28章 迅速培养SRE加入on-call 341

新的SRE已经招聘到了,接下来怎么办 341

培训初期:重体系,而非混乱 344

系统性、累积型的学习方式 345

目标性强的项目工作,而非琐事 346

培养反向工程能力和随机应变能力 347

反向工程:弄明白系统如何工作 347

统计学和比较性思维:在压力下坚持科学方法论 347

随机应变的能力:当意料之外的事情发生时怎么办 348

将知识串联起来:反向工程某个生产环境服务 348

有抱负的on-call工程师的5个特点 349

对事故的渴望:事后总结的阅读和书写 349

故障处理分角色演习 350

破坏真的东西,并且修复它们 351

维护文档是学徒任务的一部分 352

尽早、尽快见习on-call 353

on-call之后:通过培训的仪式感,以及日后的持续教育 354

小结 354

第29章 处理中断性任务 355

管理运维负载 356

如何决策对中断性任务的处理策略 356

不完美的机器 357

流状态 357

将一件事情做好 358

实际一点的建议 359

减少中断 361

第30章 通过嵌入SRE的方式帮助团队从运维过载中恢复 363

第一阶段:了解服务,了解上下文 364

确定最大的压力来源 364

找到导火索 364

第二阶段:分享背景知识 365

书写一个好的事后总结作为示范 366

将紧急事件按类型排序 366

第三阶段:主导改变 367

从基础开始 367

获取团队成员的帮助 367

解释你的逻辑推理过程 368

提出引导性问题 368

小结 369

第31章 SRE与其他团队的沟通与协作 370

沟通:生产会议 371

议程 372

出席人员 373

SRE的内部协作 374

团队构成 375

高效工作的技术 375

SRE内部的协作案例分析:Viceroy 376

Viceroy的诞生 376

所面临的挑战 378

建议 379

SRE与其他部门之间的协作 380

案例分析:将DFP迁移到F1 380

小结 382

第32章 SRE参与模式的演进历程 383

SRE参与模式:是什么、怎么样以及为什么 383

PRR模型 384

SRE参与模型 384

替代性支持 385

PRR:简单PRR模型 386

参与 386

分析 387

改进和重构 387

培训 388

“接手”服务 388

持续改进 388

简单PRR模型的演进:早期参与模型 389

早期参与模型的适用对象 389

早期参与模型的优势 390

不断发展的服务:框架和SRE平台 391

经验教训 391

影响SRE的外部因素 392

结构化的解决方案:框架 392

新服务和管理优势 394

小结 395

第Ⅴ部分 结束语 398

第33章 其他行业的实践经验 398

有其他行业背景的资深SRE 399

灾难预案与演习 400

从组织架构层面坚持不懈地对安全进行关注 401

关注任何细节 401

冗余容量 401

模拟以及进行线上灾难演习 402

培训与考核 402

对详细的需求收集和系统设计的关注 402

纵深防御 403

事后总结的文化 403

将重复性工作自动化,消除运维负载 404

结构化和理性的决策 406

小结 407

第34章 结语 408

附录A系统可用性 411

附录B生产环境运维过程中的最佳实践 412

附录C事故状态文档示范 417

附录D事后总结示范 419

附录E发布协调检查列表 423

附录F生产环境会议记录示范 425

参考文献 427

索引 439

相关图书
作者其它书籍
返回顶部