ContainerDNS性能优化之路:17W到1000W QPS超高性能DNS技术实践

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

作者:京东商城基础架构部

一、 引入

随着TIG阿基米德平台全面应用,组成京东容器生态技术栈的分布式域名解析服务ContainerDNS(go版https://github.com/tiglabs/containerdns )全量生产环境应用,承载着每天百亿的访问量,单实例峰值每秒请求达到15W QPS,已经接近ContainerDNS的性能极限(17W QPS)。为了更好的提高系统的并发服务,对ContainerDNS 的优化也势在必行。

本文对ContainerDNS性能优化思考和技术实践历程,希望对业内在容器领域和域名解析方向技术实践一些启迪。

ContainerDNS 的DNS Server 代码用Go 语言实现,我们在后期的优化中,通过各种尝试,并通过pprof 采集数据分析,发现性能损耗最大的是收发包的地方。同时我们对bind9 进行了压测、采集分析发现同样是收发包函数最为耗时。

这里写图片描述

数据平面开发套件DPDK(Data Plane Development Kit)可以极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。灵感来自TIG容器生态技术栈另外一个重要的服务高性能负载均衡服务Jupiter (https://github.com/tiglabs/jupiter )实现单实例200万QPS的高性能。因此TIG团队工程师想到用DPDK 来实现DNS数据报文的收发是一个有挑战和前景的尝试。

二、系统概述

让我们先来回顾下ContainerDNS设计之初的愿景和初心。ContainerDNS作为京东商城新一代软件定义数据中心的关键基础服务之一,具有以下特点:

  • 分布式设计 多数据中心数据同步复制 避免维护多个域名解析元数据副本
  • 支持自动发现服务域名 支持容器Service
  • 支持后端探活
  • 易于维护、易于动态扩展

这里写图片描述

图一 ContainerDNS 架构图

ContainerDNS 包括四大组件 DNS server、service to DNS 、user API 、IP status check。这四个组件通过etcd 数据库集群结合在一起,彼此独立,降低了耦合性,每个模块可以单独部署。DNS server 用于提供DNS 查询服务的主体。service to DNS 组件是k8s 集群与DNS server的中间环节,会实时监控k8s集群的服务的创建,将服务转化为域名信息,存入etcd 数据库中。user

性能优化DNS解析优化 阅读详情

相关推荐

构建企业级DNS系统(八)bind DNS解析性能测试及调优

详细介绍基于bind建的DNS系统的性能测试方法及性能调优方法。

张舵主的专栏 6949

bind-stats:Bind(DNS) 有一些统计,但好像没有实时数据,比如qps。 所以这个项目修改bind源码,通过命令rndc提供qps,成功率,搜索类型和结果,有时很有用

bind-stats Bind(DNS) has some statistics, but seemly no realtime data , such as qps. so this project modify bind source code, provide qps, success rate, search type and result by command rndc, it is useful sometimes. BIND本身提供非常丰富的统计信息,其中几个信息比如当前qps,成功率,或者查询类型是什么,没有统计,或者通过rndc 命令是无法获取的,有的时候这些信息对于查看当前服务器的状态有很大的帮助,所以hack了bind的源码,增加了这几个统计项。 统计项目: 每秒查询量(qps),解析成功率, 解析类型,解析结果。 BIND原版本:bind-9.10.0-p2 编译

高并发场景QPS等专业指标揭秘大全与调优实战

最近经常有小伙伴问及高并发场景下QPS的一些问题,特意结合项目经验和网上技术贴做了一些整理和归纳,供大家参考交流。

耕耘——从菜鸟到高手的蜕变 5079

BIND9管理员参考手册

目录 第一章: DNS 的起源和背景 .................................................................................................................1 第二章: DNS 的体系结构和原理 .........................................................................................................3 2.1 域名空间和体系结构....................................................................................................................3 2.2 域和域名........................................................................................................................................3 2.3 区和域的不同................................................................................................................................4 2.4 域名服务器的类型........................................................................................................................5 2.4.1 主域名服务器.........................................................................................................................6 2.4.2 辅域名服务器(次级域名服务器) ....................................................................................6 2.4.3 隐藏服务器(stealth server) ..............................................................................................6 2.4.4 高速缓存域名服务器(caching only server) .....................................................................6 2.4.5 转发服务器(forwarding server) .......................................................................................6 2.5 DNS 基本原理...............................................................................................................................6 第三章:建立 DNS 系统服务 ................................................................................................................8 3.1 DNS 系统的来源...........................................................................................................................8 3.2 系统的要求....................................................................................................................................8 3.2.1 硬件需求................................................................................................................................8 3.2.2 CPU 需求................................................................................................................................8 3.2.3 内存需求................................................................................................................................8 3.2.4 域名服务器的高配置问题....................................................................................................8 3.2.5 支持操作系统........................................................................................................................9 3.2.6 获得 bind 9.2.3........................................................................................................................9 第四章:域名服务器配置....................................................................................................................10 4.1 配置实例.....................................................................................................................................10 4.1.1 高速缓冲域名服务器(Caching-Only DNS) ...................................................................10 4.1.2 授权的域名服务器(Authoritative-only DNS) ................................................................10 4.2 负载分担.....................................................................................................................................11 4.3 通告(NOTIFY) .........................................................................................................................12 4.4 域名服务器的运行.....................................................................................................................12 4.4.1 域名服务器后台进程工具的使用......................................................................................12 4.4.1.1 诊断工具........................................................................................................................................12 4.4.1.2 管理工具.......................................................................................................................................13 4.4.2 信号(Signals) ..................................................................................................................16 第五章 高级理念..................................................................................................................................17 5.1 动态更新.....................................................................................................................................17 5.1.1 日志文件(journal file) ....................................................................................................17 5.2 增量域传输(IXFR) ................................................................................................................17 5.3 拆分 DNS....................................................................................................................................18 5.4 TSIG(信号安全处理) .............................................................................................................21 5.4.1 为每对主机产生共享密匙..................................................................................................21 5.4.1.1 自动产生....................................................................................................................................... 5.4.1.2 手工生成....................................................................................................................................... 5.4.2 把共享密匙拷到两台机器中..............................................................................................2 5.4.3 通知服务器密匙的存在......................................................................................................2 5.4.4 通知服务器使用密匙..........................................................................................................2 5.4.5 基于 TSIG 密匙的访问控制 ...............................................................................................2 5.4.6 错误......................................................................................................................................2 5 TKEY ...........................................................................................................................................2 6 SIG(0)...........................................................................................................................................2 7 DNSSEC ......................................................................................................................................2 5.7.1 产生密匙..............................................................................................................................2 5.7.2 产生 keyset...........................................................................................................................2 5.7.3 标志子域系列(Child’s Keyset) .......................................................................................2 5.7.4 对域进行标记......................................................................................................................2 5.7.5 配置服务器..........................................................................................................................2 8 BIND9 的 IPV6 支持 ...................................................................................................................2 5.8.1 使用 AAAA 记录的地址查找 ..............................................................................................2 5.8.2 使用 A6 记录查询地址 ........................................................................................................2 5.8.2.1 A6 链(Chains) ...........................................................................................................................2 5.8.2.2 DNS 服务器的 A6 记录 .........................................................................................................2 5.8.3 使用 Nibble 格式进行地址到名字的查询 .........................................................................2 5.8.4 使用 bitstring 格式进行地址到名字的查询........................................................................2 5.8.5 用 DNAME 来标示 IPV6 的反向地址 .................................................................................2 章 BIND9 LIGHTWEIGHT 解析 ..............................................................................................3 1 LIGHTWEIGHT 解析库...................................................................................................................3 2 运行后台解析.............................................................................................................................3 章 BIND9 配置参考 .....................................................................................................................3 1 配置文件的组成元素.................................................................................................................3 7.1.1 地址匹配表...........................................................................................................................3 7.1.1.1 语法 ............................................................................................................................................... 7.1.1.2 定义和使用................................................................................................................................... 7.1.2 语法注释...............................................................................................................................3 7.1.2.1 语法............................................................................................................................................... 7.1.2.2 定义和用法.................................................................................................................................... 2 配置文件语法..............................................................................................................................3 7.2.1 acl 语句语法.........................................................................................................................3 7.2.2 acl 语句定义和使用............................................................................................................3 7.2.3 控制语句语法.......................................................................................................................3 7.2.4 controls 语句定义和用法.....................................................................................................3 7.2.5 include 语句语法..................................................................................................................3 7.2.6 包含语句定义和使用...........................................................................................................3 7.2.7 键语句语法..........................................................................................................................3 7.2.8 key 语句的定义和使用.........................................................................................................3 7.2.9 logging 语句语法.................................................................................................................36 7.2.10 Logging 语句定义和使用..................................................................................................37 7.2.10.1 channel 短语 ................................................................................................................................37 7.2.10.2 category 短语...............................................................................................................................39 7.2.11 lwres 语句语法....................................................................................................................40 7.2.12 lwres 语句定义和用法 ......................................................................................................41 7.2.13 options 语句语法................................................................................................................41 7.2.14 options 语句定义和用法 ....................................................................................................43 7.2.14.1 Boolean 选项 ...............................................................................................................................44 7.2.14.2 转发.............................................................................................................................................47 7.2.14.3 访问控制.....................................................................................................................................48 7.2.14.4 接口.............................................................................................................................................49 7.2.14.5 查询地址.....................................................................................................................................49 7.2.14.6 域传输.........................................................................................................................................50 7.2.14.7 操作系统资源限制.....................................................................................................................51 7.2.14.8 服务器资源限制.........................................................................................................................52 7.2.14.9 周期性任务间隔.........................................................................................................................52 7.2.14.10 拓扑...........................................................................................................................................53 7.2.14.11 sortlist 语句................................................................................................................................54 7.2.14.12 RRset 排序.................................................................................................................................55 7.2.14.13 合成的 IPV6 响应 ....................................................................................................................56 7.2.14.14 调谐...........................................................................................................................................56 7.2.14.15 统计文件...................................................................................................................................57 7.2.15 服务器语句语法................................................................................................................57 7.2.16 服务器语句定义和使用....................................................................................................58 7.2.17 trusted-keys 语句语法.........................................................................................................59 7.2.18 trusted-keys 语句定义和使用.............................................................................................59 7.2.19 视图语句语法....................................................................................................................59 7.2.20 视图语句定义和使用........................................................................................................59 7.2.21 zone 语句语法 ....................................................................................................................60 7.2.22 zone 语句定义和使用.........................................................................................................61 7.2.22.1 域文件类型.................................................................................................................................61 7.2.22.2 类 ................................................................................................................................................63 7.2.22.3 zone 选项 .....................................................................................................................................63 7.2.22.4 动态更新政策.............................................................................................................................65 .3 域文件.........................................................................................................................................66 7.3.1 资源记录类型及使用..........................................................................................................66 7.3.1.1 资源记录.......................................................................................................................................66 7.3.1.2 RRs 的原文表达............................................................................................................................68 7.3.2 MX 记录的讨论....................................................................................................................69 7.3.3 设置 TTLs .............................................................................................................................69 7.3.4 IPV4 的反向解析..................................................................................................................70 7.3.5 其他的域文件指令..............................................................................................................70 7.3.5.1 $ORIGIN 指令...............................................................................................................................70 7.3.5.2 $INCLUDE 指令 ...........................................................................................................................71 7.3.5.3 $TTL 指令 .....................................................................................................................................71 第八章、 BIND9 的安全性 ...................................................................................................................73 8.1 访问控制列表..............................................................................................................................73 8.2 CHROOT 和 SETUID(对与 UNIX 服务器) ................................................................................73 8.2.1 chroot 环境 ..........................................................................................................................74 8.2.2 使用 setuid 函数 ...................................................................................................................74 8.3 动态更新安全性.........................................................................................................................74 第九章、疑难解答................................................................................................................................75 9.1 一般性问题..................................................................................................................................75 9.1.1 BIND 不工作了,如何才能找出问题的根源? .................................................................75 9.2 增加和改变序列号.....................................................................................................................75 9.3 从哪里可以获得帮助.................................................................................................................75 附录 A:附录...........................................................................................................................................76 A.1 致谢.............................................................................................................................................76 A.1.1 DNS 与 BIND 的历史...........................................................................................................76 A.2. 历史的 DNS 信息 .....................................................................................................................76 A.2.1. 记录资源类 ........................................................................................................................77 A.2.1.1. HS = hesiod..................................................................................................................................77 A.2.1.2. CH = chaos...................................................................................................................................77 A.3. 一般的 DNS 参考信息 .............................................................................................................77 A.3.1 IPv6 地址 (A6)....................................................................................................................77 A.4. 参考和建议阅读文献 ...............................................................................................................78 A.4.1. 注释的要求 (RFCs)...........................................................................................................78 A.4.2. 互联网草案 ........................................................................................................................80 A.4.3. 关于 BIND 的其他文件 .....................................................................................................80

dnsmasq介绍

dnsmasq基本介绍

to_be_better_wen的博客 4305

PostgreSQL 查询涉及分区表过多导致的性能问题 - 性能诊断与优化(大量BIND, spin lock, SLEEP进程)...

标签 PostgreSQL , 分区表 , bind , spin lock , 性能分析 , sleep 进程 , CPU空转 , cache 背景 实际上我写过很多文档,关于分区表的优化: 《PostgreSQL 商用版本EPAS(阿里云ppas) - 分区表性能优化 (堪比pg_pathman)》 《PostgreSQL 传统 hash 分区方...

weixin_34416754的博客 1366

DNS 监控工具

OpUtils 的DNS解析器工具为网络管理员提供有关网络状态、DNS 系统详细信息及其关联 IP 的宝贵信息。

ITmoster的博客 799

ContainerDNS性能优化之路 17W到1000W QPS高性能DNS技术实践

一、 引入随着TIG阿基米德平台全面应用。组成京东容器生态技术栈的分布式域名解析服务ContainerDNS(go版https://github.com/tiglabs/containerdns )全量生产环境应用,承载着每天百亿的访问量,单实例峰值每秒请求达到15W QPS,已经接近ContainerDNS的性能极限(17W QPS)。为了更好的提高系统的并发服务,对ContainerDNS

IT技术精选文摘 1958

推荐一个高性能DNS服务器——gdnsd

gdnsd是一个专为权威DNS服务设计的高效能服务器,它强调地理定位功能,并提供了一套强大的插件系统来实现负载均衡、重定向和故障切换。即使您对这些高级特性不感兴趣,也可以简单地将其作为一款可靠的DNS服务器使用。 该项目是由C语言编写,并利用pthreads、libev和liburcu库实现,确保了高吞吐量和低延迟的服务。尽管gdnsd不支持DNS缓存或递归查询,也不支持DNSSEC,但它的核心

gitblog_00037的博客 502

告诉你QPS防护遇到攻击是如何防御的

防护QPSDNSQuery查询攻击攻击的阀值量,其工作原理是向被攻击的服务器发送大量的域名解析请求,一般这些请求解析的域名是是网络上不存在的域名,或者是随机生成的。因此根据以上相关的信息,可以发现QPS攻击,其实是包括dns服务器被攻击,而QPS攻击其实就是指域名查询攻击。一般QPS是跟域名解析防护QPS连一起的,而域名解析防护QPSDNSQuery查询攻击攻击的阀值量,其工作原理是向被攻击的服务器发送大量的域名解析请求,一般这些请求解析的域名是网络上不存在的域名,或者是随机生成的。

WilliamCZH7的博客 473

Android 网络性能优化(2)DNS优化

这样人类就可以很哈批的去访问各种网站了。2.2 DNS服务器结构每天都有成万上亿的人在互联网冲浪,这说明DNS没有一刻不在被使用,所以DNS服务器一定要保证高可用、高并发和分布式服务器。所以有必要了解DNS的结构。我们先来看下域名的空间结构:像 com、net、cn这些代表的就是顶级域名(也叫根域名),顶级域名前面的就是二级域名,二级域名前面的是三级域名。比如.com就是根域名,.baidu就是二级域名,www就是三级域名。根据这个我们再来看看DNS的结构。

2401_89693527的博客 613

CDN性能优化系列-Tips(1)-使用高性能DNS

大部分用户使用的DNS都是在接入网络时由ISP自动分配的,这就会存在以下问题1部分ISP,比如CMCC就会通过DNS劫持做广告植入,诸如一些小弹框、小图片之类。小编对此虽然没有到了深恶痛疾的地步,但是经常访问到如此频繁的小框广告,对于众多网民,特别是年轻人来说确实深受其害。广告来了,咱可以点击删除它,既来之则安之,反正不影响咱上网,小编对此表示可以给予小忍!~2CDN,特别是传统型的CDN都是根据...

ctgcdn的博客 1000

DNS解析优化的主要方法

如何清除DNS缓存? 在浏览器中输入下面的地址: chrome://net-internals/#dns 同时需要清空socket池 清除系统的DNS缓存 查看Windows系统中的缓存 ipconfig /displaydns 在windows中清除DNS缓存记录 ipconfig /flushdns 在macOS中清除DNS缓存记录 sudo killall -HUP mDNSResponder 如何清空缓存并进行硬刷新? 在F12的情况下,右键刷新按钮即可选择。 什

Always-Learning 4790

dns服务器怎么优化,SmartDNS 高性能本地DNS服务器,优化网速

简介SmartDNS是一个运行在本地的DNS服务器,SmartDNS接受本地客户端的DNS查询请求,从多个上游DNS服务器获取DNS查询结果,并将访问速度最快的结果返回给客户端,提高网络访问速度。 同时支持指定特定域名IP地址,并高性匹配,达到过滤广告的效果。与dnsmasq的all-servers不同,smartdns返回的是访问速度最快的解析结果。支持树莓派,openwrt,华硕路由器,win...

weixin_29530503的博客 2156

CoreDNS篇7-性能压测

本文主要用于介绍如何编译安装queryperf来对DNS服务器进行压测,以及CoreDNS常见的几种配置下的压测性能表现。 1、queryperf 1.1 编译安装 queryperf是bind9出品的一款测试dns服务器性能的工具,目前在9.12.4版本的bind源码中还存在,再往后的新版本就没看到有queryperf了。 [root@coredns1 home]# wget https://ftp.isc.org/isc/bind9/9.12.4/bind-9.12.4.tar.gz [root@co

tinychen 2638

DNS域名解析优化之dnsmasq篇(占座贴,待完成)

先留个坑,后续再填补。涉及的东东有nscd、bind9、dnsmasq、dnsperf。抛弃全BIND9架构,放弃BIND9做name caching server的办法,采用dnsmasq轻量级name caching server来替代,可以收到很多好处。20k qps是很轻松的事情。 转载于:https://blog.51cto.com/floss/13808...

weixin_33737134的博客 763

FAQ:Docker常见问题及优化

我们在使用 Docker 一段时间后,系统一般都会残存一些临时的、没有被使用的镜像文件,可以通过以下命令进行清理: docker image prune -a 它支持的子命令有: -a, --all: 删除所有没有用的镜像,而不仅仅是临时文件; -f, --force:强制删除镜像文件,无需弹出提示确认; 另外,执行完docker image prune命令后,还是告诉我们释放了多少存储空间! ...

lixinkuan的博客 1440

动态DNS与DPDK高性能DNS -DPDK环境

虚拟机:default_hugepages=1G hugepagesz=2M hugepages=1024 isolcpus=0-2。物理机:default_hugepages=1G hugepagesz=1G hugepages=20 isolcpus=0-7。选择 43 插入 IGB_UIO 模块, 选择网卡为 vmxnet3 会加载此模块。更多DPDK相关学习资料有需要的可以自行报名学习,免费订阅,永久学习,或点击这里加。选择 44 插入 VFIO 模块,选择网卡为 e1000 会加载此模块。

lingshengxiyou的博客 551
上一篇: 号外号外!兹有第一届区块链技术及应用峰会(BTA)·中国首轮议题抢鲜看
下一篇: 脑洞加成:众知名企业首聚第一届区块链技术及应用峰会(BTA)·中国
csdn研发技术
博客等级 码龄9年 1379粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值