惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
L
LINUX DO - 热门话题
Blog — PlanetScale
Blog — PlanetScale
博客园 - Franky
J
Java Code Geeks
腾讯CDC
博客园 - 聂微东
The Cloudflare Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
Last Week in AI
Last Week in AI
量子位
Stack Overflow Blog
Stack Overflow Blog
Microsoft Security Blog
Microsoft Security Blog
Google DeepMind News
Google DeepMind News
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Schneier on Security
C
CERT Recently Published Vulnerability Notes
Latest news
Latest news
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
有赞技术团队
有赞技术团队
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
Securelist
AWS News Blog
AWS News Blog
GbyAI
GbyAI
L
LINUX DO - 最新话题
大猫的无限游戏
大猫的无限游戏
Forbes - Security
Forbes - Security
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Attack and Defense Labs
Attack and Defense Labs
C
CXSECURITY Database RSS Feed - CXSecurity.com
Y
Y Combinator Blog
W
WeLiveSecurity
T
Threatpost
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
P
Proofpoint News Feed
D
DataBreaches.Net
博客园 - 三生石上(FineUI控件)
V
V2EX
N
News and Events Feed by Topic
Google DeepMind News
Google DeepMind News
D
Docker
The Hacker News
The Hacker News
A
About on SuperTechFans
Security Latest
Security Latest
NISL@THU
NISL@THU
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Cisco Talos Blog
Cisco Talos Blog
博客园_首页
H
Hacker News: Front Page

犀利豆的博客

《SRE google 运维解密》读书笔记 (六) 《SRE google 运维解密》读书笔记 (五) 《SRE google 运维解密》读书笔记 (四) 《SRE google 运维解密》读书笔记 (二) 《SRE google 运维解密》读书笔记 (一) 2021 总结 终于有一个 Java 可以用的微信机器人了 Vertx入门到实战—实现钉钉机器人内网穿透代理 钉钉机器人回调内网穿透代理--使用篇 周末补习(一)trie 树 那些有趣的代码(三)--勤俭持家的 ArrayList 那些有趣的代码(二)--偏不听父母话的 Tomcat 类加载器 那些有趣的代码(一)--有点萌的 Tomcat 的线程池 从需求第三定律说起--为什么知乎的回答质量下降了 如何利用 Spring Hibernate 高级特性设计实现一个权限系统 居然有人能忘记吃饭?写个微信机器人提醒他 我的2018年总结 从 LongAdder 中窥见并发组件的设计思路 徒手撸框架--实现 RPC 远程调用 我的写作工具链 Java 渲染 docx 文件,并生成 pdf 加水印 撸码的福音--变量名生成器的实现 Raft 协议学习笔记 dubbo 源码学习(一)开篇 Redis 命令的执行过程 Redis 中的事件驱动模型 Redis 数据库、键过期的实现 Redis 的基础数据结构(三)对象 Redis 的基础数据结构(二) 整数集合、跳跃表、压缩列表 Redis 的基础数据结构(一) 可变字符串、链表、字典 线程池 execute() 的工作逻辑 JAVA 中的 CAS 徒手撸框架--高并发环境下的请求合并 徒手撸框架--实现Aop 徒手撸框架--实现IoC 2017个人总结 最近遇到的几个问题集合 Redis RedLock 完美的分布式锁么? JAVA 8入门(二)流 JAVA 8入门(一)Lambda表达式 有道 Alfred Workflow 威力加强版 Kafka实现原理笔记 《交易系统:更新与跨越》读后笔记 Netty-Apns接入实现 Future研究 Hystrix入门研究 Redis实现分布式锁
《SRE google 运维解密》读书笔记 (三)
Zhengxin Diao · 2022-05-02 · via 犀利豆的博客

应急事件响应

测试导致的事故

SRE 故意破坏系统,利用这些测试发现系统的薄弱地方。

在某次测试中发现了额外的系统依赖。

响应

  • 终止测试
  • 用以前 测试过的方法 回滚了数据
  • 找到开发者修复了相关问题
  • 制定了周期性测试机制来保证问题不重现

事后总结

好的方面:
事先沟通,有足够信息推测是测试造成的问题。
快速恢复了系统。
遗留一个代办,彻底修复问题。制定了周期性的测试流程。

不好的方面:
虽然评估了,但是还是发生了问题
没有正确遵守响应流程
没有测试“回滚机制”,发生问题后回滚机制失效。

变更导致的事故

某个周五,某个配置文件推送到所有的服务器。触发了 bug。

响应

  • 各个系统开始报警
  • on-call 工程师前往灾难安全屋。(有google 生产环境专线)
  • 5 分钟以后发布这个配置的工程师发现问题,回滚发布
  • 某些服务由于这次发布,触发了别的 bug 一小时后才回复

事后总结

好的方面:

  • 监控系统及时报告问题
  • 问题被检测后,应急流程处理得当。SRE 要保持一些可靠的,低成本的访问系统
  • Google 还有命令行工具和其他访问方式确保能够在其他条件无法访问的时候进行更新和变更回滚。且要频繁测试,让工程师熟悉他们。
  • 限速机制,限制了错误的扩散。抑制了崩溃的速度。

从中学到的:

  • 变更经过了完整的部署测试没有触发 bug,评估并不危险,但是在全球部署的时候触发了 bug
  • 不管风险看起来有多小,都需要严格测试
  • 监控系统在灾难中,发出了很多报警,干扰了 on-call 工程师的工作

流程导致的严重事故

常规自动化测试,对一个集群发送了两次下线请求,触发 bug将全球所有数据中心的的所有机器加入到了磁盘销毁的队列

响应

  • on-call工程师收到报警,将流量导入其他地区
  • 停止了自动化工具
  • 用户导入其他地方,响应时间变长,但是还是可以正常使用
  • 恢复数据。

总结

好的地方

  • 反向代理可以迅速的切换用户流量。
  • 自动化下线虽然一起下线了监控系统,on-call 工程师快速恢复系统。
  • 工程师训练有素,多亏了应急事故管理系统和平时的训练。

从中学到的:

  • 事故的根源在于自动化系统对发出的指令缺乏合适的合理性校验。

所有的问题都有解决方案

系统不但一定会出问题,而且会以没有人能够想到的方式出现问题。但是所有的问题都有对应的解决方案。如果想不到解决问题的方法,那就再更大的范围里面寻求帮助。很多时候触发事故的人对事故最了解。

一旦紧急事故过去之后,一定要留出时间书写事后报告。

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

  • 为事故保留记录
  • 提出那些大的,甚至不可能的问题:加入…
  • 鼓励主动测

小结

遇到事故,不要惊慌失措,必要时引入其他人帮助,事后需要记录。把系统改善为能够更好的处理同类故障。

紧急事故管理

无流程管理事故的剖析

  • 过于关注技术问题
  • 沟通不畅
  • 不请自来

事故管理的要素

嵌套式责任分离

事故处理中,让每个人清楚自己的职责。如果一个人处理的事务过多,就应该申请更多人力资源。把一部分任务交给别人。
事故中的角色:

  • 事故总控
    负责组建事故处理团队,负责协调工作
  • 事务处理团队
    具体处理事故的团队,唯一能够对系统进行修改的团队
  • 发言人
    向事务处理团队和关心事故的人发送周期性的通知。维护事故文档。
  • 规划负责人
    为团队提供支持。如填写事故报告,定晚餐,安排交接。

控制中心

很多时候可以设立一个”作战室“。

IRC 处理事故很有帮助。 IRC 很可靠,记录下所有沟通记录。

实时的事故状态文档

事故总控人最重要的职责就是维护事故的实时文档。最好可以多人同时编辑。

明确公开的职责交接

事故总控人的职责能够明确,公开的进行交接很重要。交接结果要宣布给正在处理事故的其他人。

什么时候对外宣布事故

  • 是否需要引入第二个团队来帮助处理问题
  • 是否时候正在影响最终客户
  • 集中分析一个小时后,这个问题是不是依然没有得到解决

最佳实践

  • 划分优先级
  • 事前准备
  • 信任
  • 反思
  • 考虑替代方案
  • 练习
  • 换位思考