Я пытаюсь понять, как работают массивные сайты, такие как Facebook или Википедия, для моего интеллектуального любопытства. Я читал о различных методах построения масштабируемых сайтов, но все еще озадачен одной конкретной деталью.
Меня смущает то, что в конечном итоге DNS сопоставит весь домен с одним IP-адресом или несколькими IP-адресами в случае циклического DNS.
Например, в wikipedia.org есть только одна DNS-запись типа A. Таким образом, люди со всего мира, посещающие Википедию, должны отправить запрос на один IP-адрес, указанный в DNS.
Что такое аппаратное обеспечение, которое прослушивает IP-адрес для массивного сайта, и как оно может справиться со всей нагрузкой, исходящей от запросов пользователей во всем мире?
Изменить 1: Спасибо за все ответы! Anycast выглядит как выполнимый ответ ... Кто-нибудь знает способ проверить, маршрутизируется ли какой-либо конкретный IP-адрес, чтобы я мог убедиться, что это действительно прием, используемый на практике большими сайтами?
Редактировать 2: После прочтения этой темы, похоже, что anycast обычно не используется для динамического веб-контента. Anycast обычно используется для UDP (например, поиска DNS), а иногда и для статического контента.
Интересно отметить, что Facebook использует profile.ak.fbcdn.net для размещения статического контента, такого как таблицы стилей и библиотеки javascript. Каждый раз, когда я пингую это имя, я получаю ответ с другого IP-адреса. Тем не менее, я не могу сказать, является ли это anycast в действии, или совершенно другой метод.
Возвращаясь к моему первоначальному вопросу: насколько я могу судить, даже на большом сайте будет один дорогой аппарат балансировки нагрузки, прослушивающий несколько открытых IP-адресов.
источник
Ответы:
Это не обязательно аппаратное обеспечение, а полная система, которая была разработана для масштабирования. Это касается не только аппаратного обеспечения, но, что более важно, дизайна приложений, проектирования баз данных (реляционных или иных), сетей, хранилищ и того, как они все сочетаются друг с другом.
Хорошая отправная точка для вашего любопытства - узнать, как масштабируются некоторые крупные сайты. Высокая масштабируемость - начните отсюда и высокую масштабируемость для архитектуры Викимедиа , Facebook и Twitter в качестве примера.
Что касается вашего вопроса о DNS и отдельных IP-адресах и циклическом переборе, эти типы сайтов часто будут использовать балансировку нагрузки в качестве метода представления одного IP-адреса. Это может быть сделано либо с помощью специализированных аппаратных балансировщиков нагрузки, либо с помощью программного обеспечения, работающего на серверах общего назначения. Входящие запросы на IP-адрес, управляемый балансировщиком нагрузки, затем прозрачно распределяются по ряду серверов для конечного пользователя.
Чтобы получить хорошее объяснение по этой теме, включая сравнение аппаратных и программных балансировщиков нагрузки / прокси-серверов и их сравнение с циклическим перебором DNS, ознакомьтесь с веб-приложениями балансировки нагрузки .
источник
Anycast также может использоваться для TCP-соединений, при условии, что соединения недолговечны, поэтому маршруты не меняются в течение времени жизни соединения. Это хорошее предположение для HTTP-соединений (особенно, если Connection: Keep-Alive имеет короткий тайм-аут или отключен).
Многие CDN (CacheFly, MaxCDN и, возможно, многие другие) на самом деле используют anycast для соединений TCP (HTTP), а не только DNS. Когда вы определяете имя хоста в CacheFly, вы получаете один и тот же IP-адрес по всему миру, он просто направляется в «ближайший» кластер CacheFly. «Ближайший» здесь будет в терминах длины пути BGP и метрик, что обычно является лучшим способом измерения задержки сети, чем простое географическое расстояние.
В случае с Википедией, в частности: http://www.datacenterknowledge.com/archives/2008/06/24/a-look-inside-wikipedias-infrastructure/
источник
Самый простой способ проверить, использует ли IP-адрес Anycast, - это выполнить трассировку из другого места. Вы можете попробовать следующее: перейдите на traceroute.org, выберите местоположение и попробуйте выполнить трассировку до IP-адреса 8.8.8.8 (публичный DNS Google, использующий anycast). Вы должны увидеть трассировку от сервера в Австралии до 8.8.8.8 пребывания в Австралии.
Вместо проверки связи попробуйте выполнить поиск по имени хоста: например: http://network-tools.com/default.asp?prog=dnsrec&host=profile.ak.fbcdn.net
Вы увидите список IP-адресов за этим именем. Эти IP-адреса будут использоваться циклически, когда вы пингуете сервер.
источник
Игорь, твой вопрос великолепен, и, как и многие невинные вопросы, есть много, много ответов, все на разных уровнях детализации.
Аппаратное обеспечение - это веб-сервер. Очевидно ;-)
Аппаратное обеспечение на самом деле представляет собой кластер балансировщиков нагрузки, каждый из которых настроен на извлечение из общего хранилища, поэтому все они одинаково настроены с использованием идентичного материала.
Аппаратное обеспечение на самом деле является одним из нескольких кластеров балансировки нагрузки, географически распределенных, и вы были направлены к ближайшему к вам решению, принятому DNS-сервером.
источник
В прошлом году Google выпустил небольшую версию своей аппаратной архитектуры, и это хорошо читается .
источник
Один IP-адрес не обязательно означает один сервер: http://en.wikipedia.org/wiki/Anycast
источник
Большие сайты используют несколько различных методов вместе. Те сайты, которые вы упомянули, имеют почти в каждой стране несколько серверов. На основании IP-адреса посетителя веб-сайта DNS-сервер возвращает IP-адрес кластера, ближайшего к посетителю. Akamai предоставляет такую услугу (нажмите на картинку на этом сайте для получения дополнительной информации.)
Эти «кластеры» в этом центре обработки данных теперь состоят из нескольких разных машин (сервер БД, веб-сервер, балансировщик нагрузки и т. Д.). В зависимости от того, что вы предоставляете своему веб-сайту, у вас может быть несколько серверов для статического контента и т. Д.
источник
Массивные сайты, такие как Facebook или Википедия, используют несколько различных технологий для достижения масштабируемости.
Одной из таких технологий является DNS. DNS настроен на балансировку нагрузки с циклическим перебором. Конфигурация DNS достаточно умна, чтобы выяснить, откуда поступил ваш запрос и вернуть адрес ближайшего к вам сайта. Так что, если вы сделаете копание, вы увидите несколько записей, но если вы сделаете пинг, вы всегда получите тот же адрес.
На сайте первая часть вашего оборудования - обратный прокси-сервер или пул балансировки нагрузки. Пулы настроены так, что все машины отвечают на один и тот же IP-адрес, но возвращают новый IP-адрес в заголовке сеанса. Все дальнейшие запросы будут проходить через один и тот же узел.
Балансировщики нагрузки, используемые для крупных сайтов, - это не большие дорогостоящие единицы оборудования, это обычные серверы, работающие на LVS. http://www.linuxvirtualserver.org/
источник
Массивные сайты, такие как Google, почти наверняка разработают свое собственное оборудование. Большие сайты, вероятно, будут использовать многоуровневый коммутатор для балансировки нагрузки подключений к нескольким реальным серверам. http://en.wikipedia.org/wiki/Multilayer_switch
источник