只有其中一个发生故障时,才可以进行 DNS 循环?

只有其中一个发生故障时,才可以进行 DNS 循环?

我有两台服务器,处理能力和负载能力相同。我试图实现的是:(我已经拥有并运行 DNS 服务器,所以这应该不是问题)。

服务器 A 将为所有传入到 sub.domain.com 的请求提供服务,服务器 B 仅在服务器 A 发生故障时提供服务,如果需要等待片刻才能决定,那也没关系。

可能吗?加权循环不能满足我的需要,常规循环也不能,因为只有第一个请求成功传送后,它才会前进到下一个服务器。

有没有办法,如果服务器 A 上的 sub.domain.com 不可用,则转发到服务器 B,直到 A 上线?

谢谢,这确实有助于保证我的项目的一致性。

答案1

有没有办法,如果服务器 A 上的 sub.domain.com 不可用,则转发到服务器 B,直到 A 上线?

不通过 DNS - 至少在没有自定义 DNS 服务器监控和动态更改记录的情况下不行(效果不太好)。要获得此行为,您需要在客户端和服务器之间建立一个处理故障转移逻辑的系统。HAProxy 始终是一个不错的选择,并且假设它是 http 流量,几种常见的 Web 服务器(Apache、nginx、lighttpd)也可以满足您的需要。

答案2

另一个选项是类似 CARP 的东西。您为两台服务器分配一个虚拟 IP 地址,它们会定期互相 ping,只要“主服务器”处于运行状态,它就会获得流量,但如果它停止响应,那么从服务器就会接管该 IP。这使得它对应用程序完全透明。

CARP——通用地址冗余协议

答案3

F5 GTM 就是做这些事情的。它们对设备进行测试,看设备是否正常运行,然后将 DNS 记录更改为适当的值。

如果您特别喜欢冒险,您可以允许动态更新 DNS 区域。然后从主机 B 使用某种脚本对主机 A 进行检查。如果它检测到主机 A 已关闭/无法访问/无响应,它可以发送 DNS 更新请求来更改 IP。主机 A 可以执行相反的操作,并在一定时间的“正常运行”后自动将 DNS 记录设置回其 IP。

您还可以使用 HAProxy 或其他高可用性选项(如 CARP),或者查看Linux-HA网站地点。

相关内容