背景

2016 年 10 月 21 日,DNS 服务商 dyn 的服务器遭遇黑客大流量的 ddos 攻击,使得美国大量互联网公司如 twitter,github等都出现解析失败,无法提供服务。如下图可见,该事件造成了美国东海岸的网络瘫痪,媒体当时形容此次危机为“史上最大DDoS攻击”。该事件影响及其恶劣,直接对人们的生活造成了影响,唤起了广大互联网用户对 DNS 稳定性的重视。

权威 DNS 容灾

【DNS 解析流程】

  1. 用户向递归 DNS 请求 www.test.com 的解析
  2. 递归 DNS 向权威 DNS 请求 www.test.com 的解析
  3. 权威 DNS 将 www.test.com. 的解析 1.1.1.1 返回给递归 DNS
  4. 递归 DNS 将 www.test.com. 的解析 1.1.1.1 返回给用户

【单权威 DNS】

单权威 DNS 架构,存在单点,单点故障,权威 DNS 收不到请求或不能正常返回域名解析结果,如果域名解析配置丢失且没有备份,恢复时间会更长。

【多权威 DNS】

多权威 DNS 架构,具有以下优点:
 容灾备份: 其中一个权威 DNS 故障,其他权威 DNS 可继续提供域名解析服务;
 负载均衡,流量均摊:多个权威 DNS 同时对外提供解析服务时,可以达到流量负载均衡的效果;
 提升解析效率: 递归 DNS 通过 SRTT 优选策略,选择返回结果最快的权威 DNS,提升域名解析效率;
github.com就是多权威 DNS 模式,同时使用了 dyn 和 asw 的权威 DNS。

多权威 DNS 架构,存在以下问题:
 重复配置:域名配置更改,需要在所有权威 DNS 都配置一遍,费时费力易出错。

【DNS自动数据同步】

RFC 标准协议通过 MASTER-SLAVE 架构,NOTIFY + XFR 机制实现数据自动同步,用户只需要在主服务器上更改域名,更改信息便可自动同步到从服务器

1、用户在 MASTER 上动态修改域名解析记录(如 NSUPDATE),修改成功后,域名所在 ZONE 的版本号加 1。
test.com 初始配置:

初始 SOA 序列号:

NSUPDTA 新增记录:

最新 SOA 序列号

2、MASTER 向其配置的 SLAVE 节点发送 NOTIFY(一般是 UDP 报文),NOTIFY 信息中包含了修改域名所在的 ZONE 和该 ZONE 最新的版本号。
NOTIFY 消息:

3、SLAVE 在收到 NOTIFY 消息后,进行以下操作:
(1) SLAVE 在收到 NOTIFY 消息后会给 MASTER 发送一个响应表示收到了 NOTIFY;
(2) SLAVE 比较 NOTIFY 中的 ZONE 的版本号和本地的 ZONE 的版本号,如果本地的版本号不低于 NOTIFY 中的版本号,SLAVE 不做任何操作;
(3) 如果 SLAVE 本地的版本号低于 NOTIFY 中的版本号,表示本地的 ZONE 数据已经落后,SLAVE 向 MASTER 发送 IXFR 请求; SLAVE 根据 REFRESH(定义在 ZONE 的 SOA 记录中)定时向 MASTER 发送 IXFR 请求,作为当 NOTIFY 的报文因为某些原因无法发送到 SLAVE 时的一种补偿机制。
(4) 如果 IXFR 失败,会转向 AXFR;

4、MASTER 根据 SLAVE 请求的 XFR 类型返回对应的数据
IXFR 返回格式和结果:

AXFR 返回结果:

云解析辅助 DNS

多DNS部署方案是一个成本较大的DNS容灾策略,在此建议使用阿里云辅助DNS。辅助DNS是“云解析DNS”为使用自建DNS或第三方DNS的用户提供的DNS容灾备份服务。自建 DNS 或第三方 DNS 做主,云解析 DNS 做辅。我们基于RFC标准协议,在主DNS和辅DNS之间建立区域数据传输机制,当主DNS遇到故障或者服务中断时,辅DNS仍可以继续提供解析服务。保障您的业务在全球范围内稳定运行。

本文作者:kimi_nyn

原文链接

本文为云栖社区原创内容,未经允许不得转载。

DNS稳定保障系列1--服务双保障“辅助DNS”产品介绍的更多相关文章

  1. Windows Server 2008 R2 创建辅助DNS服务器并接管主要DNS服务器

    公司需求: Zhuyu公司局域网有一台主要DNS服务器,经领导讨论需要规划安装一台辅助DNS服务器备用. 功能需求: 当主要DNS服务器宕机或系统崩溃,辅助DNS服务器能接管主要DNS服务器工作,并且 ...

  2. RabbitMQ 入门系列:6、保障消息:不丢失:发送方、Rabbit存储端、接收方。

    系列目录 RabbitMQ 入门系列:1.MQ的应用场景的选择与RabbitMQ安装. RabbitMQ 入门系列:2.基础含义:链接.通道.队列.交换机. RabbitMQ 入门系列:3.基础含义: ...

  3. RabbitMQ 入门系列:7、保障消息不重复消费:产生消息的唯一ID。

    系列目录 RabbitMQ 入门系列:1.MQ的应用场景的选择与RabbitMQ安装. RabbitMQ 入门系列:2.基础含义:链接.通道.队列.交换机. RabbitMQ 入门系列:3.基础含义: ...

  4. 微服务Consul系列之服务注册与服务发现

    在进行服务注册之前先确认集群是否建立,关于服务注册可以看上篇微服务Consul系列之集群搭建的介绍,两种注册方式:一种是注册HTTP API.另一种是通过配置文件定义,下面讲解的是基于后者配置文件定义 ...

  5. linux入门系列18--Web服务之Apache服务2

    接上一篇文章,在了解Apache基本配置以及SELinux相关知识后,继续演示Apache提供的虚拟主机功能以及访问控制方式. 如果还没看上一篇的建议先查看后再来,上篇文章"linux入门系 ...

  6. rh358 003 ansible部署双网卡绑定 DNS原理 bind正向解析

    双网卡绑定 绑定多张网卡成为逻辑口,从而实现链路冗余,以及数据流量的负载均衡 1.创建team口 [root@servera ~]# nmcli connection add type team co ...

  7. 玩转Windows服务系列——Windows服务小技巧

    伴随着研究Windows服务,逐渐掌握了一些小技巧,现在与大家分享一下. 将Windows服务转变为控制台程序 由于默认的Windows服务程序,编译后为Win32的窗口程序.我们在程序启动或运行过程 ...

  8. 玩转Windows服务系列——Windows服务启动超时时间

    最近有客户反映,机房出现断电情况,服务器的系统重新启动后,数据库服务自启动失败.第一次遇到这种情况,为了查看是不是断电情况导致数据库文件损坏,从客户的服务器拿到数据库的日志,进行分析. 数据库工作机制 ...

  9. Centos修改DNS重启或者重启network服务后丢失问题处理

    本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 阅读目录 介绍 起因 处理 GitHub 本文版 ...

随机推荐

  1. C语言数组,指针小案例

    /* ============================================================================ Name : hello.c Autho ...

  2. 【leetcode】984. String Without AAA or BBB

    题目如下: Given two integers A and B, return any string S such that: S has length A + B and contains exa ...

  3. leetcode-165周赛-1276-不浪费原料的汉堡制作方案

    题目描述: 自己的提交: class Solution: def numOfBurgers(self, tomatoSlices: int, cheeseSlices: int) -> List ...

  4. c++11 委派构造函数

    委派构造函数可以减少构造函数的书写量: class Info { public: Info() : type(), name('a') { InitRest(); } Info(int i) : ty ...

  5. php对象方法链式调用编程

    E:\html\tproject\framework\modules\common\classes\Common\CURL.php <?php /** * 同步发起请求 * 针对http协议的8 ...

  6. ASP.NET MVC 分页之 局部视图

    using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptograph ...

  7. 【已转移】【Java架构:基础技术】一篇文章搞掂:Java 8

    本文篇幅较长,建议合理利用右上角目录进行查看(如果没有目录请刷新). 一.Java的历史与演变 目的:为完全了解Java,需要理解Java的诞生原因.成型动力以及他继承的思想. 计算机语言的创新与发展 ...

  8. Hive 窗口函数

    举例: row_number() over(partition by clue_id order by state_updated desc) 业务举例: select distinct a.clue ...

  9. .net Core 在 CentOS7下,报The type initializer for 'Gdip' threw an exception.异常

    .net Core允许在 Centos7 上,使用 System.Draw.Common类库时,报以下错误: "Class":"System.TypeInitializa ...

  10. JSON.stringify,JSON.parse方法

    var obj={name:'zhangsan',age:'18'};/** js对象--->JSON字符串* JSON.stringify(js对象) --转化为--> JSON字符串* ...