DNS实现粗粒度容灾

DNS容灾

这里介绍如果通过dns来实现容灾,饿了么有非常多的应用,应用的用户量非常大,遍布各地。这些应用都是需要域名的,所以为了提神服务质量,构建自己的DNS体系,为饿了么的应用提供域名解析服务。

DNS简单介绍

DNS提供了根据域名查IP地址的服务,和常见的http协议一样,dns也是一个工作在7层的应用成协议,他使用的端口是53

域名和ip之间的对应关系,称为记录(record)。根据使用场景的不同,记录分为不同的类型,常见的记录类型如下:

记录类型 功能描述
A ipv4记录,支持将域名映射到ipv4地址使用
AAA ipv6记录,支持将域名映射到ipv6地址使用
CNAME Canonical Name,别名记录,支持将域名指向另外一个域名
MX Mail Exchanger,电子邮件交互记录,支持将域名指向邮件服务器地址
NS Name Server,名称服务器,支持将子域名委托给其他DNS服务商解析

DNS服务器是指安装了DNS软件后提供DNS服务的计算机。我们可以在阿里云ECS主机上安装BIND软件来搭建自己的DNS服务器,然后将本机的DNS服务器地址指向该ECS主机以使用我们自己的DNS解析服务。

实际上,国内外已经有很多DNS服务商提供了免费的DNS解析服务,各家都提供了公共的DNS服务器地址。比如谷歌的8.8.8.8,国内114dns的114.114.114.114。饿了么之前也使用BIND软件搭建了BIND集群提供DNS服务,目前已经全量EDNS集群上了。

EDNS

  1. Edns是饿了么自研的高性能权威DNS,主要为满足以下需求

    • 线路智能解析
    • 机房自动/手动灾备切换
    • 分机房流量调度
  2. EDNS原理

    • 业务域名CNAME至gds域名的方式,即a.ele.ne CNAME 至a.ele.me.gds.eledns.com,

    • 再为a.ele.me.base.eledns.com,分配对应的A解析IP地址

  3. 容灾切换

    • 自动~容灾切换:全自动无容灾操作对象,只要gds域名对应的解析结果VIP挂了(EDNS健康监测提示VIP不通),EDNS将自动迁移走解析结果至其他VIP,实现自动容灾切换。
    • 手动~应用级容灾切换:切换操作的对象为N个gds域名,可以自定义切换预案,预案内容为N个gds域名的解析结果VIP变更,当需要手动触发切换时,直接在容灾切换平台执行预案,即实现容灾切换。

目前我们线上使用的域名解析方式主要有两种:

  1. A记录解析方式:直接将某个域名解析到一个或若干个VIP(或IP)上,如果解析到N个VIP,则每个VIP承担1/N的请求量;
  2. CNAME解析方式:将域名A解析到另一个域名B上,B解析到某个VIP,这时候假如B域名解析发生变化,A域名的解析也随之变化。
  3. 原理图

从系统稳定性角度来看,EDNS提供给业务最重要的价值就是机房灾备切换和机房级别的流量调度。为了提高服务的可用性,业务系统一般采用多机房部署架构,当一个机房的服务不可用时,可通过EDNS将流量切换到另一个机房,从而使业务系统继续提供服务。

posted @ 2020-02-20 10:22  梧桐花落  阅读(938)  评论(0编辑  收藏  举报