DNS+NamedManager主从部署

环境准备:centos7

添加host解析
cat /etc/hosts
172.16.198.201  dns-master.gfdns.com   #组件:apache+named+namedmanager+keepalived
172.16.198.202  dns-slave.gfdns.com    #组件:apache+named+namedmanager+keepalived
172.16.198.197  vip.gfdns.com          #mysql一主两从,此步骤有dba支持

配置主namedmanager节点:

复制代码
# 两节点同时执行yum安装
# yum -y install epel-release bind bind-chroot httpd
# yum -y install php php-soap php-mysql php-intl php-xml php-cli php-soap php-intl
# wget -O /etc/yum.repos.d/jethrocarr-c7-public.repo http://repos.jethrocarr.com/config/centos/7/jethrocarr-c7-public.repo
# yum clean all && yum repolist
# yum -y install namedmanager-www namedmanager-bind keepalived 
# vi /etc/named.conf
主要修改这几个参数,参数意思,这里不说明,没有的就添加,已有的就修改
  options {
        ......
        listen-on port 53 { any; };
    //    listen-on-v6 port 53 { any; };
 
        allow-query     { any; };

        forward first;
        forwarders {
            233.5.5.5;
            233.6.6.6;
            8.8.8.8;
            202.106.0.20;
        };
        ......          
  }
  ......
  include "/etc/named.namedmanager.conf"
  ......
# chown root:named /etc/named.namedmanager.conf    --> 授权组named权限,这个很重要
复制代码
修改namedmanager
复制代码
设置 namedmanager的接口api地址信息
可根据实际情况自行修改
# vi /etc/namedmanager/config-bind.php 
$config["api_url"] = "http://10.100.12.111/namedmanager";                         
$config["api_server_name"]        = "dns-master.gfdns.com";                                    
$config["api_auth_key"]                = "DNS";    // 自行设置

导入数据结构,执行完autoinstall.pl,会自动生成 namedmanager 的数据库,导入了数据结构数据,生成默认密码
# cd /usr/share/namedmanager/resources/
# ./autoinstall.pl 

可根据实际情况自行修改 设置 namedmanager 连接数据库信息
我这里修改了数据库名,和数据库密码namedmanager181
新创建一个数据库名 namedmanager181, 在授权 namedmanager 用户权限,并导入namedmanager的数据库 (数据库导入导出这里不详细说明)
# vi /etc/namedmanager/config.php   
$config["db_host"] = "172.16.0.181";        // hostname of the MySQL server
$config["db_name"] = "namedmanager181";     // database name
$config["db_user"] = "namedmanager";        // MySQL user
$config["db_pass"] = "abcdefg";             // MySQL password (if any)
复制代码
修改apache配置
复制代码
# vim  /etc/httpd/conf/httpd.conf 
ServerName dns-master.gfdns.com:80


<Directory />
    AllowOverride none
#    Require all denied
</Directory>
# vi /etc/httpd/conf.d/namedmanager.conf   
  Alias /namedmanager /usr/share/namedmanager/htdocs

  <Location /namedmanager>
        Order allow,deny
        Allow from all
        AllowOverride None
        Require all granted

  </Location>
复制代码
修改keepalived
复制代码
cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalived     #全局定义
  
global_defs {
   router_id master-node
}
  
vrrp_script chk_http_port {
    script "/etc/keepalived/chk_http.sh"
    interval 2
    weight -5
    fall 2
    rise 1
}
  
vrrp_instance VI_1 {
    state MASTER
    interface ens160
    mcast_src_ip 172.16.198.201
    virtual_router_id 51
    priority 101
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.16.198.197
    }
 
track_script {
   chk_http_port
}
} 
复制代码

配置从 namedmanager节点:

修改namedmanager
复制代码
设置 namedmanager的接口api地址信息
可根据实际情况自行修改
# vi /etc/namedmanager/config-bind.php 
$config["api_url"] = "http://10.100.12.111/namedmanager";                         
$config["api_server_name"]        = "dns-slave.gfdns.com";                                    
$config["api_auth_key"]                = "DNS";    // 自行设置

这里无需执行autoinstall.pl,因为配置主节点的时候已经生成了数据库和导入了数据结构

可根据实际情况自行修改 设置 namedmanager 连接数据库信息
我这里修改了数据库名,和数据库密码namedmanager181
新创建一个数据库名 namedmanager181, 在授权 namedmanager 用户权限,并导入namedmanager的数据库 (数据库导入导出这里不详细说明)
# vi /etc/namedmanager/config.php   
$config["db_host"] = "172.16.0.181";        // hostname of the MySQL server
$config["db_name"] = "namedmanager181";     // database name
$config["db_user"] = "namedmanager";        // MySQL user
$config["db_pass"] = "abcdefg";             // MySQL password (if any)
复制代码
修改apache配置
复制代码
# vim  /etc/httpd/conf/httpd.conf 
ServerName dns-slave.gfdns.com:80


<Directory />
    AllowOverride none
#    Require all denied
</Directory>
# vi /etc/httpd/conf.d/namedmanager.conf   
  Alias /namedmanager /usr/share/namedmanager/htdocs

  <Location /namedmanager>
        Order allow,deny
        Allow from all
        AllowOverride None
        Require all granted

  </Location>
复制代码
修改keepalived
复制代码
[root@dns-slave ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived     #全局定义
  
global_defs {
   router_id slave-node
}
  
vrrp_script chk_http_port {
    script "/etc/keepalived/chk_http.sh"
    interval 2
    weight -5
    fall 2
    rise 1
}
  
vrrp_instance VI_1 {
    state BACKUP
    interface  ens160
    mcast_src_ip 172.16.198.201
    virtual_router_id 51
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.16.198.197
    }
 
track_script {
   chk_http_port
}
} 
复制代码
keepalived健康检查
复制代码
[root@dns-master ~]# cat /etc/keepalived/chk_http.sh 
#!/bin/bash
counter=$(netstat -na|grep "LISTEN"|grep "80"|wc -l)
if [ "${counter}" = "0" ]; then
     systemctl restart httpd >/dev/null 2>&1
    sleep 2
    counter=$(netstat -na|grep "LISTEN"|grep "80"|wc -l)
    if [ "${counter}" = "0" ]; then
       systemctl stop keepalived.service
    fi
fi
复制代码

启动 httpd named keepalived mysql服务

systemctl status  httd.service
systemctl status  named.service
systemctl status  keepalived.service
登录
https://172.16.198.197/namedmanager  默认账号密码: setup / setup123
至此完成 namedmanager 的主,从节点的服务配置,下面说明一下情况
现在有两个登录地址:
dns-master.gfdns.com
dns-slave.gfdns.com
初始账号密码都是一样的,又因为两个节点连的数据库是同一个双主数据库,所以登录哪个地址都可以,设置的配置信息都会同步

namedmanager web页面端配置:

修改用户名和密码

 

设置 namedmanager 的接口配置
这里主要添加一个管理员的邮箱号码, ADMIN_API_KEY 就一定要设置成自己设置的 key 值/etc/namedmanager/config-bind.php 在这个配置文件中定义的值 api_auth_key,

 

添加域名解析服务器
添加主节点DNS dns-master.gfdns.com,Primary Nameserver 选项要勾选,API Authentication Key *

 添加从节点,dns-slave.gfdns.com,Primary Nameserver 选项不要勾选即可, 两个节点一定要在同一个 “Nameserver Group"

 

查看Zonefile status,Logging Status 状态
否则也是失败的,如果一直都是橙色,表示同步是失败的
可以登录节点执行任务计划的语句来监测报什么错误
# php -q /usr/share/namedmanager/bind/namedmanager_bind_configwriter.php
# cd /usr/share/namedmanager/htdocs/include/cron/; php -q route53.php

添加正向解析

查看

添加 A 记录, 添加好之后,要一分钟左右时间才能生效,因为namedmanager 任务计划是每分钟执行一次

 

等待变绿之后,表示解析生效了,这时就可以去测试域名解析了
测试机器的DNS服务器设置为
DNS1=172.16.198.201
DNS2=172.16.198.202

 

高可用配置

主节点设置 master, 从节点设置 backup
配置虚拟ip: 172.16.0.180
keepalived 添加检查 dns服务的脚本,当检查到dns服务异常的时候 VIP地址可以及时切换到另外一台节点。
 
为什么我的拓补图最终的浏览器访问namedmanager 地址是:  https://172.16.198.201/namedmanager
就是用了 VIP地址: 172.16.198.201
要支持用 dns.ers.local 域名访问,需要在 /etc/httpd/conf/http.conf 配置文件中添加 ServerName 支持
主节点:
ServerName dns-master.gfdns.com vip-dns.gfdns.com
从节点:
ServerName dns-slave.gfdns.com vip-dns.gfdns.com
重启服务即可

第二种方式

10.100.12.17 gf-dns01
10.100.12.18 gf-dns02
10.100.121.11 vip
DNS+NamedManager双机高可用的配置方案:
安装步骤: 1.安装系统依赖插件和httpd包
2.安装mysql5.7并配置双主模式
3.下载并安装namedmanager
4.安装和配置bind9
5.安装keepalived
配置namedmanager(两台机器都要操作)
两台配置都一致,数据库的配置也一致
[root@dns01 ~]# cp /etc/namedmanager/config-bind.php /etc/namedmanager/config-bind.php.bak
[root@dns01 ~]# vim /etc/namedmanager/config-bind.php
......
$config["api_url"]      = "http://192.168.10.190/namedmanager";
$config["api_server_name"]  = "dns.chtwm";
$config["api_auth_key"]     = "DNS";  
访问namedmanager(https://10.100.12.111/namedmanager)进行界面配置。(由于此时vip资源在10.100.12.77 机器上,故配置信息从10.100.12.77 机器同步到10.100.12.77 机器)。默认用户名和密码(setup,setup123)。
添加域名解析服务器
Primary Nameserver 选项要勾选
添加服务器。Name Server FQDN的名称要和httpd中的ServerName一致。(如下添加部署机的主机名或者ip地址都可以)

 

确保下面的"Zonefile Status"和"Logging Status"的状态是绿色的。

添加正向域名解析

添加反向域名解析(目前没有这个需求)
(如果有多个ip段的客户机,那么就如下图添加多个反向解析配置)

 

查看正反向解析域名添加情况

上面已经成功添加了正反向解析域名,现在尝试添加一些域名的A记录和PTR记录
先添加A正向解析记录

由于上面在添加A正向解析的时候,已经勾选了PTR反向解析(如果没有勾选,则需要手动添加PTR反向解析记录),故这时候已经有了上面那几个域名的反向解析记录了:
 

如上,已经添加了几个正反向解析记录,可以访问https://10.100.121.11/namedmanager,发现访问另一台机器的namedmanager(使用上面重置后的admin用户)也会看到上面设置的正反向解析配置信息。这就说明双机同步已经生效。
可以登录到两台机器本机上查看相关的正反向解析配置:
复制代码
[root@gf-dns02 ~]# cd /var/named/
[root@gf-dns02 named]# ll
total 20
drwxr-x--- 7 root  named   61 May 14 15:41 chroot
drwxrwx--- 2 named named   23 May 15 22:54 data
drwxrwx--- 2 named named   60 May 16 19:32 dynamic
-rw-r--r-- 1 root  root   655 May 16 19:27 gfdns.com.zone
-rw-r----- 1 root  named 2253 Apr  5  2018 named.ca
-rw-r----- 1 root  named  152 Dec 15  2009 named.empty
-rw-r----- 1 root  named  152 Jun 21  2007 named.localhost
-rw-r----- 1 root  named  168 Dec 15  2009 named.loopback
drwxrwx--- 2 named named    6 Jan 26 00:48 slaves

################
[root@gf-dns02 named]# cat gfdns.com.zone 
$ORIGIN gfdns.com.
$TTL 120
@                IN SOA dns.chtwm. ops.chtwm.com. (
                        2023051612 ; serial
                        21600 ; refresh
                        3600 ; retry
                        604800 ; expiry
                        120 ; minimum ttl
                )

; Nameservers

gfdns.com.        86400 IN NS dns.chtwm.

; Mailservers


; Reverse DNS Records (PTR)


; CNAME


; HOST RECORDS

fffe        120 IN A 10.100.12.77
hee        120 IN A 10.100.12.72
hhhh        120 IN A 10.100.12.77
htcf        120 IN A 10.100.12.78
jiaban        120 IN A 10.100.12.77
jiaban2        120 IN A 10.100.12.78
复制代码

查看状态

复制代码
[root@gf-dns01 named]# rndc status 
version: BIND 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.13 (Extended Support Version) <id:7107deb>
running on gf-dns01: Linux x86_64 3.10.0-1062.18.1.el7.x86_64 #1 SMP Tue Mar 17 23:49:17 UTC 2020
boot time: Fri, 19 May 2023 13:33:21 GMT
last configured: Fri, 19 May 2023 13:33:21 GMT
configuration file: /etc/named.conf
CPUs found: 2
worker threads: 2
UDP listeners per interface: 1
number of zones: 104 (97 automatic)
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/900/1000
tcp clients: 2/150
server is up and running
复制代码

检查主配置文件和区域数据文件有没有语法错误

[root@gf-dns01 named]# /usr/sbin/named-checkconf 
[root@gf-dns01 named]# /usr/sbin/named-c
named-checkconf    named-checkzone    named-compilezone  
[root@gf-dns01 named]# /usr/sbin/named-checkzone gfdns.com gfdns.com.zone
zone gfdns.com/IN: loaded serial 2023051906
OK

参考地址:

https://blog.csdn.net/chen55bo/article/details/115556254? 

https://blog.51cto.com/u_8789878/3411730

主从不同步解决:修改主的服务器serial number 大于从的,然后重启named服务; (待验证)

http://www.taodudu.cc/news/show-423865.html?action=onClick 

 

posted @   逆风飞翔的博客  阅读(244)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示