DNS(企业级)
构建DNS(企业级)
1、硬件选型
CPU:12C以上配置
内存:16G
网络:千兆
2、初始化系统配置
关闭 iptables
1 2 | service iptables stop chkconfig iptables off |
关闭 selinux
1 2 | vi /etc/sysconfig/selinux SELINUX=disabled |
调整ulimit限制
1 2 3 4 5 | vi /etc/security/limits .conf * soft nproc 65536 * hard nproc 65536 * soft nofile 65536 * hard nofile 65536 |
3、高性能、高可用DNS
】
1)高可用
物理层: 首先确保两台lvs不在同一机柜、同一物理交换机接入;
其次确保将所有dns服务器也做到不在同一机柜、同一物理交换机接入;
在不通的idc构建多套dns集群,为客户端提供可切换的配置。
服务层: 坚决摒弃lvs上端口检测这种方式,采用自定义脚本检测,为dns的健康检测单独设置一个域名,为了lvs检测dns是否存活而设计。
客户端层: 多idc之间的流量切换是通过客户端的健康检测cron实现的,脚本可以按分钟运行一次,分别检测每个dns集群虚地址的可用性。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #!/bin/sh timeout=5 Q= "" host= "/usr/bin/host" if test -z "$1" ; then echo "You need to supply a DNS server to check. Quittind" exit ; fi SERVER=$10 ERC=`$host -s -w $timeout $Q SERVER > /dev/null 2>$1; echo $?` if [ $ERC - eq 0 ] ; then exit 0 else exit 10 fi |
2)高性能
通过lvs可以对每个集群做横向扩容,是否需要扩容的依据是对现有系统的压测结果,以及实时的监控数据。或者可以在最靠近应用层处,加上一次cache-only集群,但前提是你的线上环境中,没有任何系统依赖于dns负载均衡。
4、压测
cd /usr/local/src/
下载bind源码 wget http://ftp.isc.org/isc/bind9/9.9.1-P1/bind-9.9.9-P1.tar.gz
解压 tar -xvf bind-9.9.9-P1.tar.gz
cd /usr/local/src/bind-9.9.9-P1/contrib/queryperf
编译 ./configure
make
此目录下生成queryperf文件
cp queryperf /usr/bin
压测自己创建的DNS服务,创建一个文件test.txt,内容如下(前面为域名,后面为A记录)
1 2 3 4 5 | view.viewswj.com A view.viewswj.com A view.viewswj.com A view.viewswj.com A view.viewswj.com A |
执行命令: /usr/bin/queryperf -d test.txt -s 192.168.137.13
结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | DNS Query Performance Testing Tool Version: $Id: queryperf.c, v 1.12 2007 /09/05 07:36:04 marka Exp $ [Status] Processing input data [Status] Sending queries (beginning with 192.168.137.13) [Status] Testing complete Statistics: Parse input file : once Ended due to: reaching end of file Queries sent: 5 queries Queries completed: 5 queries Queries lost: 0 queries Queries delayed(?): 0 queries RTT max: 0.000283 sec RTT min: 0.000017 sec RTT average: 0.000142 sec RTT std deviation: 0.000076 sec RTT out of range: 0 queries Percentage completed: 100.00% Percentage lost: 0.00% Started at: Wed Oct 26 21:49:31 2016 Finished at: Wed Oct 26 21:49:31 2016 Ran for : 0.000311 seconds Queries per second: 16077.170418 qps |
5、监控
系统基础性能: 使用zabbix自带的模板。CPU、内存、硬盘、系统load等
LOOPBACK地址绑定状态监控: 该架构中,dnsserver在集群中充当realserver的角色,在dr中,需要绑定lookback地址方能同信,因此当loopback地址没有绑定上是,lvs健康检测通过,但是当请求到达dnsserver时,请求被拒绝,dns集群会出现异常。
DNS数据与MASTER一致性监控:
1)通过写zabbix自定义discovery,获取dns配置中所有zone,然后分别比对slave和master每个zone的serial值,当slave与master的值持续5分钟不一致报警。
2)写脚本,每15分钟获取master上所有域名解析结果,与每个slave的结果比对,当出现结果不一致情况时报警。
DNS响应时间监控:远端一组主机跑在fullnat下(提供高可用),通过dig命令检测dnsserver的响应时间。
DNS每秒请求数监控:在每台dns主机上,编写zabbix脚本,分析named_state文件,获取每秒请求数。
DNS可用性监控:远端一组主机跑在fullnat下(提供高可用),通过hosts命令检测dnsserver的可用性,脚本与lvs健康检测脚本类似。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南