• Centos8 部署主从DNS服务器


    简介

    DNS的出现及演变

        网络出现的早期是使用 IP 地址进行通信. 那时就几台主机通信. 但是随着接入网络主机的增多.这种数字表示的地址非常不便于记忆, UNIX 上就出现了建立一个叫做  hosts 的文件(Linux 和 Windows 也继承保留了这个文件). 这个文件中记录着主机名称和 IP 地址的对应表. 这样只要输入主机名,系统就会去加载Hosts 文件并查找对应关系. 找到对应的 IP ,就可以访问这个 IP 的主机了.

       但是后来主机的急速增加.无法保证所有人都能拿到统一的最新的 Hosts 文件,就出现了文件服务器上集中存放 Hosts 文件,以提供下载使用. 互联网规模进一步扩大,这种方式也不堪重负. 而且把所有地址解析记录形成的文件都同步到所有客户机似乎也不是一个好办法,这个时候 DNS 系统出现了,随着 解析规模继续扩大, DNS系统也在不断的演化. 直到现今的多层架构体系.

    DNS概述

        DNS (Domain Name System 域名系统) , 因特网上作为域名和 IP 地址相互映射的一个分布式数据库. 能够使用户更方便的访问互联网. 而不用去记住能够被访问机器直接读取的 IP 数串,通过主机名,最终得到该主机名对应的 IP 地址的过程叫做域名解析(或主机名解析). DNS 协议运行在 UDP 协议之上. 使用端口号 53.

        DNS 的分布式数据库是以域名为索引的, 每个域名实际上就是一棵很大的的逆向树路径. 这棵逆向树称为域名空间(domain name space).树最大深度不得超过127层.树中每个节点都有一个可以长达63个字符的文本标号.

    DNS域名解析过程

      首先, 客户端现在本地缓存中查找有没有域名缓存,如果没有, 客户端发出 DNS 请求翻译 IP 地址或主机名. DNS 服务器收到客户端请求后:

        1) 检查 DNS 服务器的缓存, 若查到请求的地址或者名字, 即像客户端发出应答信息.

        2) 若没有查找,则在数据库中查找, 若查到请求的地址或者名字, 即像客户机发出应答信息.

        3) 若没有查到, 则将请求发送给根域 DNS 服务器,并依序从根域查找顶级域名, 由顶级查找二级域, 二级域查找三级, 直至找到要解析的地址或者名字, 即像客户机所在网络的 DNS 服务器发出应答信息, DNS 服务器收到应答后先在缓存中存储,然后将解析结果发给客户机.

        4) 若没有找到,则返回错误信息.

    DNS的分类

      主 DNS 服务器: 就是一台存储着原始资料的 DNS 服务器.

      从 DNS 服务器: 使用自动更新方式从主 DNS 服务器同步数据的 DNS 服务器.也成辅助 DNS 服务器.

      缓存服务器: 不负责本地解析, 返佣递归方式转发客户机查询请求. 并返回结果给客户机的 DNS 服务器, 同事缓存查询回来的结果, 也叫递归服务器.

      转发器: 这台 DNS 服务器发现非本机负责查询请求时, 不在想根域发起请求, 而是直接转发给指定的一台或者多台服务器,自身并不缓存查询结果.

    DNS中记录类型

    SOA
    可以理解为一段为自己dns做备注说明的文本,一般与ns一致
    比如:dns.laonanhai.com sa.laonanhai.com
    示例:
    a.shifen.com.        579    IN    SOA    dns.baidu.com. sa.baidu.com.  (     
                          1408010001 ; serial number     
                          5 ; refresh 5s     
                          5 ; retry 5s     
                          86400 ; expire 1d     
                          3600 ;min TTL 1h     
    )
    NS
    域的授权名称服务器

    NSDName:DNS的FQDN
     baidu.com.        64899    IN    NS    ns2.baidu.com.     
    baidu.com.        64899    IN    NS    ns4.baidu.com.     
    baidu.com.        64899    IN    NS    dns.baidu.com.     
    baidu.com.        64899    IN    NS    ns7.baidu.com.     
    baidu.com.        64899    IN    NS    ns3.baidu.com.
    MX
    域的邮件交换器,要跟着一个优先级值,越小越高
    baidu.com.        7200    IN    MX    20 jpmx.baidu.com.
    baidu.com.        7200    IN    MX    20 mx50.baidu.com.
    baidu.com.        7200    IN    MX    10 mx.n.shifen.com.
    baidu.com.        7200    IN    MX    20 mx1.baidu.com.
    A
    IPV4主机地址
    AAAA
    IPV6主机地址
    PTR
    解析IP的指针,反向记录
    CNAME
    权威(正式)名称,定义别名记录
    www.baidu.com.        1154    IN    CNAME    www.a.shifen.com.

    DNS命名规范

    1. 26个英文字母.
    2. 0-9 是个数字.
    3. "-" (英文中的连接符号).
    4. 最多63字节长度.

    DIG,NSLOOKUP,HOST的介绍

    HOST

      host 命令也是大多系统,软件库调用的解析命令.

    [root@test1 ~]# host baidu.com
    baidu.com has address 39.156.69.79
    baidu.com has address 220.181.38.148
    baidu.com mail is handled by 20 jpmx.baidu.com.
    baidu.com mail is handled by 20 mx50.baidu.com.
    baidu.com mail is handled by 10 mx.maillb.baidu.com.
    baidu.com mail is handled by 20 mx1.baidu.com.
    baidu.com mail is handled by 15 mx.n.shifen.com.

    NSLOOKUP

      nslookup 能够反映出是哪个 dnsserver 返回的结果.

    [root@test1 ~]# nslookup baidu.com
    Server:		172.16.0.2
    Address:	172.16.0.2#53
    
    Non-authoritative answer:
    Name:	baidu.com
    Address: 39.156.69.79
    Name:	baidu.com
    Address: 220.181.38.148

    DIG

      dig 返回整个解析的过程详细路径.类似 traceroute

    [root@test1 ~]# dig baidu.com
    
    ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.2 <<>> baidu.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1525
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; MBZ: 0x0005, udp: 512
    ;; QUESTION SECTION:
    ;baidu.com.			IN	A
    
    ;; ANSWER SECTION:
    baidu.com.		5	IN	A	220.181.38.148
    baidu.com.		5	IN	A	39.156.69.79
    
    ;; Query time: 26 msec
    ;; SERVER: 172.16.0.2#53(172.16.0.2)
    ;; WHEN: 五 5月 15 10:32:42 CST 2020
    ;; MSG SIZE  rcvd: 70

    单机部署 bind9

    Bind 是一款开放源码的 DNS 服务器软件, Bind 由美国加州大学 Berkeley 分校开发和维护的, 全名为 Berkeley Internet Name Domain 它是目前世界上使用最为广泛的 DNS.

    软件安装

    dnf install bind-utils bind bind-devel bind-chroot

    修改配置文件

    options {
        version "1.1.1"; // 版本
        listen-on port 53 { 172.16.0.61; };  // 监听的地址
        directory   "/var/named/chroot/etc/"; // 存放 A记录位置
        pid-file "/run/named/named.pid";     // pid
        dump-file "/var/named/chroot/var/data/binddump.db"; 
        Statistics-file "/var/named/chroot/var/log/named_stats"; 
    
        secroots-file   "/var/named/chroot/var/data/named.secroots"; //
        recursing-file  "/var/named/chroot/var/data/named.recursing";
        allow-query     { any; };   // 允许所有地址像我发起解析请求
        zone-statistics yes;  // 启用 zone 状态
        memstatistics-file "/var/named/chroot/var/log/mem_stats";  // 内存状态
        empty-zones-enable no;  // 是否支持空 zone 
        forwarders {114.114.114.114;8.8.8.8; }; // 转发的dns
        recursion yes; //  dns采用递归的查询
        dnssec-enable yes; // 关闭安全功能
        dnssec-validation no; // 关闭互联网认证
        managed-keys-directory "/var/named/dynamic";
        session-keyfile "/run/named/session.key";
        /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
    };
    
    // dns 日常管理
    key "rndc-key" {
            algorithm hmac-md5;
            secret "X2mRmAlsf/5ULFpLBGBhSQ==";
    };
    
    controls {
           inet 127.0.0.1 port 953
                   allow { 127.0.0.1; } keys { "rndc-key"; };
     };
    
    // 日志配置 保留十份日志每份10m人日志级别waring
    logging {
      channel warning { 
    //
    // named.conf
    //
    // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
    // server as a caching only nameserver (as a localhost DNS resolver only).
    //
    // See /usr/share/doc/bind*/sample/ for example named configuration files.
    //
    
    options {
        version "1.1.1"; // 版本
        listen-on port 53 { 172.16.0.61; };  // 监听的地址
        directory   "/var/named/chroot/etc/"; // 存放 A记录位置
        pid-file "/run/named/named.pid";     // pid
        dump-file "/var/named/chroot/var/data/binddump.db"; 
        Statistics-file "/var/named/chroot/var/log/named_stats"; 
    
        secroots-file   "/var/named/chroot/var/data/named.secroots"; //
        recursing-file  "/var/named/chroot/var/data/named.recursing";
        allow-query     { any; };   // 允许所有地址像我发起解析请求
        zone-statistics yes;  // 启用 zone 状态
        memstatistics-file "/var/named/chroot/var/log/mem_stats";  // 内存状态
        empty-zones-enable no;  // 是否支持空 zone 
        forwarders {114.114.114.114;8.8.8.8; }; // 转发的dns
        recursion yes; //  dns采用递归的查询
        dnssec-enable yes; // 关闭安全功能
        dnssec-validation no; // 关闭互联网认证
        managed-keys-directory "/var/named/dynamic";
        session-keyfile "/run/named/session.key";
        /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
    };
    
    // dns 日常管理
    key "rndc-key" {
            algorithm hmac-md5;
            secret "X2mRmAlsf/5ULFpLBGBhSQ==";
    };
    
    controls {
           inet 127.0.0.1 port 953
                   allow { 127.0.0.1; } keys { "rndc-key"; };
     };
    
    // 日志配置 保留十份日志每份10m人日志级别waring
    logging {
      channel warning { 
        file "/var/named/chroot/var/log/dns_warning" versions 10 size 10m;
        severity warning;
        print-category yes; 
        print-severity yes;
        print-time yes;
      };
      // 访问日志
      channel general_dns {
        file "/var/named/chroot/var/log/dns_log" versions 10 size 100m;
        severity info;
        print-category yes;
        print-severity yes;
        print-time yes;
      };
      category default {
        warning;
      };
      category queries {
        general_dns;
      };
    };
    
    // zone "." IN {
    //  type hint;
    //  file "named.ca";
    // };
    
    include "/var/named/chroot/etc/view.conf";

    编辑秘钥文件

    # 生成秘钥文件命令
    # rndc-confgen -r /dev/urandom -a

    [root@test1 ~]# cat /etc/rndc.key key "rndc-key" { algorithm hmac-md5; secret "X2mRmAlsf/5ULFpLBGBhSQ=="; };

     配置 rndc 文件

        rndc(Remote Name Domain Controllerr)是一个远程管理bind的工具,通过这个工具可以在本地或者远程了解当前服务器的运行状况,也可以对服务器进行关闭、重载、刷新缓存、增加删除zone等操作。  
        使用rndc可以在不停止DNS服务器工作的情况进行数据的更新,使修改后的配置文件生效。

    [root@test1 ~]# cat /etc/rndc.conf 
    key "rndc-key" {
            algorithm hmac-md5;
            secret "X2mRmAlsf/5ULFpLBGBhSQ==";
    };
    
    options {
            default-key "rndc-key";
            default-server 127.0.0.1;
            default-port 953;
    };

    配置 view  视图

    [root@djcy-61 log]# cat /var/named/chroot/etc/view.conf 
    view "View" {
      zone "host.io" {
            type    master;    // 主
            file    "host.io.zone";  // zone 文件名称
            allow-transfer {
                    172.16.0.62;    // 那些地址可以向我请求数据
            };
            notify  yes;            // 发生文件变更时通知那些主机来取数据
            also-notify {
                    172.16.0.62;
            };
      };
      zone "tcc.com" {
            type    master;
            file    "tcc.com.zone";
            allow-transfer {
                    172.16.0.62;       
            };
            notify  yes;
            also-notify {
                    172.16.0.62;
            };
      };
    
    };

     配置 zone 解析文件

    1 Serial:用来作为 slave 与 master 更新的依据。 master每次修改zone 文件这个需要都要加1.

    2 Refresh:指定自动同步时间. 

    3 Retry:如果到了 Refresh 的时间,但是 slave 却无法连接到 master 时, 那么在多久之后,slave 会再次的主动尝试与主机连线;

    4 Expire:如果 slave 一直无法与 master 连接上,那么经过多久的时间之后, 则命令 slave 不要再连接 master 了! 

    5 Minimun:和TTL类似.

    [root@djcy-61 log]# cat /var/named/chroot/etc/host.io.zone 
    $ORIGIN host.io.
    $TTL 600    ; 10 minutes
    @                  IN SOA  dns.host.io. dnsadmin.host.io. (
                                    2002       ; serial                  // 每次更新记录这里要 + 1
                                    900        ; refresh (15 minutes)
                                    600        ; retry (10 minutes)
                                    86400      ; expire (1 day)
                                    3600       ; minimum (10 minutes)
                                    )
                            NS      dns.host.io.
    $TTL 60 ; 1 minute
    dns                     A       172.16.0.61
    bjcy-61                 A       172.16.0.61
    bjcy-62                 A       172.16.0.62
    bjcy-81                 A       172.16.0.81
    bjcy-82                 A       172.16.0.82
    bjcy-200                A       172.16.0.200
    bjcy-210                A       172.16.0.210
    bjcy-220                A       172.16.0.220

    修改目录权限检查配置文件及启动

    chown -R named.named /run/named/
    chown -R named.named /var/named/
    [root@djcy-61 ~]# named-checkconf
    [root@djcy-61 ~]# named-checkzone "host.io" /var/named/chroot/etc/host.io.zone
    zone host.io/IN: loaded serial 2002
    OK
    [root@djcy-61 ~]# named-checkzone "tcc.com" /var/named/chroot/etc/tcc.com.zone
    zone tcc.com/IN: loaded serial 2003
    OK
    systemctl start named
    systemctl enable name

    从节点配置

    安装软件

    dnf install bind-utils bind bind-devel bind-chroot

    配置主配置文件

    options {
        version "1.1.1"; // 版本
    	listen-on port 53 { 172.16.0.62; };  // 监听的地址
    	directory 	"/var/named/chroot/etc/"; // 存放 A记录位置
        pid-file "/run/named/named.pid";     // pid
        dump-file "/var/named/chroot/var/data/binddump.db"; 
        Statistics-file "/var/named/chroot/var/log/named_stats"; 
    
    	secroots-file	"/var/named/chroot/var/data/named.secroots"; //
    	recursing-file	"/var/named/chroot/var/data/named.recursing";
    	allow-query     { any; };   // 允许所有地址像我发起解析请求
        zone-statistics yes;  // 启用 zone 状态
        memstatistics-file "/var/named/chroot/var/log/mem_stats";  // 内存状态
        empty-zones-enable no;  // 是否支持空 zone 
        forwarders {114.114.114.114;8.8.8.8; }; // 转发的dns
    	recursion yes; //  dns采用递归的查询
    	dnssec-enable yes; // 关闭安全功能
    	dnssec-validation no; // 关闭互联网认证
    	managed-keys-directory "/var/named/dynamic";
    	session-keyfile "/run/named/session.key";
    	/* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
    };
    
    // dns 日常管理
    key "rndc-key" {
            algorithm hmac-md5;
            secret "X2mRmAlsf/5ULFpLBGBhSQ==";
    };
    
    controls {
           inet 127.0.0.1 port 953
                   allow { 127.0.0.1; } keys { "rndc-key"; };
     };
    
    // 日志配置 保留十份日志每份10m人日志级别waring
    logging {
      channel warning { 
        file "/var/named/chroot/var/log/dns_warning" versions 10 size 10m;
        severity warning;
        print-category yes; 
        print-severity yes;
        print-time yes;
      };
      // 访问日志
      channel general_dns {
        file "/var/named/chroot/var/log/dns_log" versions 10 size 100m;
        severity info;
        print-category yes;
        print-severity yes;
        print-time yes;
      };
      category default {
        warning;
      };
      category queries {
        general_dns;
      };
    };
    
    // zone "." IN {
    //	type hint;
    //	file "named.ca";
    // };
    
    include "/var/named/chroot/etc/view.conf";

    配置view视图文件

    [root@djcy-62 ~]# cat /var/named/chroot/etc/view.conf
    view "View" {
      zone "host.io" {
            type    slave;
            masters {172.16.0.61; };
            masterfile-format text;
            file    "slave.host.io.zone";
      };
      zone "tcc.com" {
            type    slave;
            masters {172.16.0.61; };
            masterfile-format text;
            file    "slave.tcc.com.zone";
      };
    
    };

    编辑秘钥文件

    # 生成秘钥文件命令
    # rndc-confgen -r /dev/urandom -a

    [root@test1 ~]# cat /etc/rndc.key key "rndc-key" { algorithm hmac-md5; secret "X2mRmAlsf/5ULFpLBGBhSQ=="; };

     配置 rndc 文件

    [root@test1 ~]# cat /etc/rndc.conf 
    key "rndc-key" {
            algorithm hmac-md5;
            secret "X2mRmAlsf/5ULFpLBGBhSQ==";
    };
    
    options {
            default-key "rndc-key";
            default-server 127.0.0.1;
            default-port 953;
    };

    检查配置修改权限并启动

    chown -R named.named /run/named/
    chown -R named.named /var/named/
    [root@djcy-61 ~]# named-checkconf
    systemctl start named
    systemctl enable name
    
    # 如果没问题回自动同步文件
    [root@djcy-62 etc]# pwd
    /var/named/chroot/etc
    [root@djcy-62 etc]# ll
    total 20
    drwxr-x--- 3 named named  23 Aug  2 17:08 crypto-policies
    -rw-r--r-- 1 named named 405 Aug  2 17:15 db-mJETa6Wy
    -rw-r--r-- 1 named named 189 Aug  2 17:15 db-YAKlPalf
    drwxr-x--- 2 named named   6 Jul  7 22:14 named
    drwxr-x--- 3 named named  25 Aug  2 17:08 pki
    -rw-r--r-- 1 named named 498 Aug  2 23:14 slave.host.io.zone
    -rw-r--r-- 1 named named 346 Aug  2 23:17 slave.tcc.com.zone
    -rw-r--r-- 1 named named 318 Aug  2 17:23 view.conf

    添加解析记录

    A记录

    [root@djcy-61 ~]# cat /var/named/chroot/etc/host.io.zone 
                                    2002       ; serial      # 加一
    bjcy-224                A       172.16.0.224      # 新增
    
    [root@djcy-61 ~]# rndc reload                  # reload 同步
    WARNING: key file (/etc/rndc.key) exists, but using default configuration file (/etc/rndc.conf)
    server reload successful

     解析

    [root@djcy-61 ~]# dig -t A bjcy-224.host.io @172.16.0.61 +short
    172.16.0.224

    CNAME记录

    也就是把域名解析到另外一个域名上

    [root@djcy-61 ~]# cat /var/named/chroot/etc/host.io.zone 
    
                                    2003       ; serial
    bjcy-61                 A       172.16.0.61
    www                     CNAME   bjcy-61.host.io.
    [root@djcy-61 ~]# rndc reload
    WARNING: key file (/etc/rndc.key) exists, but using default configuration file (/etc/rndc.conf)
    server reload successful

    解析

    [root@djcy-61 ~]# host www.host.io 
    www.host.io is an alias for bjcy-61.host.io.
    bjcy-61.host.io has address 172.16.0.61

    MX记录

    [root@djcy-61 ~]# cat /var/named/chroot/etc/host.io.zone 
                                    2004       ; serial
    
    max                     MX  5   172.16.0.50
    [root@djcy-61 ~]# rndc reload
    WARNING: key file (/etc/rndc.key) exists, but using default configuration file (/etc/rndc.conf)
    server reload successful

    解析

    [root@djcy-61 ~]# host max.host.io
    max.host.io mail is handled by 5 172.16.0.50.host.io. 

    PTR记录

    配置view

    [root@djcy-61 ~]# cat /var/named/chroot/etc/view.conf 
      zone "16.172.in-addr.arpa" {
            type    master;
            file    "16.172.zone";
            allow-transfer {
                    172.16.0.62;       
            };
            notify  yes;
            also-notify {
                    172.16.0.62;
            };
      };

    配置zone文件

    [root@djcy-61 ~]# cat /var/named/chroot/etc/16.172.zone
    $TTL 3600       ; 1 hour
    @                  IN SOA  dns.host.io. dnsadmin.host.io. (
                                    2004       ; serial
                                    900        ; refresh (15 minutes)
                                    600        ; retry (10 minutes)
                                    86400      ; expire (1 day)
                                    3600       ; minimum (1 hour)
                                    )
                            NS        dns.host.io.
    61.0     IN      PTR     bjcy-61.host.io.
    62.0     IN      PTR     bjcy-62.host.io.
    81.0     IN      PTR     bjcy-81.host.io.
    82.0     IN      PTR     bjcy-82.host.io.
    200.0    IN      PTR     bjcy-200.host.io.

    权限重启

    [root@djcy-61 ~]# chown named.named -R /var/named/ 
    [root@djcy-61 ~]# rndc reload
    WARNING: key file (/etc/rndc.key) exists, but using default configuration file (/etc/rndc.conf)
    server reload successful

    从节点配置view文件

    [root@djcy-61 etc]# cat view.conf 
      zone "16.172.in-addr.arpa" {
            type    master;
            file    "16.172.zone";
            allow-transfer {
                    172.16.0.62;       
            };
            notify  yes;
            also-notify {
                    172.16.0.62;
            };
      };

    权限及重启

    [root@djcy-61 ~]# chown named.named -R /var/named/ 
    [root@djcy-61 ~]# rndc reload
    WARNING: key file (/etc/rndc.key) exists, but using default configuration file (/etc/rndc.conf)
    server reload successful

     智能DNS

        主要根据 ACL 来源限制,给出不同的后端服务器

    主配置文件配置

    vim /etc/named.conf
    acl group1 { 192.168.1.0/24; }; acl group2 { 172.16.0.0/24; };

    view视图配置

    vim /var/named/chroot/etc/view.conf
    view "GROUP1" {
      match-clients { group1; };
      zone "host.io" {
        type master;
        file "group1.host.io.zone";
      };
    };
    
    view "GROUP2" {
      match-clients { group2; };
      zone "host.io" {
        type master;
        file "group2.host.io.zone";
      };
    };

    zone文件配置

    group1.host.io.zone 同 group2.host.io.zone 只有解析IP有区别
    [root@djcy-61 ~]# cat /var/named/chroot/etc/host.io.zone 
    $ORIGIN host.io.
    $TTL 600    ; 10 minutes
    @                  IN SOA  dns.host.io. dnsadmin.host.io. (
                                    2002       ; serial
                                    900        ; refresh (15 minutes)
                                    600        ; retry (10 minutes)
                                    86400      ; expire (1 day)
                                    3600       ; minimum (10 minutes)
                                    )
                            NS      dns.host.io.
    $TTL 60 ; 1 minute
    dns                     A       172.16.0.61
    bjcy-62                 A       172.16.0.62

    DNS压测监控

    压测

       需要下载源码包 编译之后生成一个  queryperf 命令.

    下载bind源码:wget http://ftp.isc.org/isc/bind9/9.7.3/bind-9.7.3.tar.gz
    解压bind源码:tar zxf bind-9.7.3.tar.gz
    进入解压后bind源码目录:cd bind-9.7.3/contrib/queryperf/
    编译:./configure
    make
    会在当前目录下出现queryperf,可以将它拷贝至/usr/bin/下
    编辑域名记录文件(test.txt),格式如下:
    	www.baidu.com A
    	www.baidu.com A
    	www.baidu.com A
    	www.baidu.com A
    	www.baidu.com A
    压测命令:queryperf -d test.txt -s 8.8.8.8

    监控

    系统基础性能

    使用zabbix自带模板即可。Cpu、内存、主机存活、磁盘空间、主机运行时间、系统load.

    Loopback地址绑定状态监控

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

    Dns数据与master一致性监控

    此处我的方案是分为两部分:

    一是通过写zabbix自定义discovery,扫出dns配置中所有zone,然后分别对比slavemaster每个zoneserial值,当slavemaster的值持续5分钟不一致时报警

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

    Dns响应时间监控

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

    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}

    Dns可用性监控

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

        

  • 相关阅读:
    HDU2222 自动机(学习中)
    POJ 2289(多重匹配+二分)
    POJ 1486二分图的必要边
    二分图
    2015陕西 并查集
    Hdu2680 最短路
    函数调用约定
    用01随机函数构造[a,b]整数范围随机数
    hello
    Ubuntu 16.04 install R language
  • 原文地址:https://www.cnblogs.com/yanshicheng/p/12890515.html
Copyright © 2020-2023  润新知