写点什么

Windows Azure 中断调查

  • 2012-03-18
  • 本文字数:1137 字

    阅读完需:约 4 分钟

近日,微软 Azure 云计算平台部分服务发生中断,起因是一个闰年 bug。Azure 服务器和软件时间刚过 2 月 29 日 UST 时间 00:00,服务故障便拉开了序幕。日期变化暴露代码中存在缺陷——闰年没有被正确处理好。随后附加服务器的部署,让整个 Windows Azure 云平台陷入了级联错误。

那么什么是导致失败的根本原因呢?Laing解释说,应用程序虚拟机使用传输证书与托管操作系统之间进行安全通信。传输证书创建后的持续时间仅被设计成一年。原有的缺陷代码在创建失效日期时,采用的方法是将当前日期的年份字段加1,结果2012 年2 月29 日创建的传输证书失效期被定为一个不存在的日期——2013 年2 月29 日。该错误阻止了新的传输证书的创建,并成为了此次事件的导火索。

Laing 总结了微软采取的针对预防、检测、响应及恢复方面的几个步骤。此外,微软对于“所有使用 Windows Azure 计算、访问控制、服务总线与缓存”的用户,不管是否受到此次事件影响,都将提供 33% 的费用返还。

Windows Azure 服务仪表板

Windows Azure 中断时间线(以下所有时间均为美国太平洋时间)

2012-02-28 16:00 错误最开始发生在 2012 年 2 月 29 日 00:00。新的虚拟机无法生成正确证书,结果自行终止。25 分钟过后,托管操作系统重新启动虚拟机创建过程,但结果仍然失败。整个过程需要 3 次重启尝试,每次相距 25 分钟。

2012-02-28 17:15 在错误发生整整 75 分钟之后,误差阈值达至上限,失效集群通知首要响应人员“受影响的系统无法恢复”。

2012-02-28 18:38 响应团队初步确定问题出在日期 / 事件 bug 上。

2012-02-28 18:55 基于团队对问题的评估,也为了防止用户造成额外的损害,微软禁用了全球范围内所有集群的服务管理功能。

2012-02-28 22:00 响应团队为更新代码创建测试及上线计划。

2012-02-28 23:20 代码更新完毕。

2012-02-29 01:50 响应团队完成上线测试,将更新代码后的应用程序部署到测试集群中。

2012-02-29 02:11 团队完成对生产集群的补丁部署,同时开始向所有集群部署补丁。

2012-02-29 02:47 原有 bug 发生时,有 7 个集群在刚好处于部分更新状态。这 7 个集群收到的单独更新在部署之前并没有测试,结果又引入了另外一个 bug,继而导致网络连接失效。

2012-02-29 03:30 为这 7 个单独的集群创建修订后的补丁,并在部署前进行了测试。修订版本计划在 05:40 安装。

2012-02-29 05:23 微软宣布大部分客户的服务管理功能已经恢复(除了那单独的 7 个集群以外)。

2012-02-29 05:40 7 个单独的集群接受更新以恢复网络功能。

2012-02-29 08:00 7 个单独集群大部分可以运作。少数个别服务器由于各种不同的中断问题还存在错误,微软员工当天继续工作以进行修补。

2012-03-01 02:15 所有集群服务全部功恢复正常。

查看英文原文: http://www.infoq.com/news/2012/03/azure_outage

2012-03-18 01:29907
用户头像

发布了 125 篇内容, 共 33.4 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
发现更多内容

Druid 从控制台(Druid console)从 SQL 脚本转换为 JSON 格式的方法

HoneyMoose

Druid 的几个查询实例

HoneyMoose

synchronized 优化手段之锁膨胀机制!

王磊

Java 并发 8月日更

复杂多变场景下的Groovy脚本引擎实战

vivo互联网技术

敏捷开发 脚本语言

Springboot 配置文件、隐私数据脱敏的最佳实践(原理+源码)

程序员小富

Java springboot 数据安全 数据脱敏

【设计模式】原型

Andy阿辉

C# 编程 后端 设计模式 8月日更

多语言ASR?没有什么听不懂,15种语言我全都要

华为云开发者联盟

语言 ASR 多语言ASR 单语模型 Conformer

原来select语句在MySQL中是这样执行的!看完又涨见识了!这回我要碾压面试官!

冰河

MySQL 面试 精通MySQL SELECT查询流程 查询缓存

PostgreSQL 中如何控制行级安全和列级安全

Qunar技术沙龙

sql postgresql 运维 安全 权限

鸿蒙内核之内存调测:动态内存池信息统计

华为云开发者联盟

鸿蒙 内存 动态内存池 内存信息

【Maven技术专题】如何使用Assembly插件实现自定义打包

洛神灬殇

maven assembly 8月日更

手撸二叉树之对称二叉树

HelloWorld杰少

算法和数据结构 8月日更

深度学习中的分布式训练

安第斯智能云

人工智能 深度学习

Druid 通过 dsql 运行的时候提示错误 urllib2

HoneyMoose

netty系列之:netty初探

程序那些事

Java 响应式编程 Netty nio 程序那些事

【Flutter 专题】132 图解 PaginatedDataTable 分页表格

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8月日更

Python OpenCV 图像区域轮廓标记,可用于框选各种小纸条

梦想橡皮擦

8月日更

基于ECS快速搭建 Docker 环境

若尘

Docker 服务器 8月日更

索信达控股:银行4.0的AI世界——开启算法力的时代

索信达控股

人工智能 金融科技 银行

基于docker的分布式性能测试框架功能验证(二)

FunTester

分布式 性能测试 接口测试 测试框架 测试开发

重磅 | 用友《数字化中台》震撼上市!数智化转型和商业创新实践的企业级经验!

博文视点Broadview

百度爱番番移动端网页秒开实践

百度Geek说

大前端 优化 网页加速 移动端

docker入门:postgresql安装及可视化界面portainer使用

小鲍侃java

8月日更

十大排序算法--插入排序

Ayue、

排序算法 8月日更

一文带你搞定AOP切面

华为云开发者联盟

spring aop 切面编程 面向切面编程 切面

分布式性能测试框架用例方案设想(二)

FunTester

分布式 性能测试 接口测试 测试框架 测试开发

Python代码阅读(第1篇):列表映射后的平均值

Felix

Python 编程 Code Programing 阅读代码

kafka SpringBoot

Rubble

kafka springboot 8月日更

【Vue2.x 源码学习】第二十四篇 - 异步更新流程

Brave

源码 vue2 8月日更

Rust从0到1-模式-可反驳性

rust 模式 Patterns Refutability 可反驳性

Design for failure常见的12种设计思想

架构精进之路

降级 重试 容错 8月日更

Windows Azure中断调查_Windows Azure_Jeff Martin_InfoQ精选文章