企业版web文件服务器,WEB架构之DNS-构建企业级DNS(03) | leon的博客

本文详细介绍了构建高性能、高可用的企业级DNS系统的方法,包括硬件配置、初始化系统、采用lvs-dr模式的负载均衡、物理和服务层的高可用性设计、客户端层流量切换策略、压力测试以及服务监控。通过自定义脚本实现DNS健康检测,并利用zabbix进行系统监控,确保DNS服务的稳定性和高效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第1章 构建企业级DNS

1.1 硬件配置

CPU:12c以上配置,DNS只要使用CPU资源,此配置可以达到3万/s并发

内存:16G

网络:千兆

备注:服务器上线前进行压测,方便以后扩容等情况。

1.2 初始化系统

参见 系统初始优化 章节。

1.3 构建高性能、高可用DNS

采用lvs-dr模式负载均衡,多idc,多套dns集群,通过master-slave技术保证dns配置的一致性。

6d5de664b126c5b951da246dc237f9ef.png

1.3.1 高可用

1.3.1.1 物理层

1. 确保两台lvs不在同一机柜、同一物理交换机接入

2. 确保将所有dns服务器也做到不在同一机柜、同一物理交换机接入

3. 在不同的IDC构建多套dns集群,为客户端提供可切换的配置

1.3.1.2 服务层

坚决摒弃lvs上端口检测这种方式。采用自定义脚本检测为DNS的健康检测单独设置一个域名,就为了lvs检测DNS是否存活而设计。

脚本示例:

#!/bin/bash

timeout=5       # 服务不可用时间在与此处timeout时间及keeplive中的retry时间

Q="单独设计的要检测解析的域名"

host="/usr/bin/host"

# $1为要监测DNS的IP地址

if test -z "$1"; then

echo "You need to supply a DNS server to check. Qutting"

exit;

fi

SERVER=$1

ERC=`$host -s -W $timeout $Q $SERVER > /dev/null 2>&1; echo $?`

if [ $ERC -eq 0 ]; then

exit 0    # 如果DNS能解析的话返回0,keeplive什么都不做

else

exit 1      # 如果DNS不能解析或者超时则返回1,keeplive会踢掉此台DNS

fi

1.3.1.3 客户端层

多IDC之间的流量切换是通过客户端的健康检测cron实现的,脚本每分钟运行一次,分别检测每个DNS集群虚地址的可用性。

1.3.2 高性能

通过lvs可以对每个集群做横向扩容,是否需要扩容的依据是对现有系统的压测结果,以及实时的监控数据。亦或者可以在最靠近应用层处,加上一层cache-only集群,但前提是线上环境中没有任何系统依赖于DNS的负载均衡。

1.4 压力测试

1.4.1 安装queryperf

[root@linux-node1 ~]# cd /server/tools/

# 12以上的新版本bind9源码中已经不包含queryperf

[root@linux-node1 tools]# wget ftp://ftp.isc.org/isc/bind9/9.12.4/bind-9.12.4.tar.gz

[root@linux-node1 tools]# tar xf bind-9.12.4.tar.gz

[root@linux-node1 tools]# cd bind-9.12.4/contrib/queryperf/

[root@linux-node1 bind-9.17.2]# ./configure

[root@linux-node1 bind-9.17.2]# make

[root@linux-node1 queryperf]# cp queryperf /usr/bin/

1.4.2 使用qeryperf

1.4.2.1 建立压测准备文件

[root@linux-node1 ~]# vim test.txt

www.leonshadow.com   A

www.leonshadow.com   A

www.leonshadow.com   A

…… (个数根据测试结果进行调整)

www.leonshadow.com   A

www.leonshadow.com   A

1.4.2.2 执行压测命令

[root@linux-node1 ~]# queryperf -s 10.10.10.102 -d test.txt

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 10.10.10.102)

[Status] Testing complete

Statistics:

Parse input file:     once

Ended due to:         reaching end of file

Queries sent:         59 queries      # 查询次数

Queries completed:    59 queries

Queries lost:         0 queries

Queries delayed( ):   0 queries

RTT max:         0.004210 sec

RTT min:              0.001957 sec

RTT average:          0.003261 sec

RTT std deviation:    0.000665 sec

RTT out of range:     0 queries

Percentage completed: 100.00%         # 查询成功结果

Percentage lost:        0.00%

Started at:           Fri Jul 10 10:13:05 2020

Finished at:          Fri Jul 10 10:13:05 2020

Ran for:              0.012486 seconds

Queries per second:   4725.292327 qps # 此配置可以支持的并发数

命令解析:

-s:指定DNS服务器IP地址

-d:指定压测文件

备注:可以多做几次压力测试查看临界点在哪里。

1.5 服务监控(zabbix)

1.5.1 系统基础性能

使用zabbix自带模板即可,监控指标包括:

CPU

内存

主机存活

磁盘空间

主机运行时间

系统load

1.5.2 Loopback地址VIP绑定状态监控

该架构中,dnsserver在集群中充当realserver的角色,在DR中需要绑定loopback地址方能通信,因此当loopback地址没有绑定上时,lvs健康检测通过,但是当请求到达dnsserver时,请求被拒绝,dns集群会出现异常。

1.5.3 DNS主从数据一致性监控

1. 通过写zabbix自定义discovery,扫出dns配置中所有zone,然后分别对比slave和master每个zone的serial值,当slave与master的值持续5分钟不一致时报警。

写脚本,每15分钟扫一遍master上所有域名解析结果,与每个slave的结果做对比,当出现结果不一致情况时报警。

1.5.4 DNS响应时间监控

远端一组主机跑在fullnat下(提供高可用),通过dig命令检测dnsserver的响应时间。

1.5.5 DNS每秒请求数监控

在每台dns主机上,编写zabbix脚本,分析named_stats文件,获取每秒请求数,示例如下:

#!/bin/bash

#rndc stats

STATS='/var/named/chroot/var/log/named_stats'

if [[ $# -ne 1 ]]

then

echo "$0 [querys]"

exit 2

else

which=$1

fi

if [[ -f "${STATS}" ]]

then

echo > ${STATS}

rndc stats >/dev/null 2>&1

else

echo "${STATS} not found."

exit 2

fi

case ${which} in

querys)

RESULT=`awk '{if ($2=="QUERY") {print $1}}' ${STATS}`

;;

*)

echo "$0 [querys]"

exit 2

;;

esac

echo ${RESULT}

1.5.6 DNS可用性监控

远端一组主机跑在fullnat下(提供高可用),通过host命令检测dnsserver的可用性,脚本与lvs健康检测脚本类似。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值