Google 等网站如何实现高可用性?

Google 等网站如何实现高可用性?

据我了解,当我打开 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 负载平衡
  • 负载平衡和反向代理。
  • 故障转移解决方案

相关内容