是否可以为一个域名配置多个 IP?例如,如果一台服务器瘫痪了一段时间,用户将转到第二台服务器。我读过一些有关使用主计算机(负载平衡器)和多台从属计算机进行负载平衡的内容,但如果主计算机发生故障该怎么办?
谢谢您的回答!主要问题是:如果主计算机的数据中心丢失了互联网连接或类似情况,该怎么办?(主计算机 - 为来自域名的所有请求提供服务的负载平衡器)
答案1
您将其标记为“DNS”。DNS 有时被称为“穷人的负载均衡器”。
DNS 服务器本身本质上是冗余的,但它们作为负载平衡器的角色并不能为 Web 服务器提供冗余解决方案,因为没有内置监控功能来在节点发生故障时将其从轮换中移除。您需要自己编写 DNS 服务器,而且即使这样,DNS 缓存也会阻止它在发生故障时立即更新。
但是,某种硬件或软件负载平衡器通常更好。它比 DNS 提供更快的故障转移时间、更好的监控和更多的控制。
负载均衡器通常成对工作,并具有在它们之间浮动的虚拟 IP。如果一个负载均衡器发生故障,另一个负载均衡器将接管 IP 地址。这避免了单点联系。
我的建议是更多地研究负载平衡器,看看你更喜欢哪种。例如,你会使用硬件负载平衡器吗?你的数据中心提供商是否有你可以使用的解决方案?或者,你是否想考虑基于 Linux 或 Microsoft 的解决方案,以便你能够快速上手,这取决于你的专业知识。
如果您确实需要数据中心冗余,那么您将需要依赖 BGP 或 DNS。有些 DNS 服务提供此项服务:http://edgedirector.com/和http://www.autofailover.com/就是两个例子。
答案2
是的,这是可能的,并且被称为循环赛,Wiki 文章中也列出了缺点。但是您没有优先级(例如 MX 记录)。
顺便说一句:这个问题似乎更相关于http://serverfault.com。
答案3
除了此处的其他评论之外,值得指出的是,最好不要将负载平衡器视为“主”计算机。它是一个负载平衡器,而您称为“从属”的计算机托管负载平衡器在其间平衡流量的服务。
实现您所谈论内容的另一种方法是使用单个 IP 并使用 NAT 隐藏多个服务器。 (NAT 与某些协议的交互效果不佳,因此请小心。)
无论是负载平衡还是 NAT,如果您在后端运行有状态服务,则必须解决同步问题。
答案4
请参阅这个问题:
你的问题是如何提供高可用性。DNS 循环不是 HA,因为:
- 甚至无法实现负载分配(流行的商用操作系统仅使用发回的第一个记录)
- 现在没有办法让请求方知道哪些 IP 真正在提供服务,而且大多数软件没有“魔术按钮“这将使
- 即使上述两个问题都得到解决,您也需要(在一定程度上)保证如果一台服务器出现故障,所有其他服务器都会提供正确答案。而 DNS 与此完全无关。
关于第一点,你可以有 10 条 A 记录,但只为每个 DNS 请求提供 3 条,其中答案是随机排序的,子集也是随机选择的 - 很多人都是这么做的。但大多数人都控制着 BGP,因此他们实际上可以选择请求发送到哪里
编辑:这依赖于我对“常见”DNS服务器的经验,该服务器实际上并没有随机化发送答案的顺序。