我正在寻找可以完成以下操作的 DNS 软件:
- 按设定的时间间隔检查所有 A 记录的运行状况
- 如果服务器在多次连续检查后仍无响应,则用正常工作的服务器替换 A 记录
- 当服务器宕机时,请定期检查。一旦服务器恢复正常,请恢复正常的 A 记录
这是我想到的一个等价的东西:
- 运行具有极低 TTL(分钟)的 DNS 服务器
- 使用 cron 任务定期查询所有 Web 服务器
- 如果需要,使用 sed 替换 A 记录,然后重新启动 DNS 服务器
我很难相信还没有可以实现上述目标的东西。我不需要付费服务,而且我只能使用 VPS 的 root 权限来运行任何程序。任何建议都很好。谢谢!
答案1
另一个你可以考虑的选项是让你的辅助/备份服务器通过 cron 进行测试,如果失败,则使用dyndns 更新脚本更改 DNS 记录。修改任何脚本都很简单。此外,还有很多免费的 DNS 服务,例如一切域名和编辑DNS支持 dyndns http 更新格式。
答案2
不幸的是,你遇到了一个问题。通常的做法是设置具有相当长的 TTL(生存时间)的 A 记录。A 记录会保留在查询过你的 DNS 服务器的缓存中,保留时间与 TTL 规定的时间相同。这意味着,为了交换 A 记录,你必须有非常短的 TTL(这不是一个好主意,因为它确实会增加 DNS 服务器的负载)。当然,你必须依靠每个人实际上遵守非常短的 TTL。
我认为您尝试做的是在 DNS 级别而不是 IP 级别对服务进行故障转移。而这并非 DNS 的设计目的,也不是 DNS 所擅长的。您需要一个不同的故障转移解决方案 - 您提出的解决方案将以不应有的方式对 DNS 造成压力。
答案3
答案4
您可以探索 PowerDNS。它支持管道后端以及 DB 作为后端。这将允许您返回动态更新。