Назад | Перейти на главную страницу

Как крупные компании, такие как Youtube, распределяют нагрузку с помощью только одного IP-адреса

Изучение A записи для youtube.com (например) я вижу только один IP-адрес.

Как это возможно, учитывая объем обрабатываемого ими трафика?

Они используют anycast с балансировщиками нагрузки?

Есть несколько особенностей, которые, вероятно, способствуют тому, что вы видите:

  • Anycast может позволить одному IP-адресу обслуживаться серверами в нескольких местах.
  • географический баланс выдает разные IP в зависимости от того, в каком регионе вы находитесь и какая нагрузка в дата-центрах
  • балансировщики нагрузки обычно включают какие-то горячее переключение IP-адресов для повышения надежности

Anycast и географическая балансировка помогут распределить нагрузку так, чтобы пользователь не видел более одного или нескольких IP-адресов. Балансировщики нагрузки повысят надежность в одном центре обработки данных, поэтому мы надеемся, что эти несколько IP-адресов не будут подвержены единичным точкам отказа.

реальность не подходит под вопрос

Несмотря на вопрос и подтверждение в комментариях, я вижу больше IP-адресов для youtube:

$ 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

С такими крупными сайтами, как youtube, можно использовать ряд стратегий:

  • Не все получают одинаковый IP-адрес. Разные DNS-запросы будут разными A записи возвращаются. Иногда возвращаются разные IP-адреса на основе географических показателей (вы получаете «близкий к вам» IP-адрес), а некоторые вариации предназначены только для целей балансировки нагрузки.

  • На «главный» сайт попадает очень мало запросов. Если вы изучите полный набор запросов, которые входят в сборку страницы, запрошенной из youtube.com, вы заметите, что подавляющее большинство из них переходит в другие домены, которые обрабатываются отдельно.

  • Много-много балансировщиков нагрузки. Как только запрос попадает на один IP-адрес, очень эффективные и хорошо масштабируемые балансировщики нагрузки направляют запросы на очень большое количество интерфейсных веб-серверов.

  • Многие машины обслуживают один запрос. Внешние веб-серверы выполняют очень мало работы, связанной с фактическим обслуживанием запроса. В основном они предназначены для анализа HTTP и маршрутизации на Больше уровни серверов, каждый кластер которых выполняет очень маленькую и специализированную часть более крупной задачи по созданию страницы. У меня нет справки, но я помню, как несколько лет назад читал статью, в которой говорилось, что каждый поисковый запрос Google будет вызывать запуск кода на более чем сотне отдельных серверов для генерации ответа.

Надеюсь, это немного проясняет вам ситуацию. Если у вас есть еще вопросы, вероятно, будет лучше создать новый, четко определенный вопрос, а не проводить длительное обсуждение в комментариях.

Google / Youtube (а также многие другие компании, в частности CDN) размещают серверы вместе со многими интернет-провайдерами, а затем DNS возвращает IP-адреса этих серверов. Это объясняет, почему одни люди могут видеть только один IP, а другие - десяток.

Таким образом, сервер, который вы видите, на самом деле может находиться не в центре обработки данных Google, а всего в нескольких милях от вашего дома / офиса, где бы ни находился головной узел провайдера. Иногда вы можете понять, где находится сервер, с помощью служебной программы traceroute (tracert в Windows) и / или обратного DNS.

Следовательно, эти серверы также не будут обслуживать весь трафик в мире, а будут обслуживать только трафик из одного города, а иногда только от одного интернет-провайдера в этом городе.

Конечно, на этих серверах нет все знаний Google; они являются интерфейсом и, вероятно, также имеют довольно много кеширования и т. д. Все, что они не знают, они отправят в центр обработки данных Google, как описал Вомбл.