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健康检测脚本类似。

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健康检测脚本类似。

猜你喜欢

转载自www.cnblogs.com/johnzheng/p/12166915.html