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

权威 DNS 容灾
【DNS 解析流程】

- 用户向递归 DNS 请求 www.test.com 的解析
- 递归 DNS 向权威 DNS 请求 www.test.com 的解析
- 权威 DNS 将 www.test.com. 的解析 1.1.1.1 返回给递归 DNS
- 递归 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”产品介绍的更多相关文章
- Windows Server 2008 R2 创建辅助DNS服务器并接管主要DNS服务器
公司需求: Zhuyu公司局域网有一台主要DNS服务器,经领导讨论需要规划安装一台辅助DNS服务器备用. 功能需求: 当主要DNS服务器宕机或系统崩溃,辅助DNS服务器能接管主要DNS服务器工作,并且 ...
- RabbitMQ 入门系列:6、保障消息:不丢失:发送方、Rabbit存储端、接收方。
系列目录 RabbitMQ 入门系列:1.MQ的应用场景的选择与RabbitMQ安装. RabbitMQ 入门系列:2.基础含义:链接.通道.队列.交换机. RabbitMQ 入门系列:3.基础含义: ...
- RabbitMQ 入门系列:7、保障消息不重复消费:产生消息的唯一ID。
系列目录 RabbitMQ 入门系列:1.MQ的应用场景的选择与RabbitMQ安装. RabbitMQ 入门系列:2.基础含义:链接.通道.队列.交换机. RabbitMQ 入门系列:3.基础含义: ...
- 微服务Consul系列之服务注册与服务发现
在进行服务注册之前先确认集群是否建立,关于服务注册可以看上篇微服务Consul系列之集群搭建的介绍,两种注册方式:一种是注册HTTP API.另一种是通过配置文件定义,下面讲解的是基于后者配置文件定义 ...
- linux入门系列18--Web服务之Apache服务2
接上一篇文章,在了解Apache基本配置以及SELinux相关知识后,继续演示Apache提供的虚拟主机功能以及访问控制方式. 如果还没看上一篇的建议先查看后再来,上篇文章"linux入门系 ...
- rh358 003 ansible部署双网卡绑定 DNS原理 bind正向解析
双网卡绑定 绑定多张网卡成为逻辑口,从而实现链路冗余,以及数据流量的负载均衡 1.创建team口 [root@servera ~]# nmcli connection add type team co ...
- 玩转Windows服务系列——Windows服务小技巧
伴随着研究Windows服务,逐渐掌握了一些小技巧,现在与大家分享一下. 将Windows服务转变为控制台程序 由于默认的Windows服务程序,编译后为Win32的窗口程序.我们在程序启动或运行过程 ...
- 玩转Windows服务系列——Windows服务启动超时时间
最近有客户反映,机房出现断电情况,服务器的系统重新启动后,数据库服务自启动失败.第一次遇到这种情况,为了查看是不是断电情况导致数据库文件损坏,从客户的服务器拿到数据库的日志,进行分析. 数据库工作机制 ...
- Centos修改DNS重启或者重启network服务后丢失问题处理
本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 阅读目录 介绍 起因 处理 GitHub 本文版 ...
随机推荐
- typedef 函数指针的使用(含例子)
C代码 //#include<iostream.h> #include<stdio.h> typedef int (*FP_CALC)(int, int); ...
- web,xmlSecurity
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://w ...
- 【Flutter学习】基本组件之进度条(LinearProgressIndicator, CircularProgressIndicator)
一,概述 基本有两种类型: 条形进度条(LinearProgressIndicator) new LinearProgressIndicator( backgroundColor: Colors.bl ...
- mybatis plus generator工具集成(一)
参数配置文档 配置分两步 1.添加依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId> ...
- SCP-bzoj-1019
项目编号:bzoj-1019 项目等级:Safe 项目描述: 戳这里 特殊收容措施: 对于一个hanoi,知道了各种移动操作的优先级,也就确定了方案.可以证明对于盘子数为N的hanoi,任意移动方案都 ...
- Git GUI使用方法【转】
前言 之前一直想一篇这样的东西,因为最初接触时,我也认真看了廖雪峰的教程,但是似乎我觉得讲得有点多,而且还是会给我带来很多多余且重复的操作负担,所以我希望能压缩一下它在我工作中的成本,但是搜索了一下并 ...
- SQL Server中char、varchar、text和nchar、nvarchar、ntext的区别 (转)
转:http://blog.csdn.net/jackychu/article/details/4183118 http://www.cnblogs.com/jhxk/articles/1633578 ...
- 深入浅出C语言中的柔性数组
在日常的编程中,有时候需要在结构体中存放一个长度动态的字符串,一般的做法,是在结构体中定义一个指针成员,这个指针成员指向该字符串所在的动态内存空间,例如: typedef struct test { ...
- 如何在webpack开发中利用vue框架使用ES6中提供的新语法
在webpack中开发,会遇到一大推问题,特别是babel6升级到babel7,要跟新一大推插件,而对于安装babel的功能就是在webpack开发中,vue中能够是用ES6的新特性: 例如ES6中的 ...
- jmeter 不同线程组之间传递变量2
方法1 通过变量传递参数: 第一个脚本: HTTP Request_新建出差申请单_登录,关联出参数token.companyId.userId.userName 1.添加后置处理器:BeanShe ...