我最近在网络中添加了更多 BIND9 DNS 服务器,而添加每个我希望从属节点从属的区域/域的工作变得过于重复,更不用说只有一个主服务器很容易造成故障。有没有更好的方法来管理 DNS 区域/从属服务器等?
答案1
作为一个拥有数十台 DNS 服务器和数千个域的环境的系统管理员,我理解(好吧,感受到)你的痛苦。我们用 puppet 和模板解决了这个问题。
我们的所有域和服务器也在我们的基础设施数据库中有条目(甚至区域也是从那里生成的,但目前这并不重要)。所以我们大致做了以下事情:
主名称服务器:
- 主named.conf有几个用于生成文件的包含语句,如下所示
- 生成的配置包括所有从属服务器的通知语句,这些语句是从对我们的基础设施数据库的 SQL 查询生成的
- 域列表也是从该数据库生成的
关于奴隶:
- 主named.conf有几个用于生成文件的包含语句,如下所示
- 域列表由基础设施数据库生成,包括主域的信息
当 puppet 更改上述任何文件时,它也会调用rndc reconfig
重新加载配置,但前提是它解析正确。
答案2
一些建议可能是:
- 创建仅缓存的 DNS 服务器,如本文?
- 使用 rsync 定期将配置从一个从属服务器复制到另一个从属服务器
- 使用 heartbeat 或 keepalived 为同一 IP 创建负载平衡主 DNS 服务器。
答案3
我使用不同的方法。使用 PowerDNS,区域和记录的复制非常容易。整个 dns 数据存储在 MySQL-DB 中,并通过 MySQL 复制到 2 个从属服务器,这些服务器也使用 powerdns。
该装置运行了约 6 年,没有出现任何问题。
顺便说一句:bind 仍然用于缓存