硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

人为失误导致 AWS S3 的 US-EAST-1 区服务宕机

  • 2017-03-07
  • 本文字数:1219 字

    阅读完需:约 4 分钟

由一次失误引发的连锁反应导致了很多 S3 服务器宕机,其中包括两个影响 S3 运行的关键子系统。由此导致了 S3 的故障,影响到了不仅 S3 本身还有其他一些依赖 S3 的服务。四个小时后 S3 才重新恢复正常。

Amazon AWS 故障十分罕见,一旦发生整个因特网都能感受得到,不少服务会直接受到影响。近期这次故障于 2 月 28 日发生在北弗吉尼亚地区(US-EAST-1)。不仅 S3 运行瘫痪了,而且波及一系列依赖 S3 的 AWS 服务,包括 EC2、EFS、API Gateway、Athena、Cloudsearch、MapReduce 等。这些服务要么是在功能上出现大量错误,要么是完全无法工作。

在四个小时的瘫痪期间,据报告有不少企业服务下线或是受到严重干扰,包括 Expedia、GitLab、GitHub、GroupMe、IFTTT、Medium、Nest、Quora、Slack、The Verge、Trello、Twitch、Wix 等。就连 Amazon 自身的 Alexa 也出现故障了,导致 AWS 状态仪表盘有两个小时未实时更新。Amazon 借助 Twitter 发布错误报告,期间他们只得为状态页面临时添加一个手工编辑的横幅。

Amazon 事后给出了对该次事件分析的诊断报告。当时有一个Amazon 团队正在调试S3 的计费问题,有人想要输入一条命令,从S3 的一个计费子系统中删除一小部分服务器。但是这个工程师输入了错误的命令,导致了大量的S3 服务器关闭,包括两台在另外两个子系统中起关键作用的S3 服务器。其中一个子系统是为整个区域的S3 提供索引服务的,影响到GET、PUT、LIST 和DELETE 命令;另一个子系统用于S3 部署,涉及新对象的空间分配。因为这两个子系统停止工作,S3 的功能产生了大量错误,影响到很多用户。

虽然AWS 具备快速恢复单个子系统故障的操作规程,但是由于索引子系统已经有数年从未重启过,索引已增长得十分庞大,因此还是需要相当长的重启事件。虽然功能最终得以恢复,但是比预想的要慢。Amazon 已经计划今年稍后会对索引子系统进行分区,将索引分区为更小的块,使得重启更加快速。现在他们已经立刻着手进行分区,为将来可能发生的瘫痪情况做好准备。他们对工具做了修改,限制了每条命令可以关闭的服务器数量,还限制使用单个命令关闭整个子系统。他们还将在多个区域实现分布式的S3 仪表盘,以确保在一个区域停止服务时仪表盘依然保持工作。

Amazon 在 2011 年曾经历过一次瘫痪,也是发生在 US 东部区域,那一次瘫痪了 4 天时间。从两次故障中学习到的并得以应用的基本经验教训是,系统创建不应仅依赖在单一区域上,如果当前区域发生故障,可以切换到其他区域。Netflix 已经这样部署了,其他系统同样也可以。但是这会增加网络主机服务费,企业总是倾向于尽量地降低费用。总体来说,Amazon AWS 是可靠的,但是服务总不可避免会有瘫痪情况。所有云服务提供商皆是如此。

查看英文原文: A Human Error Took Down AWS S3 US-EAST-1


感谢薛命灯对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-03-07 18:002142
用户头像

发布了 227 篇内容, 共 84.1 次阅读, 收获喜欢 28 次。

关注

评论

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

Python量化数据仓库搭建系列3:数据落库代码封装

恒生LIGHT云社区

量化投资 量化交易 量化

Rust 元宇宙 7—— 异步和消息

Miracle

rust 异步 元宇宙

架构训练营 - 模块六

Geek_9de3de

架构实战营

在线文本并集计算工具

入门小站

工具

GitHub上星标39.9k+的开源类库,忍不住分享下

沉默王二

Java

元宇宙是人类文明不可避免的一次内卷

CECBC

Python Qt GUI设计:QClipboard剪贴数据类(基础篇—19)

不脱发的程序猿

Python PyQt GUI设计 QClipboard 剪贴板

AOP 插件就这?上手不用两分钟!!

4ye

Java spring 程序员 后端 签约计划第二季

一文读懂敏捷开发的发布策略

华为云开发者联盟

DevOps 运维 敏捷 开发 发布策略

面试官:final、finally、finalize 有什么区别?

王磊

java面试

[Pulsar] 消息的消费

Zike Yang

Apache Pulsar 11月日更

29 K8S之ReplicaSet控制器

穿过生命散发芬芳

k8s 11月日更

【死磕Java并发】-----J.U.C之深入分析CAS

chenssy

11月日更 死磕 Java 死磕 Java 并发

架构营模块五作业

GTiger

架构训练营 - 模块五

Geek_9de3de

架构实战营

12.04 Serverless Meetup 深圳站 | Call 你来参加

阿里巴巴云原生

阿里云 Serverless 云原生 活动

OpenELB 进入 CNCF Sandbox,让私有化环境对外暴露服务更简单

青云技术社区

云计算 云原生

微博系统中”微博评论“的高性能高可用计算架构设计

Beyond Ryan

企业决策智能项目的五种失败姿势

脑极体

DDD领域驱动设计落地实践系列:战略设计和战术设计

慕枫技术笔记

Java 后端 签约计划第二季

使用ES6编写一个超简单的搜索算法

吴脑的键客

JavaScript 大前端

面试官:说一下final关键字和final的4种用法?

王磊

从1天到10分钟的超越,华为云DRS在背后做了这些

华为云开发者联盟

数据库 数据 报表 华为云DRS 在线交易

面试官:int和Integer有什么区别?为什么要有包装类?

王磊

微信程序开发系列教程(一)开发环境搭建

汪子熙

JavaScript node.js 微信 11月日更 微信开发

中国首批区块链订单融资缘何落地雄安?

CECBC

spring-boot-devtools 快速重启的秘密

4ye

Java spring 程序员 后端 签约计划第二季

如何用JavaScript实现2+2=5?

汪子熙

JavaScript 大前端 语音识别 语音合成 11月日更

使用JDK自带的VisualVM进行Java程序的性能分析

汪子熙

Java jdk 性能 性能调试 11月日更

激发数字新活力 打造发展新优势

CECBC

Spring AOP内功修炼

4ye

Java spring 程序员 后端 签约计划第二季

人为失误导致AWS S3的US-EAST-1区服务宕机_亚马逊云科技_Abel Avram_InfoQ精选文章