企业级DNS服务集群架构设计及BIND部署配置实战

DNS(域名解析系统)

简单地说就是一个IP地址和域名之间的转换系统,方便用户通过域名访问正确的服务地址,而不用记住不易区分的具体IP。DNS协议运行在UDP协议之上,使用端口53。

DNS解析流程

以访问www.qq.com为例,当用户在浏览器中输入网址点击回车以后,会经过以下查找IP过程,也就是DNS解析过程:

1)本地计算机host文件

2)如果本地没有解析记录,则开始递归查询本地域名服务器LOCAL DNS(也就是你网络中配置的首选和备选DNS)

3)LDNS也没有则会去查询根服务器,并开始迭代查询顶级域下的二级域或者三级域,直到查找到想要解析的域名

4)找到www.qq.com对应的ns域名地址后开始返回给LDNS,LDNS缓存一份记录后返回给计算机

5)计算机拿到地址直接对该地址发起访问请求,完成本次DNS解析过程。

常见的DNS服务软件

DNSMASQ

DNSmasq是一款小巧且方便的DNS和DHCP配置工具,适用于本地小型网络本地DNS解析,很多公司会在每台服务器上起着dnsmasq,来充当本地dns缓存服务,来提高dns解析性能同时减轻dnsserver压力

BIND

BIND是目前为止应用最为广泛的DNS部署服务开源软件,特点就是稳定、高效

HTTPDNS

移动解析,基于Http协议向云DNS服务器发送域名解析请求,替代了基于DNS协议向运营商Local DNS发起解析请求的传统方式,可以避免Local DNS造成的域名劫持和跨网访问问题,解决移动互联网服务中域名解析异常带来的困扰

这几年HTTPDNS开始兴起,目前最主要的应用领域还是移动app上解决切换流量数据时,造成新旧数据不一致的情况

DNS在企业服务集群中的作用

DNS作为整个集群中的基础服务性质存在,即可以完全独立服务于本地集群的IP解析,也可以部署位于外网环境中供公网解析使用;在集群部署环境配置中使用域名解析的好处就是当服务器迁移或者IP变更时,使用相同的主机域名,就不需要更改大量的应用配置。

大中型网络DNS集群

实验环境

[[email protected] ~]# cat /etc/redhat-release 
CentOS release 6.7 (Final)
[[email protected] ~]# uname -r
2.6.32-573.el6.x86_64

主机

172.16.2.1 m01 主DNS(Master DNS)
172.16.2.2 m02 从DNS(Slave DNS)

DNS主从配置

1)软件安装

[[email protected] ~]# yum install -y bind-utils bind bind-devel bind-chroot
[[email protected] ~]# rpm -qa|egrep  "bind-utils|bind|bind-devel|bind-chroot"
bind-libs-9.8.2-0.47.rc1.el6.x86_64
bind-utils-9.8.2-0.47.rc1.el6.x86_64
rpcbind-0.2.0-12.el6.x86_64
bind-9.8.2-0.47.rc1.el6.x86_64
bind-devel-9.8.2-0.47.rc1.el6.x86_64
bind-chroot-9.8.2-0.47.rc1.el6.x86_64

2)修改主文件配置

[[email protected] etc]# cat /etc/named.conf
options {
        version "1.1.1";
        listen-on port 53 { any; }; #监听端口
        directory       "/var/named/chroot/etc/"; #工作目录
        pid-file        "/var/named/chroot/var/run/named/named.pid";
        allow-query     { any; }; #授权解析
        dump-file       "/var/named/chroot/var/log/binddump.db";
          #当执行rndc dumpdb 命令时,服务器存放数据库文件的路径名
        statistics-file "/var/named/chroot/var/log/named_stats"; #解析数据统计文件
          zone-statistics yes; #设置允许服务收集所有域的统计数据
        memstatistics-file "log/mem_stats"; #服务器输出的内存使用统计文件的路径名
        empty-zones-enable no; #不允许域中没有主机
        forwarders {202.106.196.115;8.8.8.8; }; #转发服务器地址,先查转发服务器,如果没有
                                 得到回答,则自己解析;only只会转发,不自己解析
};
#设置密匙信息,它应用在通过TSIG 进行授权和认证的配置中 
key "rndc-key" {
        algorithm hmac-md5;
        secret "Eqw4hC1GExUWeDkKBX/pBg==";
 
};
#宣告rnde utility 使用的控制通道(channel)
controls {
        inet 127.0.0.1 port 953
        allow { 127.0.0.1; }
        keys { "rndc-key"; };
};
#设置日志服务器,和日志信息的发送地
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 10m;
    severity info;
    print-category yes;
    print-severity yes;
    print-time yes;
  };
  category default {
    warning;
  };
  category queries {
    general_dns;
  };
};
#包含一个定义视图文件
include "/var/named/chroot/etc/view.conf";

3)编辑命令通道密匙文件rndc.key

key "rndc-key" {
        algorithm hmac-md5;
        secret "Eqw4hC1GExUWeDkKBX/pBg==";
 
};
 
key "rndc-key" {
        algorithm hmac-md5;
        secret "Eqw4hC1GExUWeDkKBX/pBg==";
 
};
rndc.conf
[[email protected] etc]# vim /etc/rndc.conf
options {
   default-key "rndc-key";
   default-server 127.0.0.1;
   default-port 953;
};

4)编辑view.conf

[[email protected] etc]# cd /var/named/chroot/etc/
[[email protected] etc]# vim view.conf
view "View" {
  zone "lnh.com" {
       type master;
       file "lnh.com.zone";
       allow-transfer {
           172.16.2.2;
       };
       notify yes;
       also-notify {
           172.16.2.2;
       };
  };
};
 
5)编辑lnh.com.zone
[[email protected] etc]# pwd
/var/named/chroot/etc
$ORIGIN .
$TTL 3600     ; 1 hour
lnh.com            IN SOA op.lnh.com. dns.lnh.com. (
                        2000    ;serial
                        900     ;refresh (15min)
                        600     ;retry (10min)
                        86400   ;expire (1 day)
                        3600    ;minimum (1 hour)
                        )
       NS   op.lnh.com.
$ORIGIN lnh.com.
shanks  A 1.2.3.4
op      A 1.2.3.4
a       A 1.2.3.4

6)启动DNS

修改目录权限,并启动服务

[[email protected] etc]# cd /var && chown -R named.named named/
[[email protected] var]# /etc/init.d/named start
启动 named:                                               [确定]

重启

[[email protected] var]# rndc reload
WARNING: key file (/etc/rndc.key) exists, but using default configuration file (/etc/rndc.conf)
server reload successful

加入开机启动并查看端口

[[email protected] var]# chkconfig named on
[[email protected] var]# netstat -tunlp|grep named
tcp        0      0 172.16.2.1:53               0.0.0.0:*                   LISTEN      2073/named         
tcp        0      0 10.0.0.101:53               0.0.0.0:*                   LISTEN      2073/named          
tcp        0      0 127.0.0.1:53                0.0.0.0:*                   LISTEN      2073/named         
tcp        0      0 127.0.0.1:953               0.0.0.0:*                   LISTEN      2073/named         
udp        0      0 172.16.2.1:53               0.0.0.0:*                               2073/named         
udp        0      0 10.0.0.101:53               0.0.0.0:*                               2073/named         
udp        0      0 127.0.0.1:53                0.0.0.0:*                               2073/named

7)测试解析

[[email protected] var]# dig @127.0.0.1 a.lnh.com
 
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> @127.0.0.1 a.lnh.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56660
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
 
;; QUESTION SECTION:
;a.lnh.com.                       IN     A
 
;; ANSWER SECTION:
a.lnh.com.               3600         IN     A       1.2.3.4
 
;; AUTHORITY SECTION:
lnh.com.                   3600         IN     NS    op.lnh.com.
 
;; ADDITIONAL SECTION:
op.lnh.com.             3600         IN     A       1.2.3.4
 
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Sep 15 20:52:11 2016
;; MSG SIZE  rcvd: 76

8)从DNS服务器

下面来配置一台从DNS服务器

安装软件(同主服务器)

编辑named.conf(同主服务器)

编辑rndc-key(同主服务器)

编辑rndc.cnf(同主服务器)

编辑view.conf

[[email protected] etc]# cd /var/named/chroot/etc/
[[email protected] etc]# vim view.conf
view "SlaveView" {
  zone "lnh.com" {
       type slave;
       masters {172.16.2.1; };
       file   "slave.lnh.com.zone";
  };
};

更改属主并启动

[[email protected] etc]# cd /var && chown -R named.named named/
[[email protected] var]# /etc/init.d/named start
启动 named:

自动同步了主DNS上面的lnh.com.zone说明主从成功

[[email protected] var]# cd /var/named/chroot/etc/
[[email protected] etc]# ll slave.lnh.com.zone
-rw-r--r--. 1 named named 326 9月  15 21:15 slave.lnh.com.zone

添加解析记录

编辑lnh.com.zone,添加一条A记录、CNAME记录、MX记录

注意serial号手动加1,不然不能同步到从服务器

[[email protected] etc]# rndc reload
WARNING: key file (/etc/rndc.key) exists, but using default configuration file (/etc/rndc.conf)
server reload successful
$ORIGIN .
$TTL 3600     ; 1 hour
lnh.com            IN SOA op.lnh.com. dns.lnh.com. (
                        2003    ;serial
                        900     ;refresh (15min)
                        600     ;retry (10min)
                        86400   ;expire (1 day)
                        3600    ;minimum (1 hour)
                        )
       NS   op.lnh.com.
$ORIGIN lnh.com.
shanks  A 1.2.3.4
op      A 1.2.3.4
a       A 1.2.3.4
a       A 172.16.2.100
cname   CNAME a.lnh.com.
mx      MX 5 172.16.2.101
[[email protected] etc]# rndc reload
WARNING: key file (/etc/rndc.key) exists, but using default configuration file (/etc/rndc.conf)
server reload successful
[[email protected] etc]# host mx.lnh.com 172.16.2.1
Using domain server:
Name: 172.16.2.1
Address: 172.16.2.1#53
Aliases:
 
mx.lnh.com mail is handled by 5 172.16.2.101.lnh.com.

添加RTP记录(反向解析)

作用:简单查看当前IP主机是什么用途

编辑maste节点/var/named/chroot/etc/view.conf,加入ptr的zone配置

[[email protected] etc]# vim /var/named/chroot/etc/view.conf
view "View" {
  zone "lnh.com" {
       type master;
       file "lnh.com.zone";
       allow-transfer {
           172.16.2.2;
       };
       notify yes;
       also-notify {
           172.16.2.2;
       };
  };
  zone "16.172.in-addr.arpa" {
       type master;
       file "16.172.zone";
       allow-transfer {
           172.16.2.2;
       };
       notify yes;
       also-notify {
           172.16.2.2;
       };
  };
};

编辑master节点/var/named/chroot/etc/16.172.zone

[[email protected] etc]# vim /var/named/chroot/etc/16.172.zone
$TTL 3600       ; 1 hour
@                 IN SOA  op.lnh.com. dns.lnh.com. (
                                2004       ; serial
                                900        ; refresh (15 minutes)
                                600        ; retry (10 minutes)
                                86400      ; expire (1 day)
                                3600       ; minimum (1 hour)
                                )
                        NS      op.lnh.com.
102.122         IN      PTR     a.lnh.com.

修改16.172.zone文件属性

[[email protected] etc]# chown named.named 16.172.zone
[[email protected] etc]# rndc reload
WARNING: key file (/etc/rndc.key) exists, but using default configuration file (/etc/rndc.conf)
server reload successful

编辑slave节点/var/named/chroot/etc/view.conf加入ptr的zone配置

[[email protected] etc]# vim /var/named/chroot/etc/view.conf
view "SlaveView" {
  zone "lnh.com" {
       type slave;
       masters {172.16.2.1; };
       file   "slave.lnh.com.zone";
       };
  zone "16.172.in-addr.arpa" {
       type slave;
       masters {172.16.2.1; };
       file "slave.16.172.zone";
  };
};
[[email protected] etc]# rndc reload
WARNING: key file (/etc/rndc.key) exists, but using default configuration file (/etc/rndc.conf)
server reload successful
[[email protected] etc]# ll
-rw-r--r--. 1 named named  325 9月  15 22:15 slave.16.172.zone
-rw-r--r--. 1 named named  383 9月  15 22:04 slave.lnh.com.zone

测试反向解析

主上

[[email protected] etc]# host 172.16.122.102 172.16.2.1
Using domain server:
Name: 172.16.2.1
Address: 172.16.2.1#53
Aliases:
 
102.122.16.172.in-addr.arpa domain name pointer a.lnh.com.

从上

[[email protected] etc]# host 172.16.122.102 172.16.2.2
Using domain server:
Name: 172.16.2.2
Address: 172.16.2.2#53
Aliases:
 
102.122.16.172.in-addr.arpa domain name pointer a.lnh.com.

智能DNS

DNS服务器判断来源IP来分配不同的域解析

编辑master节点 /var/named/chroot/etc/named.conf,在include添加

[[email protected] etc]# vim /var/named/chroot/etc/named.conf
…
  category queries {
    general_dns;
  };
};
 
acl group1 {
   172.16.2.1;
};
 
acl group2 {
   172.16.2.2;
};
 
include "/var/named/chroot/etc/view.conf";

编辑master节点/var/named/chroot/etc/view.conf

[[email protected] etc]# vim /var/named/chroot/etc/view.conf
view "GROUP1" {
  match-clients { group1; };
  zone "viewlnh.com" {
     type master;
     file "group1.viewlnh.com.zone";
  };
};
 
view "GROUP2" {
  match-clients { group2; };
  zone "viewlnh.com" {
     type master;
     file "group2.viewlnh.com.zone";
  };
};

编辑maste节点新的/var/named/chroot/etc/group1.viewlnh.com.zone文件

[[email protected] etc]# vim /var/named/chroot/etc/group1.viewlnh.com.zone
$ORIGIN .
$TTL 3600       ; 1 hour
lnh.com                 IN SOA  op.lnh.com. dns.lnh.com. (
                                2005       ; serial
                                900        ; refresh (15 minutes)
                                600        ; retry (10 minutes)
                                86400      ; expire (1 day)
                                3600       ; minimum (1 hour)
                                )
                        NS      op.viewlnh.com.
$ORIGIN viewlnh.com.
op                      A       172.16.122.1
view                    A       172.16.122.1

编辑maste节点新的/var/named/chroot/etc/group2.viewlnh.com.zone文件

[[email protected] etc]# vim /var/named/chroot/etc/group2.viewlnh.com.zone
$ORIGIN .
$TTL 3600       ; 1 hour
viewlnh.com                 IN SOA  op.viewlnh.com. dns.viewlnh.com. (
                                2008       ; serial
                                900        ; refresh (15 minutes)
                                600        ; retry (10 minutes)
                                86400      ; expire (1 day)
                                3600       ; minimum (1 hour)
                                )
                        NS      op.viewlnh.com.
$ORIGIN viewlnh.com.
op                      A       172.16.122.2
view                    A       172.16.122.2

改属主

[[email protected] etc]# cdown named.named group*
[[email protected] etc]# rndc reload

测试从两台机器上解析

从172.16.2.1上

[[email protected] etc]# host view.viewlnh.com 172.16.2.1
Using domain server:
Name: 172.16.2.1
Address: 172.16.2.1#53
Aliases:
 
view.viewlnh.com has address 172.16.122.1

从172.16.2.2上

[[email protected] etc]# host view.viewlnh.com 172.16.2.1
Using domain server:
Name: 172.16.2.1
Address: 172.16.2.1#53
Aliases:
 
view.viewlnh.com has address 172.16.122.2
时间: 2024-08-04 11:46:32

企业级DNS服务集群架构设计及BIND部署配置实战的相关文章

二、ELKStack集群架构设计

一.ELKStack介绍与入门实践 二.Elasticsearch 集群架构图 服务器配置:Centos6.6 x86_64 CPU:1核心 MEM:2G (做实验,配置比较低一些) 注:这里配置elasticsearch集群用了3台服务器,可以根据自己的实际情况进行调整. 三.开始安装配置nginx和logstash 注:这里使用yum安装,如果需要较高版本的,可以使用编译安装. 在10.0.18.144上操作,10.0.18.145配置方式和144是一样的. 1.安装nginx 配置yum源

Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之部署master/node节点组件(四)

0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 1.部署master组件 master 服务器的组件有:kube-apiserver.kube-controller-manager.kube-scheduler 因此需要下载k8s master,下载地址:https://github.com/kubernetes/kubernetes/blob/master/CHANGE

redis 集群热备自动切换sentinel配置实战

Redis SentinelSentinel(哨兵)是用于监控redis集群中Master状态的工具,其已经被集成在redis2.4+的版本中 一.Sentinel作用:1):Master状态检测 2):如果Master异常,则会进行Master-Slave切换,将其中一个Slave作为Master,将之前的Master作为Slave3):Master-Slave切换后,master_redis.conf.slave_redis.conf和sentinel.conf的内容都会发生改变,即mast

构建企业级Nginx+Keepalived集群架构

随着Nginx在国内的发展潮流,越来越多的互联网公司都在使用Nginx. Nginx高性能.稳定性成为IT人士青睐的http和反向代理服务器,今天我们来实战构建Nginx+Keepalived高可用架构配置,如下为网络架构图: 一.环境准备: 系统环境:CentOS 6.5 x86_64 Nginx版本:nginx v1.6.2 Keepalived版本:keepalived v1.2.1 Nginx-1:192.168.33.8 (Master) Nginx-2:192.168.33.10 (

Spring Cloud(Dalston.SR5)--Zuul 网关-微服务集群

通过 url 映射的方式来实现 zuul 的转发有局限性,比如每增加一个服务就需要配置一条内容,另外后端的服务如果是动态来提供,就不能采用这种方案来配置了.实际上在实现微服务架构时,服务名与服务实例地址的关系在 eureka server 中已经存在了,所以只需要将Zuul注册到 eureka server上去发现其他服务,就可以实现对 serviceId 的映射,并且启用了 eureka server 同时也会启用 ribbon 对服务进行负载均衡调用,加入 Zuul 到微服务集群架构图如下:

MySQL集群架构06HAProxy+PXC集群架构

本博客讨论HAProxy+PXC集群架构. 1.架构说明 单纯的PXC集群需要对外部应用程序暴露多个集群内部的MySQL节点的IP地址,才能让应用程序使用到多节点读写数据的便利,同时,PXC集群本身没有提供负载均衡的功能. HAProxy+PXC集群架构中,引入负载均衡组件HAProxy,使得对外部应用只需要暴露HAProxy的外部地址和端口即可,而无需让应用程序直接使用MySQL节点自身的地址. 同时HAProxy提供了负载均衡的功能,可以平衡集群内各个MySQL节点的负载水平. 2.核心原理

大中型网站集群架构企业级高标准全自动实战项目征集

大中型网站集群架构企业级高标准全自动实战 发布本博文目标: 老男孩教育全新期中集群架构项目实战(老男孩老师亲自带队) 1)征集网友或老男孩教育学生资源3-5人. 2)树立老男孩教育运维班期中集群架构项目标杆(期末的的架构会更精彩) 3)共同完成老男孩老师第一本书的结尾项目实战项目. 4)将结合23期运维班毕业前的期末架构项目出书(全自动化大型网站集群搭建优化) 5)让支持老男孩教育网友或老男孩教育学生得到锻炼和成长.享受出书作者待遇. 具体项目将以10台左右VM资源进行部署和演示,规模可以扩展到

windows+nginx+iis+redis+Task.MainForm构建分布式架构 之 (nginx+iis构建服务集群)

本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,由标题就能看出此内容不是一篇分享文章能说完的,所以我打算分几篇分享文章来讲解,一步一步实现分布式架构:下面将先给出整个架构的核心节点简介,希望各位多多点赞: . 架构设计图展示 . nginx+iis构建服务集群 . redis存储分布式共享的session及共享session运作流程 . redis主从配置及Sentinel管理多个Redis集群 . 定时框架Task.MainForm提

Java 多线程 服务集群和分布式缓存系统架构

服务集群和分布式缓存系统架构见下图: 参考资料 Java企业级电商项目架构演进之路 Tomcat集群与Redis分布式 原文地址:https://www.cnblogs.com/WJQ2017/p/8442510.html