我有 twp 名称服务器运行 PowerDNS 作为 ns1 和 ns2 使用主/从类型设置,这很好用。我想创建多个服务器来提供服务(即网络、电子邮件等),然后让 ns1 或 ns2 上的 PowerDNS(无论哪个被命中)返回与主机名关联的多个 IP 之一,具体取决于该主机是否实际启动并且跑步。
例如,假设我有两个 Web 服务器,X 和 Y。然后我在 DNS 中有两个 A 记录,因此 webserver.local 有时会解析为 X 的 IP,有时会解析为 Y 的 IP,从而产生循环效应。完美的。
现在,如果 X 出现故障,这仍然有效,但客户端必须在他们有机会击中 Y 之前暂停,这意味着他们最终会到达他们想去的地方,但速度要慢得多。如果 X 出现故障,我希望将其 IP 地址从要解析的 IP 循环列表中删除,以便 DNS 在解析 webserver.local 时仅返回 Y 的 IP,直到修复并放置 X重新投入使用。
要求 PowerDNS 验证主机是否已启动并在每个请求上运行可能需要一两秒钟(如果可能的话),这确实会减慢 DNS 查询速度。我的一个想法是通过 cron 检查服务器定期完成一项完全独立的任务,并相应地修改 PowerDNS 配置。我当然可以从这个角度来攻击它,但希望可能有一种更标准的方法来解决这个问题,不需要太多的定制开发。
无法确定这是 PowerDNS 内置的东西,还是有更“官方”的方式来处理这个问题,我采取了构建自己的程序的方式来执行此操作。该程序更像是一个通用的“如果主机出现故障,采取用户定义的操作”,而不是专门针对此,使其具有更广泛的应用程序。
我已将其公开,以防其他任何人使用: https ://github.com/hyperionworks/pulse/