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

据我所知,当我打开一个像Google这样的网站时,查找主机名,我的浏览器使用得到的IP地址连接到服务器并检索页面。

但是,高可用性网站如何确保始终能够访问这个单一的IP地址? 是不是一个单一的失败点?

有两种常见的网站高可用性解决scheme:DNS循环和IP负载平衡。

DNS轮询意味着每次查询DNS服务器获取该网站的名称时,都会获得不同的IP地址; 这有助于跨多个服务器分发请求,也避免了您指出的单点故障。 这是www.google.com的DNS答案(当被问到“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 

另一个常见的解决scheme是IP负载平衡,也可以同时使用(很可能在这种情况下)。 即这些IP地址实际上没有分配给服务器,而是分配给负载均衡设备(或反向代理,或任何其他类似的解决scheme),然后将请求转发给几个后端服务器中的一个; 如果其中一台服务器出现故障,另一台服务器将被使用。

更多信息:

http://en.wikipedia.org/wiki/Round_robin_DNS
http://en.wikipedia.org/wiki/Load_balancing_(computing)

Google很可能同时使用三种方法:

  • 在后端你有一些服务器来处理请求。 他们有自己的IP地址。
  • 在他们面前的是硬件负载平衡器,它们将reuqests分配给它们后面的服务器。 他们每个都有一个公有IP,但可能覆盖30,60甚至更多的物理服务器。 他们本身可能是一个大型制造商的多余。
  • 前面的DNS Round Robin很可能被使用。 允许更多负载平衡器的负载稳定性。

其实这一切都很好描述。

http://en.wikipedia.org/wiki/Google_platform

请注意,我们谈论的是数以万计的服务器。 很多数据中心充满了东西。

谷歌是非常特殊的,服务器几乎只读。 他们得到一个索引的副本,并将其服务,直到他们重新映像与一个新的更新副本。 对于应答群集没有任何更新。 这对于一个应用程序来说是不寻常的 – 但并不是因为google聪明,只是因为他们的需求是不寻常的。

一个IP地址不一定是一个SPOF,因为它肯定会dynamic地重新受到影响(又称故障切换)到一个健康的服务器,如果前一个持有它出错。

高可用性站点随时使用许多技术,就像DNS根服务器一样,

事实上,为了确保攻击和失败,我们可以部署许多解决scheme:

  • 选播解决scheme
  • DNS负载平衡
  • 负载平衡和反向代理。
  • 故障切换解决scheme