我正在寻找一个优秀的devise主从,DNS服务器与SVN。 很less有人困扰我的是:
我们的DNS需要很多用户直接对BIND进行修改。 需要跟踪在主/从devise中使用SVN进行zone / named.conf更改。
另外:另外,如果有一个提交后的svnsync脚本来同步主站和从站,而不是AXFR / IXFR,是不是一个好主意?
如果您没有连接到主/从架构,那么您可以使用SVN保持它们同步,而不必在BIND中build立主/从关系; BIND服务器将提供相同的数据,其行为与主/从configuration中的相同,根本不需要互相通话或需要两台服务器上的不同configuration。
你的SVN仓库应该独立于BIND服务器 – 如果需要的话,它可以驻留在其中的一个服务器上,但是如果可以的话,你可能想避免这种情况,并给它自己的服务器。 SVN服务器将持有主副本的数据,BIND服务器将检索该数据并提供服务。 从逻辑的angular度来看,SVN服务器是主服务器,BIND服务器是从服务器,但是从DNS的angular度来看,我们会让这两个BIND服务器认为他们是主服务器,并带有完整的区域副本。
svnsync是一个同步SVN仓库到同一个仓库的第二个副本的工具; 根据您的体系结构,您可能希望使用svnsync将存储库的副本发送到备份站点。 您永远无法提交已同步数据的存储库,因此它基本上是只读的,但在主存储库丢失的情况下仍会覆盖您。
所以,要做到这一点,需要设置一些东西:
svnsync设置为DR服务器,或者将svnadmin dump --incremental – 将资源库的平面文件转储设置为备份。 type master;设置每个区块type master; – 他们每个都会将查询的答案作为权威性的(就像在主/从configuration中那样)。
SOAlogging中,但主要对dynamic更新很重要 – 名称parsing可以通过任一节点进行) svn update ,然后通过其init脚本向BIND进程reload ,告诉它这些区域已经改变。 顺便说一句,我绝对也宽恕使用configurationpipe理工具来分发区域文件,如200_success已经build议。 如果你这样做,你将直接删除BIND服务器的连接到SVN服务器,并支持更新的cron作业; 这些方面将由configurationpipe理工具交付。 其余这些笔记仍然适用; BIND服务器的工作stream程,configuration以及configuration后的行为保持不变。
你需要使用SVN吗? Bind9支持主/从体系结构
然后,您可以将您的主区域文件签入SVN。
如果您使用CFEngine或Puppet来pipe理您的机器,请使用它来分发您的区域和configuration文件,并指示进程重新加载新的数据。 您的提交后脚本可以将文件写入CFEngine / Puppet主服务器并触发运行。
如果你不使用CFEngine或Puppet,你应该认真考虑这样做。 由于您在pipe理多台机器,因此这是一件非常明智的事情。
顺便提一句,我还build议从预提交脚本运行named-checkzone以防止提交重叠的区域文件。