有两种方法可以告诉 bind9 加载哪些区域:列出它们named.conf
(或其中包含的文件),并使用等方式管理它们rndc addzone
。rndc delzone
如果我想从第一个选项转到第二个选项,有什么方法可以做到这一点而无需任何停机时间?
如果我从中删除一个区域named.conf
,我必须先重新加载配置才能运行rndc addzone <zone>
;但这样,区域就会在重新加载和 rndrndc addzone
命令之间消失。
(对于一个区域来说这还不算太糟糕,但我想迁移几千个区域)。
如果重要的话,我使用 bind9 版本 9.11.5。
答案1
我不知道是否有提供任何工具来实现这一点,但我对方法的建议是:
- 决定什么是真正可以接受的(我将遵循“对于一个区域来说不会太糟糕”的建议,最短的停机时间可能没问题,而不是严格的“无停机时间”要求)
- 克隆环境,以便您可以测试此特定的迁移场景
- 编写一个脚本,从配置中枚举区域名称和区域定义的主体(这是您想要提供的两个主要内容
rndc addzone
) - 运行它,并确保它能正常工作。我假设您需要处于以下状态:命名正在运行,旧区域定义未加载但在脚本文件中可用(如果这些定义与某些特定包含文件隔离,则很容易)
- 确定停机时间是否足够快,可以接受。如果不行,请考虑采用“电视厨师风格”的方法,即准备好结果输出,然后在停机期间在旧文件和新文件之间进行“印第安纳琼斯风格”的交换。