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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!