据我了解,当我打开 Google 等网站时,会查找主机名,然后我的浏览器使用生成的 IP 地址连接到服务器并检索页面。
但是,高可用性网站如何确保始终可以访问此单个 IP 地址?这难道不是单点故障吗?
答案1
网站高可用性有两种常见解决方案:DNS循环和IP负载平衡。
DNS 轮询意味着每次您向 DNS 服务器查询网站名称时,都会获得不同的 IP 地址;这有助于将请求分发到多个服务器,还可以避免您指出的单点故障。这是 DNS 答案www.google.com
(当向“google.com”域的权威名称服务器之一询问时):
> www.google.com
Server: ns1.google.com
Address: 216.239.32.10
www.google.com canonical name = www.l.google.com
www.l.google.com internet address = 74.125.77.99
www.l.google.com internet address = 74.125.77.104
www.l.google.com internet address = 74.125.77.147
另一种常见的解决方案是还同时使用的一个(在本例中很有可能)是 IP 负载平衡;也就是说,这些 IP 地址实际上并未分配给服务器,而是分配给负载平衡设备(或反向代理,或任何其他类似解决方案),然后将请求转发到多个后端服务器之一;如果其中一个服务器发生故障,则将使用另一个服务器。
更多信息请点击这里:
http://en.wikipedia.org/wiki/Round_robin_DNS
http://en.wikipedia.org/wiki/Load_balancing_(计算)
答案2
IP 地址不一定是 SPOF,因为如果之前持有该地址的服务器出现问题,它肯定可以动态地重新受到影响(即故障转移)到健康的服务器。
答案3
谷歌很可能同时使用三种方法:
- 在后端,您有许多服务器来处理请求。它们都有自己的 IP 地址。
- 它们前面是硬件负载平衡器,用于将请求分发到后面的服务器。每个服务器都有一个公共 IP,但可能覆盖 30、60 甚至更多的物理服务器。它们本身可能是大型制造商的冗余产品。
- 前面可能使用 DNS 轮询。允许将负载分配到更多负载平衡器。
事实上,所有这些都描述得很好。
http://en.wikipedia.org/wiki/Google_platform
请注意,我们谈论的是数十万台服务器。许多数据中心都装满了东西。
Google 的特别之处在于,其服务器基本都是只读的。它们会获得索引的副本,并提供服务,直到使用新的更新副本进行重新映像。应答集群永远不会进行任何更新。这对于应用程序来说是不寻常的 - 但不是因为 Google 很聪明,只是因为他们的要求不寻常。
答案4
高可用性站点使用许多技术,例如 DNS 根服务器,以便可以随时访问。
事实上,为了避免攻击和故障,我们可以部署许多解决方案,例如:
- 任播解决方案
- DNS 负载平衡
- 负载平衡和反向代理。
- 故障转移解决方案