据我所知,当我打开一个像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很可能同时使用三种方法:
其实这一切都很好描述。
http://en.wikipedia.org/wiki/Google_platform
请注意,我们谈论的是数以万计的服务器。 很多数据中心充满了东西。
谷歌是非常特殊的,服务器几乎只读。 他们得到一个索引的副本,并将其服务,直到他们重新映像与一个新的更新副本。 对于应答群集没有任何更新。 这对于一个应用程序来说是不寻常的 – 但并不是因为google聪明,只是因为他们的需求是不寻常的。
一个IP地址不一定是一个SPOF,因为它肯定会dynamic地重新受到影响(又称故障切换)到一个健康的服务器,如果前一个持有它出错。
高可用性站点随时使用许多技术,就像DNS根服务器一样,
事实上,为了确保攻击和失败,我们可以部署许多解决scheme: