zoukankan      html  css  js  c++  java
  • 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将流量切换到另一个机房,从而使业务系统继续提供服务。

  • 相关阅读:
    使用Redis做MyBatis的二级缓存
    MySQL 类型转换
    mysql store procedure 存储过程
    swagger
    redis 持久化
    redis 发布/订阅 模式
    dfs模板
    二叉树
    拓扑排序
    最大公因数(辗转相除法)
  • 原文地址:https://www.cnblogs.com/vinsent/p/12334588.html
Copyright © 2011-2022 走看看