pdns - 4.X master slave 同步注意事项

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/signmem/article/details/86163581

说明

1. 环境为 pdns_server 4.1 版本下测试
2. 本文只提供部分再主从同步过程中出现的问题
3. 具体主从同步方法参考下面文档

文档参考

powerdns 4.1.x MASTER 切换

架构图参考

dns结构

服务说明

1. pdns-recursor 自身不提供 DNS 解析, 只提供转发功能
2. pdns-server   利用了 backend (例如 mysql)  进行了 zone 管理,并提供 dns 管理服务

架构参考

1. 当前对外支持 DNS (53) 端口为 pdns-recursor 服务
2. 可以配置 pdns-recursor 上游 DNS 服务器例如大家熟悉的 8.8.8.8
3. 自主管理的 pdns 服务器监听在 (5300) 端口
4. 必须在 pdns-recursor 中定义指定那些 ZONE 需要转发到自主管理的 pdns 服务进行解析 (ex: 163.com=10.199.212.241:5300)

example 说明

1. 当 user 访问 pdns-recursor 希望解析  www.redhat.com 
2. 由于 pdns-recursor 没有在 zone 定义管理 redhat.com, 那么将会 forward 请求至 8.8.8.8, 再转发结果至 user
3. 当 user 访问 pdns-recursor 希望解析  www.163.com
4. 由于 pdns-recursor 在 zone 定义了自行管理 163.com, 那么将会 forward 请求至 pdns-server (5300),再转发结果至 user

常见问题

master slave 同是 4.1.X, 如何 notify 到 slave

> 在 pdns 3.x, 2.x 下, 当 master  upload 了 serial number 后  
> 根据 master  pdns.conf 配置  also-notify=1.1.1.1 参数即可主动通知从服务器 
> 当 pdns 4.x notify slave 时候,同样也只会通知 53 端口, 无法做到通知 pdns-server 服务

解决方法

> 无需再 /etc/pdns/pdns.conf 中配置 also-notify=1.1.1.1  (无法指定端口)  
> 在 master 的 database 中,插入下面的 item  

语法

MariaDB [pdns]> insert into domainmetadata (domain_id, kind, content) values (1, 'ALSO-NOTIFY', 'slavednsipaddr:5300');
Query OK, 1 row affected (0.00 sec)

同步过程中遇到权限问题

当主从同步出现下面错误
(master)

Jan  9 16:48:33  pdns_server: AXFR of domain 'XXX.com' initiated by slaveip
Jan  9 16:48:33  pdns_server: AXFR of domain 'XXX.com' denied: client IP slaveip has no permission
Jan  9 16:48:33  pdns_server: AXFR of domain 'XXX.com' failed: slaveip cannot request AXFR

(slave)

Jan  9 16:49:07  pdns_server: Domain 'xxx.com' is stale, master serial 5, our serial 3
Jan  9 16:49:07  pdns_server: Initiating transfer of 'xxx.com' from remote 'master:5300'
Jan  9 16:49:07  pdns_server: Starting AXFR of 'xxx.com' from remote master:5300
Jan  9 16:49:07  pdns_server: Unable to AXFR zone 'xxx.com' from remote 'master:5300' (resolver): AXFR chunk error: Server Not Authoritative for zone / Not Authorized

因为当前需要全量同步 (AXFR) 则需要在 master 中允许 slave 访问

解决办法
针对每个域名 (注意, 这里只需要指定IP, 不需要指定端口)

MariaDB [pdns]> insert into domainmetadata (domain_id, kind, content) values (1, 'ALLOW-AXFR-FROM', 'slaveip');
Query OK, 1 row affected (0.00 sec)

针对所有域名

/etc/pdns/pdns.conf
allow-axfr-ips=x.x.x.x 指定 ip 就可以

同步时间问题

master, slave 都可以通过 slave-cycle-interval 定义
控制检测 serial number 变更的时间

猜你喜欢

转载自blog.csdn.net/signmem/article/details/86163581