简介: 国庆期间,Facebook 及其旗下 Instagram 和 WhatsApp 等应用全网宕机,停机时间将近 7 小时 5 分钟,Facebook 市值损失 643 亿美元。针对Facebook的宕机问题,我们该如何未雨绸缪,看看云拨测如何帮助客户避免该类问题。

在我们享受国庆假期的时候,大洋对岸的互联网世界却出了一件重大“事故”:Facebook 及其旗下 Instagram 和 WhatsApp 等应用全网宕机,停机时间将近 7 小时 5 分钟,浏览器在尝试打开时显示 DNS 错误。这对于旗下应用群月活和日活高达 35.1 亿和 27.6 亿的 Facebook 而言,可谓损失惨重。据投资机构估计,7 小时宕机导致超过 9.68 亿美元影响成本。并直接让 Facebook 市值损失 643 亿美元,其创始人马克·扎克伯格净资产蒸发 70 亿美元。

Facebook 表示,故障根本原因是例行维护工作出了问题,协调数据中心之间网络流量的骨干路由器配置变化,继而导致其 DNS 服务器发生问题并致使内部工具和系统被关闭,运维人员无法远程访问设备以便恢复网络。因此,运维人员不得不进入有着流程措施严格的数据中心进行人工重启。因此,MTTR 被严重拖长。

一句话总结,一条糟糕的命令、一款有缺陷的审核工具、一套阻碍成功恢复网络的 DNS 系统以及繁琐的数据中心流程,共同导致了 Facebook 长达 7 个小时的重大故障。

具体而言,运维人员对骨干网络的一部分进行断网维护。例行维护的一部分就是评估全球骨干网容量的可用性,但无意间中断开了骨干网络所有连接,也断开了 Facebook 全球数据中心的连接。与此同时, 由于 Facebook 的架构设计是根据服务器可用性来扩展或缩减 DNS 服务。当服务器可用性因网络故障而降至零时,就会停用所有 DNS 服务器。自动响应骨干网崩溃似乎成为导致 DNS 瘫痪的原因。这种停用通过 Facebook 的 DNS 名称服务器向互联网边界网关协议(BGP) 路由器发送消息来完成的,这些路由器存储用来抵达特定 IP 地址的路由方面的信息。这些路由通常被公告给路由器,让路由器了解如何适当地引导流量。

Facebook 的 DNS 服务器发送的 BGP 消息禁用了公告给路由,因此无法将流量解析成 Facebook 骨干网络上的任何对应内容。最终结果就是,即使 DNS 服务器仍在运行,也访问不了,用户也会因试图访问的网络崩溃而丢失服务。更不幸的是,DNS 服务用于面向客户的网站,还将其用于自己的内部工具和系统。

看到这里我们会发现,DNS 在这其中扮演着重要的角色,那么 DNS 又是什么?DNS 即Domain Name System 的缩写,域名系统以分布式数据库的形式将域名和IP地址相互映射。简单的说,DNS 是用来解析域名的,在正常环境下,用户的每一个上网请求会通过 DNS 解析指向到与之相匹配的IP地址,从而完成一次上网行为。DNS 作为应用层协议,主要是为其他应用层协议工作的,包括不限于 HTTP 和 SMTP 以及 FTP,用于将用户提供的主机名解析为 IP 地址,具体过程如下:

(1)用户主机(PC 端或手机端)上运行着 DNS 的客户端;

(2)浏览器将接收到的 URL 中抽取出域名字段,就是访问的主机名,比如阿里云-上云就上阿里云 , 并将这个主机名传送给 DNS 应用的客户端;

(3)DNS 客户机端向 DNS 服务器端发送一份查询报文,报文中包含着要访问的主机名字段(中间包括一些列缓存查询以及分布式 DNS 集群的工作);

(4)该 DNS 客户机最终会收到一份回答报文,其中包含有该主机名对应的IP地址;

(5)一旦该浏览器收到来自 DNS 的 IP 地址,就可以向该 IP 地址定位的 HTTP 服务器发起 TCP 连接。

Facebook 此次宕机持续近 7 小时影响了约 8500 万用户,是自 2008 年以来最严重的一次。作为旁观者回顾这次故障,我们会发现一个非常关键的问题点:但据了解,当日不断有用户反映,Facebook 旗下 Facebook、移动聊天服务 Messenger 和 WhatsApp、图片社交服务 Instagram 等四大社交平台网站和应用均发生响应服务器错误,导致无法刷新。Facebook 在欧洲、美洲、大洋洲几乎完全下线,在亚洲的日本、韩国、印度等国也无法访问,影响到全球数十个国家和地区用户。似乎 Facebook 似乎并没有在第一时间发现这些问题。只在全球多个国家和地区用户进行反馈后才发现了问题。

即使是庞大如 Facebook 这样的企业,也没有在第一时间发现 DNS 故障,并遭受严重的经济损失。设身处地的面对这样故障,我们该如何第一时间发现并监控产品以及 DNS 的运行状况?并且及时了解全球不同国家和地区的用户使用情况?

纵观各类 APM 产品,无侵入的云拨测成为最佳的解决方案。阿里云拨测通过遍布全球的 1000+ 监测点,包括真实用户监测,全天候 24 小时对目标域名发起网络请求,帮助用户监测 DNS 服务对可用性和解析性能,同时 DNS 拨测支持指定递归、迭代不同查询方式以及解析服务器,通过灵活的拨测参数配置尽可能模拟真实用户的访问。

经过定时的拨测任务,阿里云拨测可以生成不同地区的 DNS 解析用时的报表,同时针对每次拨测都清晰的列出 DNS 请求对详情,包括 A 地址、DNS 用时、DNS 解析过程等,能给帮助用户快速分析和定位 DNS 解析的问题。

另外通过配置 DNS 告警,针对于 DNS 的可用性问题和解析性能问题,也可以先于用户感知并问问题的修复争取时间,提高用户的满意度,降低经济损失。

本文为阿里云原创内容,未经允许不得转载。 

Facebook宕机背后,我们该如何及时发现DNS问题的更多相关文章

  1. Redis架构之防雪崩设计:网站不宕机背后的兵法

    互联网系统中不可避免要大量用到缓存,在缓存的使用过程中,架构师需要注意哪些问题?本文以 Redis 为例,详细探讨了最关键的 3 个问题. 一.缓存穿透预防及优化 缓存穿透是指查询一个根本不存在的数据 ...

  2. Vertica节点宕机处理一例

    Vertica节点宕机处理一例: 查询数据库版本和各节点状态 常规方式启动宕机节点失败 进一步查看宕机节点的详细日志 定位问题并解决 1. 查询数据库版本和各节点状态 dbadmin=> sel ...

  3. ORA-04031错误导致宕机案例分析

    今天遇到一起ORACLE数据库宕机案例,下面是对这起数据库宕机案例的原因进行分析.解读.分析过程中顺便记录一下这个案例的前因后果,攒点经验值,培养一下分析.解决问题的能力. 案例环境:   操作系统 ...

  4. 记一次 oracle 数据库在宕机后的恢复

    系统:redhat 6.6 oracle版本: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production 问题描述: ...

  5. 服务应用突然宕机了?别怕,Dubbo 帮你自动搞定服务隔离!

    某日中午,午睡正香的时候,接到系统的报警电话,提示生产某物理机异常宕机了,目前该物理机已恢复,需要重启上面部署的应用. 这时瞬间没有了睡意,登上堡垒机,快速重启了应用,系统恢复正常.本想着继续午睡,但 ...

  6. Vertica集群单节点宕机恢复方法

    Vertica集群单节点宕机恢复方法 第一种方法: 直接通过admintools -> 5 Restart Vertica on Host 第二种方法: 若第一种方法无法恢复,则清空宕机节点的c ...

  7. VmWare平台Windows Server 2012 无响应宕机

    我们生产服务器都部署在VMware ESXi 5.5平台上,最近大半年的时间,偶尔就会出现操作系统为Windows Servre 2012的服务器出现没有任何响应(unresponsive)的情况,出 ...

  8. Linux服务器宕机案例一则

    案例环境 操作系统 :Oracle Linux Server release 5.7 64bit 虚拟机 硬件配置 : 物理机型号为DELL R720 资源配置 :RAM 8G Intel(R) Xe ...

  9. 由于某IP大频率提交评论导致服务器宕机

    早上突然收到dnspod的宕机通知(好久没收到了,有点手足无措). 服务器在上午10:40时达到85%.uptime显示cpu利用率达到35.不宕才怪. 按照之前的经验,应该是触发一个特别耗CPU的处 ...

  10. 双十一来了,别让你的mongodb宕机了

    好久没过来吹牛了,前段时间一直赶项目,没有时间来更新博客,项目也终于赶完了,接下来就要面临双十一这场惊心动魄的处女秀考验, 我们项目中会有一个wcf集群,而集群地址则放在mongodb中,所以mong ...

随机推荐

  1. grep 第四天

    grep 第四天 1 使用grep 取 passwd 显示行数 grep -c '' /etc/passwd [root@master ~]# grep -c '' /etc/passwd 135 2 ...

  2. 什么是3D可视化,为什么要使用3D可视化

    虽然许多设计师听说过为什么设计的可视化在他们的审批过程中是有益的,但并不是每个人都知道3D可视化到底是什么. 3D可视化与3D图形.3D渲染.计算机生成图像和其他术语同义使用.3D可视化是指使用计算机 ...

  3. Postman模拟向Eureka注册服务

    1.官方地址:https://github.com/Netflix/eureka/wiki/Eureka-REST-operations 2.自己搭建一个 Eureka服务运行起来. 3.打开Post ...

  4. SpringBoot使用org.springframework.util监控java代码执行耗时时长

    public class StopWatchTask { public static void main(String[] args){ //创建一个计时器 StopWatch stopWatch = ...

  5. KingbaseES flashback drop table

    KingbaseES 引入回收站功能,实现drop table操作的数据恢复.回收站功能默认关闭,参数名称:kdb_flashback.db_recyclebin.如果不允许一个删除的表进回收站,需要 ...

  6. KingbaseES V8R6运维案例之---wal日志解析DDL操作

    ​ 案例说明: 通过sys_waldump解析DDL操作,获取DDL操作的日志条目具体内容. 适用版本: KingbaseES V8R3/R6 一.DDL事务操作对应的wal日志文件 # 查看当前on ...

  7. 【已解决】aconda3 创建和切换jupyter Kernel(安装好了tensorflow在jupyter中无法使用)

    如下图:在这里更换python环境内核(如果你把tensorflow安装在了一个新建的虚拟环境) 1. 创建新的环境(或者是直接激活进入已经安装了tensorflow的环境) conda create ...

  8. Android---intent和startActivityForResult方法的使用---页面跳转和数据回传

    Android页面跳转和数据回传 今天我尝试用两个页面实现数据的传递和回传,出现了一些问题,把问题已经成功的案例总结如下: 具体是这样的: 有两个layout布局,两个activity.MainAct ...

  9. #dp,齐肯多夫定理#CF126D Fibonacci Sums

    题目 \(T(T\leq 10^5)\) 组数据,每次给定数字 \(n(n\leq 10^{18})\), 问有多少种方案将 \(n\) 分解成若干个互不相同的斐波那契数 分析 如果找到一个方案使得所 ...

  10. #数学期望,状压dp,记忆化搜索#nssl 1468 V

    分析 赛时写了个\(O(n!)\)的纯暴力,其实我现在才发现\(O(n!)\)的暴力一般都能用\(O(n2^n)\)的状压dp解决 但是其实不是每个状态都能被访问到,所以若\(n\)过大,用\(map ...