summary
2021-12-15 00:17 UTC,PagerDuty 在其基础设施中部署了一项 DNS 配置变更,该变更包含一个在测试环境未被发现的缺陷,立即导致容器编排集群内运行的所有服务都无法解析 DNS,进而引发事件通知、API 等大面积失败。
timeline
00:17 UTC 部署带缺陷的 DNS 配置变更;容器编排集群内服务随即全部 DNS 解析失败;工程团队定位并回滚/修正该 DNS 配置,逐步恢复集群内解析与上层服务;数小时内恢复。
root_cause
DNS 配置变更存在缺陷(测试环境未覆盖该代码路径/配置组合),部署后使集群的 DNS 解析失效。本质是配置变更缺少对生产等价环境的充分验证与灰度。
amplifiers
① 单条 DNS 配置缺陷即让整个容器集群失聪:所有服务依赖 DNS。② 测试环境未复现:变更在预发未被拦截。③ 无灰度/快速回滚,恢复依赖人工定位。④ 事件通知系统自身依赖 DNS,形成排障与通知的双重受损。
mitigation
修正并回滚该 DNS 配置,恢复集群内解析;后续加强 DNS 类配置变更的等价环境验证与灰度发布。
lessons
DNS 是微服务架构的命脉,任何 DNS 配置变更都必须在等价生产环境中充分验证并灰度;核心配置变更需可一键回滚;排障/通知通道不应强依赖其监控的对象。
checklist
① DNS 配置变更在等价环境做端到端验证。② 关键网络配置走灰度与自动回滚。③ 监控对「集群内 DNS 解析失败」设即时告警。④ 通知/排障链路去依赖化。