InfoQ 编辑部出品——2021年度技术盘点与展望 了解详情
写点什么

Azure 全球中断三小时:微软回复称 DNS 更新故障

  • 2019 年 5 月 05 日
  • 本文字数:1386 字

    阅读完需:约 5 分钟

Azure全球中断三小时:微软回复称DNS更新故障

5 月 2 日 19:29 到 22:35 UTC 之间,微软 Azure 发生了三小时左右中断,导致 Azure、Microsoft 365、Dynamics 和 DevOps 等多项服务出现连接问题。


根据最新消息,本次事故发生在 DNS 迁移期间,具体时间为 5 月 2 日 19:29 到 22:35 UTC 之间,大多数服务在 UTC 时间 21:40 恢复,其余服务在 22:35 UTC 恢复。根据微软方面的回复,造成该事故的根本原因如下:


作为计划维护活动的一部分,微软工程师执行了配置更改,以更新用于访问多个微软服务(包括 Azure 存储和 Azure SQL 数据库)的 DNS 区域名称服务器(name server)之一。更改过程失败导致这些区域的四个名称服务器(name server)之一指向没有数据的 DNS 服务器并返回否定响应。结果是,这些服务使用的域(例如database.windows.net)中大约 25%的查询产生了错误结果,并且这些服务的可访问性降低。因此,依赖于这些核心服务的多个其他 Azure 和 Microsoft 服务受到不同程度的影响。


该事件对 Azure 计算、存储、App Service、Azure AD 身份服务和 SQL 数据库产生了连锁反应。根据外媒 The Register 此前的报道,本次受影响的服务包括 SharePoint Online,OneDrive for Business,Microsoft Teams,Stream,Power BI,Planner,Forms,PowerApps,Dynamics 365,Intune 和 Office Licensing。



微软方面表示,此事件源于两个独立的错误和一些巧合,这两个错误本身其实不会产生影响:


1、微软工程师执行了名称服务器(name server)委派更改以更新多个区域的名称服务器,包括 Azure 存储和 Azure SQL 数据库。其中,每个区域有四个名称服务器用于冗余,并且在此维护期间仅对一个名称服务器进行更新。用于进行更改的自动化参数配置错误导致名称服务器委派错误。


2、作为先前自动化工作的一部分,空区域文件存在于非指定委托的预期目标服务器上。这本身并不是问题,因为名称服务器没有为相关区域提供服务。


但是,由于此实例中更改自动化出现配置错误,被委派的目标名称服务器是空副本。因此,此名称服务器对区域中所有查询给出了否定(nxdomain)答案。由于该区域的四个名称服务器记录中只有一个是不正确的,因此受影响区域大约四分之一的查询收到不正确的否定响应。



为解决此问题,微软工程师通过将名称服务器值还原为先前的设置来更正委派问题。工程师验证所有响应都是正确的,DNS 解析器开始在 5 分钟内返回正确结果。某些访问错误值并缓存结果的应用程序和服务可能需要更长的恢复时间,直到错误的缓存信息到期为止。在事件发生期间,微软多次更新页面,并逐渐恢复服务。该公司向客户保证,DNS 记录在活动期间没有受到影响,并且 Azure DNS 本身仍然存在。


对此,微软方面建议用户可以执行以下操作(包括但不限于):


  • 执行名称服务器更新代码中的附加检查,以防止意外更改(正在进行)。

  • 预执行建模,以准确预测变更结果,并在执行[正在进行]之前检测潜在问题。

  • 改进每个区域,每个名称服务器监视器,立即检测导致一个名称服务器偏离其他名称服务器(正在进行)的更改。

  • 改进 DNS 命名空间设计,以更好地允许分阶段推出更改,同时降低增量影响(进行中)。


根据了解,这不是微软 Azure 第一次发生服务中断。1月份,全球Azure中断影响了 Office 365,Azure 和 Dynamics 365 服务,原因也与 DNS 有关,微软方面表示是 Level 3 托管 DNS 服务出现问题。去年底,Azure AD 多因素身份验证中断使全球的 Office 365 用户无法登录其帐户。


2019 年 5 月 05 日 19:505051
用户头像
赵钰莹 InfoQ高级编辑

发布了 745 篇内容, 共 444.9 次阅读, 收获喜欢 2399 次。

关注

评论 1 条评论

发布
用户头像
宕机年年有啊
2019 年 05 月 05 日 19:52
回复
没有更多了
发现更多内容

Spring核心原理之IoC容器初体验(2)

Tom弹架构

Java spring 源码

前端开发之JS中编写For循环的方法

飞不起来的童年

JavaScript 前端开发

图解带你掌握`JVM`运行时核心内存区

华为云开发者社区

Java JVM 内存 堆内存

华为云ModelArts蝉联中国机器学习公有云服务市场份额第一

Geek_2d6073

愉悦圣诞 暖意融心

龙智—DevOps解决方案

HDFS(Hadoop分布式文件系统)

编程江湖

大数据 hdfs

DataPipeline与海量数据完成产品互认证,助推数据管理信创生态新进程

DataPipeline数见科技

数据库 中间件 数据融合 数据迁移 数据管理

拿捏SQL数据分析:从基础破冰到面试题解

博文视点Broadview

React vs Angular,到底那个更好用

编程江湖

前端开发

在线上传图片二维码识别解析

入门小站

工具

大数据开发之sparkSQL的使用分享

飞不起来的童年

大数据 Sparksql

Linux之tail命令

入门小站

Linux

盘点一下自己的2021

为自己带盐

28天写作 12月日更 盘点2021

再说绩效考核

张老蔫

28天写作

CitaDAO 平台通证的价值

区块链小八歌

python 数据分析找到老外最喜欢的中国美食【完整代码】

1_bit

Python

从新手到专家:如何设计一套亿级消息量的分布式IM系统

WorkPlus Lite

动手用 Java 训练深度学习模型

亚马逊云科技 (Amazon Web Services)

AI/ML

Linux之tail命令

入门小站

Linux

用一个 flv.js 播放监控的例子,带你深撅直播流技术

杨成功

JavaScript 前端 监控 直播 流媒体

Log4j2 消停了,Logback 开始塌房了?

程序猿DD

Java 日志 漏洞

Java开发之线程、多线程,线程池面试题

飞不起来的童年

多线程 线程池 JAVA开发

TCP 两次握手为什么无法阻止历史连接?

华为云开发者社区

TCP 报文 握手 RST 报文 两次握手

Coder 投稿 | mPaaS 的多版本接入(Android)

蚂蚁集团移动开发平台 mPaaS

android Android Studio mPaaS 移动应用开发

专家视野:探寻运维趋势与ITSM落地之道

龙智—DevOps解决方案

运维 ITSM

DM 分库分表 DDL “乐观协调” 模式介绍丨TiDB 工具分享

PingCAP

学习乐器的好处

Tiger

28天写作

云小课|DGC数据开发之基础入门篇

华为云开发者社区

大数据 数据湖治理中心 云数据开发 DLF

解决 GitLab 报错:You are not allowed to force push code to a protected branch on this project

AlwaysBeta

git gitlab

Azure全球中断三小时:微软回复称DNS更新故障-InfoQ