DNS是网络的基础服务,网络上的各类应用对DNS的依赖性很高。DNS的稳定,直接决定了上层应用服务的稳定。那如何保障DNS服务的高可用呢?
咱们先来看下高可用的概念:算法
高可用(High availability):指系统无中断地执行其功能的能力,通常用下面的公式来衡量: 数据库
管控层最主要的两个功能: DNS数据的持久化,DNS数据下发到adns(dnsserver)。 安全
1 数据持久化
管控层接收用户配置的域名数据后,持久化存储在数据库。利用了数据库团队的X-Cluster产品,实现数据的高可用,消除了运维误操做等缘由致使的数据丢失:
数据库采用三地五副本,同城强同步方案部署;
数据库各个节点间采用Paxos 协议选主,在任意阶段出现问题后,数据内部自选主切换;
应用机房部署与数据库解耦,能够任意机房部署;
在数据库Leader 故障场景下,数据库会自动发生切换,应用连入任意节点获取当前Leader 位置后恢复应用业务。 服务器
2 数据下发
管控与adns之间,主要经过稳定的内部网络来下发数据,数据传输出错的几率低;
管控向adns发送数据时,有数据补偿机制,对与下发失败,作屡次重试,若是重试都没法成功,报警转人工处理。网络
解析层由adns集群组成,部署在全球的上百个idc机房,经过anycast发布大量的服务ip。用户向这些ip发送dns请求,获取解析结果。
1 消除单点
解析层主要靠消除单点实现failover,来减小故障。架构
2 系统容量
监控系统实时监控各个服务器、集群的qps容量;
adns集群,部署上具有水平扩容能力,容量能达到机房的带宽。运维
3 如何保证解析正确
部署数据对帐系统,对adns之间作数据对比,adns与管控的DB作数据对比;
部署拨测系统,对zone的soa作拨测,对特定域名的rr记录作拨测;
经过上面的两类手段,及时发现数据异常并做出响应,避免异常或者缩短异常的处理时间。
通常经过摘除有问题的服务器的路由,几秒钟便可生效。tcp
4 安全防御
做为面向公网的服务,网络攻击没法避免,会影响系统可用性。咱们采用了下面两类安防手段,提升dns的可用性。
1) 网络攻击防御
常见的dns攻击,是4层的ddos攻击。对于超大流量的网络攻击,利用机房部署的aliguard,作网络防御;
为了减小ddos防御系统对dns的影响,咱们设置了很高的防御阈值,对应阈值之下的ddos攻击,经过咱们高性能的dnsserver(adns)来承载攻击。
2) 应用安全
为了应对DNS投毒、欺骗等场景,咱们的dnsserver,支持dnssec;
为了应对DNS劫持,咱们支持有链接的协议,好比tcpdnshttpdnstlsdoh;
用户能够根据本身的需求,选择合适的安全方案。性能