五:DNS之六:服务器与系统相关

阅读(1,407)

一:服务器配置:DNS业务比较消耗CPU和网络资源

1.1. CPU:物理核心越多越好

1.2.内存大于16G

1.3.网卡至少千兆(现在自带的网卡都是千兆的了)

二:系统:

2.1.关闭防火墙

2.2.关闭selinux

2.3.文件描述符更改,执行以下命令:

echo -e “* soft  nproc  65535\n* hard  nproc  65535\n* soft  nofile 65535\n* hard  nofile 65535” >> /etc/security/limits.conf

三:高可用与高性能:

使用两台服务器做LVS DR轮训模式+Keepalived实现负载均衡,两台服务器通过keepalived对该虚拟IP做状态监测实现高可用,即如果一台LVS服务器出现问题则虚拟IP会切换到另一台LVS服务器继续提供服务客户端DNS地址写LVS的虚拟地址,即LVS将客户端的TCP和UDP的53端口请求转发到后端的DNS服务器上,如果要使用DNS缓存,要确认没有使用NDS做负载均衡的使用场景,监测脚本如下:

#!/bin/bash
NAME="web.weather.com"
CMD="/usr/bin/host"
if test -z  "$1";then #检查第一个参数是否为空,脚本的第一个参数是DNS服务器的IP地址
  echo "Ples Input a Name Server IP Address,exit"
  exit 254; #脚本不执行而直接退出
fi
res=`$CMD -s -W 5 $NAME > /dev/null && echo $?` #-W指定最多等待答复时间,单位为秒
if [ $res -eq 0 ];then #如果命令执行成功,$?为上一条命令的执行结果
	exit 0 #退出状态为0
else #如果命令执行失败
  exit 1 #退出状态为1
fi

四:性能测试:

上线之前对DNS性能进行压测,测试工具使用BIND源码中自带的queryperf :

#wget ftp://ftp.isc.org/isc/bind9/9.9.9-P1/bind-9.9.9-P1.tar.gz

#tar xvf bind-9.9.9-P1.tar.gz 

#cd bind-9.9.9-P1 

#pwd

#/usr/local/src/bind-9.9.9-P1/contrib/queryperf 

# ./configure 

#make

# cp queryperf /usr/bin/ 

# cat named.txt  #将要解析的域名和解析方式保存在此目录,几个解析就是几个并发

web.weather.com A
web.weather.com A
mobile1.weather.com A
mobile1.weather.com A 

# queryperf  -d  named.txt  -s  192.168.10.103  #-d指定使用此文件,-s指定DNS服务器

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.10.103)
[Status] Testing complete

Statistics:

  Parse input file:     once
  Ended due to:         reaching end of file

  Queries sent:         25 queries
  Queries completed:    25 queries
  Queries lost:         0 queries
  Queries delayed(?):   0 queries

  RTT max:         0.007696 sec
  RTT min:              0.000184 sec
  RTT average:          0.003293 sec
  RTT std deviation:    0.002271 sec
  RTT out of range:     0 queries

  Percentage completed: 100.00%
  Percentage lost:        0.00%

  Started at:           Tue Jul 12 21:26:16 2016
  Finished at:          Tue Jul 12 21:26:16 2016
  Ran for:              0.010066 seconds #查询的时间,值越小越好

  Queries per second:   2483.608186 qps #查询的qps值,值越大表示服务器可承受的并发查询就越大  

五:监控:

5.1:配合zabbix 监控,监控基础的CPU、内存、磁盘空间、系统IO等基础性能监控。

# rndc stats #执行命令生成状态文件,次文件是追加的,因为每次执行之前要先清空,清理之后里面的值也是递增的

5.2:查看状态文件:# cat /var/named/chroot/etc/named.conf 

+++ Statistics Dump +++ (1468325768)
++ Incoming Requests ++
                   7 QUERY
++ Incoming Queries ++ #导入的记录
                   6 A
                   1 SOA
++ Outgoing Queries ++
[View: GROUP1]  #zone文件的数量
[View: View]
[View: _bind]
++ Name Server Statistics ++ #DNS服务器总查询统计
                   7 IPv4 requests received
                   1 requests with EDNS(0) received
                   7 responses sent
                   1 responses with EDNS(0) sent
                   7 queries resulted in successful answer
                   7 queries resulted in authoritative answer
++ Zone Maintenance Statistics ++
                   3 IPv4 notifies sent
++ Resolver Statistics ++
[Common]
[View: GROUP1]
[View: View]
[View: _bind]
++ Cache DB RRsets ++
[View: GROUP1 (Cache: GROUP1)]
[View: View (Cache: View)]
[View: _bind (Cache: _bind)]
++ Socket I/O Statistics ++
                   5 UDP/IPv4 sockets opened
                   4 TCP/IPv4 sockets opened
                   2 UDP/IPv4 sockets closed
                   6 TCP/IPv4 sockets closed
                   1 TCP/IPv4 socket bind failures
                   6 TCP/IPv4 connections accepted
++ Per Zone Query Statistics ++
[view-weather.com (view: GROUP1)] #每个zone的查询统计
                   1 queries resulted in successful answer
                   1 queries resulted in authoritative answer
[weather.com (view: View)]
                   6 queries resulted in successful answer
                   6 queries resulted in authoritative answer
[168.192.in-addr.arpa (view: View)]
[version.bind (view: _bind)]
[hostname.bind (view: _bind)]
[authors.bind (view: _bind)]
[id.server (view: _bind)]
--- Statistics Dump --- (1468325768)

5.3:DNS请求数统计脚本,将返回值发给zabbix即可出图:

#!/bin/bash
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 254
fi
case $which in
querys)
 RESULT=`awk '{if ($2=="QUERY") {print $1}}' $STATS`
;;
*)
  echo "$0 [querys]"
  exit 253
;;
esac
echo $RESULT 

5.4:脚本执行方式及结果:


六:自动化:

6.1:saltstack安装部署

通过saltstack配置,实现自动批量安装、部署DNS,保证每个DNS Server的目录、权限、版本等都保持一致

七:配置管理自动化:

使用bind-dlz,将所有的配置都保存在mysql中,然后对bind做特殊配置,使得每次bind接受的请求都去mysql中查询数据之后再将返回的数据写入Slave DNS 配置文件当中。

八:安全:

更新DNS漏洞

选用大厂商做域名服务商,万网之类的

对服务器的登录日志做监控分析

九:日常运维规范:

9.1:确保所有监控都处于生效并正常的状态

9.2:所有机器通过saltstack进行配置操作配置,不要单独操作单独服务器,会导致数据或目录等消息不一致

9.3:针对dns架构调整的操作,要在流量低谷的时候操作,rndc reload该zone文件影响不大,但是改了view文件影响会很大

9.4:对集群的扩容操作时,要对新加入的节点进行测试,同时重启服务器并检服务器在重启后各个状态都保持正常

9.5:关注DNS相关的新闻,该升级版本就升级

9.6:配置文件和zone文件定时备份

十:排错相关:

10.1:域名无法解析的时候确认服务器的TCP和UDP的53端口是开启的,

10.2:并确认防火墙关闭,网络要是相通的,可以使用telnet测试一下DNS服务器的53端口是否正常 


Warning: count(): Parameter must be an array or an object that implements Countable in /home/nginx/wordpress/wp-includes/class-wp-comment-query.php on line 405

发表评论

邮箱地址不会被公开。 必填项已用*标注