阿里云DNS是一个复杂的巨型分布式系统。依托云计算丰富的计算和存储资源和技术,阿里云在全球27个Region,63个可用区,部署了 243个DNS集群 , 日解析量超过2万亿次 。
云上DNS解析服务 十几毫秒的服务延迟波动 ,都会直接影响其上的业务服务和用户体验。
阿里云提供了全系列 一站式的域名解析服务产品 ,覆盖了 公网域名解析 、 内网域名解析 、 全球流量调度 、 移动解析 以及 专有云的域名解析 场景。在云上部署业务的阿里云用户,其 运维的核心要素 就是DNS解析服务,一旦DNS解析服务出现波动,将会导致自身业务受到影响。特别是 游戏和金融行业 的企业,对解析服务质量有着极高要求。
作为日均万亿访问量的阿里云DNS,如何保障大规模的DNS解析服务高效运维和高可用?
1) 为了保证业务稳定性建设 ,阿里巴巴集团提出了 “1-5-10”的目标 ,即1分钟发现,5分钟定位,10分钟解决。目标有了,实现起来却有一定的难度。
2) 为了保障上层服务满足稳定性的目标,DNS系统作为底层基础设施的重要部分, 必须满足更高的稳定性要求 。在解析服务方面除了要做到 高可用的架构设计和部署 外,还需对 服务异常实现秒级定位和恢复 。
同时也认识到 稳定的网络基础服务的是业务连续性的基本保障 。在数字经济发展需求的驱动下,企业服务的多样性、技术架构的融合性对DNS寻址调度服务提出新的要求。
后面可以了解下DNS的集群实现原理和如何实现服务异常秒级定位和恢复的。
之前在上一家公司的时候, 阿里云的管理员说阿里云没有内网dns服务 。
后来我自己管理阿里云的时候,发现是有内网dns服务的 ,同时也有外网dns 服务。 可以说dns 管理,非常方便。
在域名和网站这部分。 有云解析dns 服务, 其中上图的两项分别是 公网dns 解析和 内网dns解析。
之前用的是dnspod 做dns解析, 用了很多年,也非常可靠。
dnspod 有很多优点。
因为阿里云的子账号登录功能非常好,我可以把运维工作交给其他人做。 这种情况下,一个统一管理的后台,就是刚需。 由于我们的服务器是放在 阿里云的,因此把dns 也迁移过来,都放在阿里云上,统一管理, 是一个比较好的选择,至于损失的功能。 暂时也可以接受,或者通过付费可以得到缓解。
由于历史原因一直在用经典网络的 ECS,在安全性方面要弱于 VPC,所以决定将服务器迁移到 VPC 中。给 ECS 配置自定义 DNS 服务器的好处是可以给 ECS 分配自定义后缀的域名,比如 web01.abc ,这样在内网定位服务器就很方便,不用去记一堆内网 IP,如果配置得当,还可以通过 host $ip 这个命令寻找 IP 对应的服务器。
一开始的时候我按照给经典网络 Centos ECS 配 DNS 服务器的方法来操作,直接修改 /etc/resolv.conf ,把里面的 nameserver 配置改成了自己内网中 DNS 服务器 IP,但是发现重启服务器之后会被重置成阿里云分配的 DNS 服务器。
经过研究之后发现,是 Ubuntu 的 resolvconf 会在每次启动的时候将 /etc/resolv.conf 覆盖。 /etc/resolv.conf 本质上是一个软链,会链接到 /run/resolvconf/resolv.conf ,而后者可以通过 resolvconf -u 命令重新生成,生成的内容来自于两个地方:
所有我一开始的思路是:
在删除了 /run/resolvconf/interface/eth0.dhclient 文件之后,执行 service networking restart &&resolvconf -u 之后,发现 /etc/resolv.conf 里的内容变成了我们期望的值。
但是后来发现同一个 VPC 的不同子网之间 ECS 无法互通,检查之后发现是路由表配置不正确,原因就是之前把 DHCP 给改成了静态 IP,看来 DHCP 是不能禁了,只好重新寻找解决方案。
想到阿里云 DNS 服务器的值是来源于 DHCP,于是就尝试搜索禁止从 DHCP 获得 DNS 服务器,找到了一个相关的 问答 ,有两种方法,一是将 /etc/dhcp/dhclient.conf 文件中 request 配置项的 domain-name, domain-name-servers, domain-search 参数移除,二是在 /etc/dhcp/dhclient.conf 文件中追加一行 supersede domain-name-servers $dns_ip。
为了保险起见,我把两个方法都用上,然后执行 rm -f /run/resolvconf/interface/eth0.dhclient &&service networking restart &&resolvconf -u ,再重启了一次服务器。检查 /etc/resolv.conf 符合预期,与其他子网 ECS 也能互通,搞定。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)