9月21日 智能DNS、编译安装bind、压力测试

1、智能DNS的实现

所谓智能DNS就是让不同地区的客户端访问网站时能将就近网站的IP地址反馈到客户端,这样可以增加客户端的访问速度,比如beijing的客户去访问www.magdu.com网站反馈一个ip地址,henan的客户访问这个网站时反馈另外一个ip地址,实现过程如下:

在centos7上的操作
1、vim /etc/named.conf
acl beijing {                            
            192.168.25.226/24;   ---北京客户的地址
};
acl henan {
                172.18.21.106/16;  ---河南客户的地址
};
view bjview {
        match-clients {beijing;};  ---如果匹配北京的地址
        zone "magedu.com"{     ---定义区域解析库,也可以将这个内容写到/etc/named.rfc1912.zones中,将下面三行的内容换为include "/etc/named.rfc1912.zones.bj"
        type master;
        file "magedu.com.bj";   ---就走这个区域解析库文件
};
};
view hnview {
        match-clients {henan;};
        zone "magedu.com"{
        type master;
        file "magedu.com.hn";
};
include "/etc/named.rfc1912.zones";   这个文件中也可以定义其他的域,那么如果河南的客户去访问这个文件中定义的其他域,就会解析解析库文件中定义的相应地址
};
view otherview {           ---这个view是兜底用的,如果不是来自这两个地址的客户,就反馈给北京的地址
        match-clients {any;};
 zone "magedu.com"{
        type master;
        file "magedu.com.bj";
};
};
2、 vim /var/named/magedu.com.bj
$TTL 1D
@       IN SOA  dns1 admins.magedu.com. (
                                        66      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                NS      dns1
dns1            A       172.18.21.107
websrv          A       192.168.25.226
www             CNAME   websrv
vim /var/named/magedu.com.hn
$TTL 1D
@       IN SOA  dns1 admins.magedu.com. (
                                        68      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                NS      dns1
dns1            A       172.18.21.107
websrv          A       172.18.21.106
www             CNAME   websrv
3、测试
在centos6.9上操作,有两个ip地址,分别是定义的beijing和henan的客户地址
dig www.magedu.com @192.168.25.21   ---相当于是用我的192.168.21.226地址去访问这个dns服务器
dig www.magedu.com @172.18.21.107

总结:
1、view(视图),一个bind服务器可定义多个view,每个view中可定义一个或多个zone.
2、每个view用来匹配一组客户端地址段
3、多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件
4、 一旦启用了view,所有的zone都只能定义在view中
5、 仅在允许递归请求的客户端所在view中定义根区域
6、 客户端请求到达时,是自上而下检查每个view所服务的客户端列表

2、编译安装bind

1、安装开发包组、创建named账号
 yum groupinstall " Development Tools"
 useradd -r -m -d /var/named -s /sbin/nologin named
2、执行configure脚本并安装
 ./configure --prefix=/app/bind9 --without-openssl
 make && make install
3、将别的主机的named.ca文件拷贝到本主机
scp /var/named/named.ca 172.18.21.7:/app/bind9/etc/
chgrp named named.ca 
4、vim /etc/profile.d/env.sh 
export PATH=/app/bind9/sbin:/app/bind9/bin:$PATH
5、 编写named.conf文件
vim /app/bind9/etc/named.conf  
options {
 directory       "/var/named";
};
zone "test.com"{
        type master;
        file "test.com.zone";
};
zone "."{
        type hint;
        file "named.ca";
};
6、编写区域解析库文件
vim /var/named/test.com.zone 
$TTL 1D
@   IN   SOA dns1 admins.test.com ( 1 1d 1h 1w 1d )
                NS dns1
dns1    A       172.18.21.7
www     A       8.8.8.8
7、加添man 帮助的路径 
8、开启服务
named -u named -g -f -d 3 --- u谁来开启服务,-f前段运行,-g前段运行并显示标准错误,有助于排错,-d是debug级别,级别越高,显示的信息越详细
  9、测试
dig www.test.com @172.18.21.7

安装rndc工具

1、生成rndc.conf文件
 rndc-confgen -r /dev/urandom >/app/bind9/etc/rndc.conf
cat /app/bind9/etc/rndc.conf
# Start of rndc.conf
key "rndc-key" {
    algorithm hmac-md5;
    secret "h5c6Wu39YsRht3YzwoK2MA==";
};

options {
    default-key "rndc-key";
    default-server 127.0.0.1;
    default-port 953;
};
# End of rndc.conf

# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndc-key" {
#   algorithm hmac-md5;
#   secret "h5c6Wu39YsRht3YzwoK2MA==";
# };
# 
# controls {
#   inet 127.0.0.1 port 953
#       allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf
这个文件相当于生成两把钥匙,分别放在这个文件和下面的文件中,使sync这个命令能够控制dns。
2、编辑named.conf文件,将上面文件中的# key "rndc-key" {行 至# End of named.conf行添加到文件中
vim /app/bind9/etc/named.conf 
options {
 directory       "/var/named";
};
zone "test.com"{
        type master;
        file "test.com.zone";
};
zone "."{
        type hint;
        file "named.ca";
};
# Use with the following in named.conf, adjusting the allow list as needed:
 key "rndc-key" {
        algorithm hmac-md5;
        secret "h5c6Wu39YsRht3YzwoK2MA==";
 };
 
 controls {
        inet 127.0.0.1 port 953
                allow { 127.0.0.1; } keys { "rndc-key"; };
 };
# End of named.conf
3、测试
rndc status  ---发现rndc命令已经可以使用了。

3、压力测试

压力测试的目的是测试某个dns服务器的性能,查看一下这个服务器一秒钟可以并发处理多少个用户的请求。dns的压力测试工具是queryperf,这个工具也需要编译安装,过程如下

1、编译安装
cd /app/bind-9.11.2/contrib/queryperf/  
./configure 
make
cp -a queryperf /app/bind9/bin/   --移动到PATH变量的路径下
2、测试
vim test.txt   ---创建一个文件,比如解析www.test.com的A记录
www.test.com A
这个文件要尽量的大才能测出来,也就是多复制几行,实验时复制了38万行。这样才能模拟并发处理多少个操作
开启服务
在另外一个终端输入如下面命令
queryperf -d test.txt -s 127.0.0.1  ---s指定测哪个主机,实验时测的本主机
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 127.0.0.1)
[Status] Testing complete

Statistics:

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

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

  RTT max:          0.085477 sec
  RTT min:              0.000586 sec
  RTT average:          0.007314 sec
  RTT std deviation:    0.011023 sec
  RTT out of range:     0 queries

  Percentage completed: 100.00%
  Percentage lost:        0.00%

  Started at:           Thu Sep 21 23:13:33 2017
  Finished at:          Thu Sep 21 23:15:52 2017
  Ran for:              138.438754 seconds

  Queries per second:   2729.409136 qps   ---可以看出一秒钟能并发处理2729个请求。

推荐阅读更多精彩内容

  • 1. 概述 在网络环境中一般用户只需要在浏览器中输入url如www.sunny.com就可以到对应服务器获取相应的...
    ghbsunny阅读 930评论 0 6
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 74,824评论 12 116
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 127,729评论 18 546
  • http://acm.timus.ru/problem.aspx?space=1&num=1191 1191. C...
    hzu阅读 28评论 0 0
  • 最开始推荐我看《奇葩说》的是单位那位长的像马东的领导(不过我发现我们那位领导比马东更像马东了,因为马东最近...
    潘多拉简书阅读 84评论 0 1