像 Youtube 这样的大公司如何只用一个 IP 来平衡流量?

Vic*_*Lft 9 load-balancing anycast

检查A记录youtube.com(例如),我只看到一个 IP 地址。

考虑到他们处理的流量,这怎么可能?

他们是否使用带有负载均衡器的任播?

chi*_*cks 18

有几个功能可能有助于您看到的内容:

  • 任播可以允许多个位置的服务器为一个 IP 提供服务。
  • 地理平衡根据您所在的区域以及数据中心的负载情况给出不同的 IP
  • 负载平衡器通常包括某种热 IP 故障转移以提高可靠性

任播和地理平衡将有助于分散负载,而用户不会看到多个 IP。负载平衡器将有助于一个数据中心内的可靠性,因此这些少数 IP 有望不会出现单点故障。

现实与问题不符

尽管在评论中提出了问题和确认,但我还是看到了更多 youtube 的 IP:

$ dig youtube.com A

; <<>> DiG 9.8.1-P1 <<>> youtube.com A
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 195
;; flags: qr rd ra; QUERY: 1, ANSWER: 11, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;youtube.com.           IN  A

;; ANSWER SECTION:
youtube.com.        300 IN  A   173.194.33.163
youtube.com.        300 IN  A   173.194.33.164
youtube.com.        300 IN  A   173.194.33.165
youtube.com.        300 IN  A   173.194.33.166
youtube.com.        300 IN  A   173.194.33.167
youtube.com.        300 IN  A   173.194.33.168
youtube.com.        300 IN  A   173.194.33.169
youtube.com.        300 IN  A   173.194.33.174
youtube.com.        300 IN  A   173.194.33.160
youtube.com.        300 IN  A   173.194.33.161
youtube.com.        300 IN  A   173.194.33.162

;; Query time: 14 msec
;; SERVER: 172.16.0.23#53(172.16.0.23)
;; WHEN: Wed Aug 26 23:45:18 2015
;; MSG SIZE  rcvd: 205
Run Code Online (Sandbox Code Playgroud)


wom*_*ble 11

youtube 等大型网站采用了多种策略:

  • 并非每个人都获得相同的 IP 地址。不同的 DNS 请求将A返回不同的记录。有时会根据地理指标返回不同的 IP 地址(您得到一个“离您很近”的 IP),有些变化只是为了负载平衡。

  • 很少有请求真正到达“主”站点。如果您检查从 请求的页面的完整请求集youtube.com,您会注意到它们中的绝大多数都转到其他域,这些域是单独处理的。

  • 很多负载均衡器。一旦请求到达单个 IP 地址,非常高效且高度可扩展的负载平衡器会将请求定向到大量前端 Web 服务器。

  • 许多机器为单个请求提供服务。前端网络服务器在实际为请求提供服务时只做很少的工作。它们主要用于 HTTP 解析和路由到更多层的服务器,其中的每个集群执行生成页面的较大任务的一个非常小的和专门的部分。我没有现成的参考资料,但我记得几年前读过一篇文章说,每一个 Google 搜索请求都会导致代码在一百多个单独的服务器上运行以生成响应。

希望这可以为您解决一些问题。如果您还有其他问题,最好创建一个新的、严格指定的问题,而不是在评论中进行冗长的讨论。