构建DNS(企业级)

1、硬件选型

CPU:12C以上配置

内存:16G

网络:千兆

2、初始化系统配置

关闭 iptables

service iptables stop
chkconfig iptables off

关闭 selinux

vi /etc/sysconfig/selinux
SELINUX=disabled

调整ulimit限制

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集群虚地址的可用性。

#!/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记录)

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

结果:

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

DNS(企业级)的更多相关文章

  1. 架构师成长之路6.6 DNS服务器搭建(构建企业级DNS)

    点击返回架构师成长之路 架构师成长之路6.6 DNS服务器搭建(构建企业级DNS) 采用LVS-DR模式负载均衡,多IDC,多套DNS集群,通过master-slave技术保证dns配置的一致性. 1 ...

  2. Linux企业级项目实践之网络爬虫(7)——DNS解析

    DNS 是Domain Name Service的缩写.域名系统为Internet上的主机分配域名地址和IP地址.IP地址不易于记忆,然而域名地址相比较而言是方便于记忆的.用户如果使用域名地址,当想获 ...

  3. 基于Linux系统的网络服务——高速缓存DNS及企业级域名解析服务

    1.DNS域名系统 DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数 ...

  4. DNS简析

    IntroductionName Server架构分层管理机制分层查询机制Name Server之间的Master-Slave架构DDNS底层协议配置文件/etc/hosts/etc/resov.co ...

  5. Nagios:企业级系统监控方案

    在大多数情况下Cacti + RRDtool已经实现对系统各种参数的监测.但很多企业可能不满足于仅仅监测系统基本参数的需求,而是需要监测除基本参数之外的各种应用程序的运行状况.很显然在这种情况下对于一 ...

  6. 人们对Python在企业级开发中的10大误解

    From : 人们对Python在企业级开发中的10大误解 在PayPal的编程文化中存在着大量的语言多元化.除了长期流行的C++和Java,越来越多的团队选择JavaScript和Scala,Bra ...

  7. Foreman 企业级配置管理解决方案

    Foreman 企业级配置管理解决方案 Foreman 企业级配置管理解决方案 笔记本 puppet foreman 构建运维体系 本文是构建运维体系的其中一个关键环节. 什么是 foreman Fo ...

  8. Python语言在企业级应用上的十大谬误

    英文原文:https://www.paypal-engineering.com/2014/12/10/10-myths-of-enterprise-python/ 翻译原文:http://www.os ...

  9. 负载均衡集群企业级应用实战—LVS

    一.负载均衡集群介绍 1.集群 ① 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能.可靠性.灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技 ...

随机推荐

  1. Bootstrap系列 -- 43. 固定导航条

    很多情况之一,设计师希望导航条固定在浏览器顶部或底部,这种固定式导航条的应用在移动端开发中更为常见.Bootstrap框架提供了两种固定导航条的方式:  .navbar-fixed-top:导航条固定 ...

  2. [c++]printf的编译器静态检测

    经常会用到C的格式化字符串,gcc/clang的扩展,都是可以进行字符串和可变参数的检测,不匹配,就会爆warning. 自己手写的,需要加上一点代码,否则不会进行检测. 1.  可变参数 void ...

  3. 52-which 显示系统命令所在目录

    显示系统命令所在目录 which command-list 参数 command-list 是which搜索的一条或多条命令(实用程序) 示例 which 单条命令 $ which ls /bin/l ...

  4. 北大OJ 1001题

    题目:输入一序列的正实数和幂次(正整数)对,然后打印结果(具体的比这个精细) 这道题是关于大数计算的(大数求幂),从开始建立思路,到写代码.调式到最后被AC以及最终的优化,总共用了差不多一天的时间.开 ...

  5. linux基础-第十六单元 yum管理RPM包

    第十六单元 yum管理RPM包 yum的功能 本地yum配置 光盘挂载和镜像挂载 本地yum配置 网络yum配置 网络yum配置 Yum命令的使用 使用yum安装软件 使用yum删除软件 安装组件 删 ...

  6. background-image 和 img

    一:解决div里面的img图像宽度不变,高度不变!   超出div部分设置隐藏! 图片:1920x526 div容器: 1423x526 1. background-image:样式实现 img: 标 ...

  7. springMVC之web.xml配置

    <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:// ...

  8. 100726C

    显而易见,我们要找子串,每次记录前缀和,算出余数,然后通过一个数组保存余数,答案就是加上之前余数的总和,要注意整除的情况 #include<iostream> #include<cs ...

  9. Js-动态控制table的tr、td增加及删除的具体实现

    <table id='wifi_clients_table' style="color:#0099CC;font-size:12px;" class="table ...

  10. 关于Yii2中CSS,JS文件的引入心得

    js和css的引入 use yii\helpers\Html; 1.全局引入,所有的view生效 /assets/AppAsset.php public $css = [ 'css/site.css' ...