Що таке апаратне прослуховування у IP-адресі Facebook чи Wikipedia?


32

Я намагаюся зрозуміти, як працюють масові сайти, такі як 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-адреси. Однак я не можу сказати, чи це якась передача в дії, чи зовсім інша техніка.

Назад до мого початкового запитання: наскільки я можу сказати, навіть на великому сайті з’явиться одна дорога частина апаратного забезпечення балансування навантаження на своїх кількох публічних IP-адресах.


Чудові питання, дуже погано, що більшість людей цього не розуміють. Сподіваюся, хтось матиме відповідь з деякими подробицями. Можливо, близько 50 мільйонів доларів Cisco з квантовими обчислювачами навантажувачем навантаження.
ОліверС

Відповіді:


9

Це не обов'язково це обладнання, а ціла система, розроблена для масштабування. Це не лише охоплює апаратне забезпечення, але ще важливіше дизайн додатків, дизайн бази даних (реляційний чи іншим способом), мережа, зберігання даних та те, як вони всі поєднуються.

Хороша відправна точка для вашої цікавості, дізнавшись, як деякі з великих масштабів сайтів є Висока масштабованість - Почніть тут і Висока масштабованість у архітектурі Вікімедіа , Facebook та Twitter як приклади.

Що стосується Вашого запитання щодо DNS та єдиних IP-адрес та кругового доступу, ці сайти часто використовують балансування навантаження як метод представлення єдиної IP-адреси. Це можна зробити за допомогою спеціалізованих апаратних балансирів завантаження або через програмне забезпечення, що працює на серверах загального призначення. Потім вхідні запити до ІР, якими керує балансир навантаження, розподіляються на декілька серверів прозоро до кінцевого користувача.

Щоб отримати чітке пояснення з цієї теми, включаючи порівняння апаратних та програмних балансирів навантажень / проксі, а також їх порівняння з DNS-круглої роботою, прочитайте веб-додатки для балансування завантаження .


Спасибі, Сім. Я прочитав більшість цих статей, перш ніж ставити запитання, але не знайшов конкретної відповіді. Отже, чи дійсно є єдиний апарат балансування навантаження (або одна машина, що працює з програмним забезпеченням для балансування навантаження), яка потрапляє кожного разу, коли хтось переглядає сторінку Вікіпедії? Або є десь інший трюк, щоб уникнути вузького місця?
Ігор Островський

Я не впевнений, чим зараз займається Вікіпедія, але ця стаття з 2008 року розповідає про них за допомогою серії зворотних проксі-серверів кальмарів blogs.sun.com/WebScale/entry/scaling_wikipedia_with_lamp_7
Сім

2
Є також будь-які адреси, за якими ви вводите одну ip-адресу, але вони розподіляються (випадковим чином \ довільно \ навмисно) до однієї з низки "реальних" кінцевих точок. Я не впевнений, що Wikipedia \ Google використовує це, але я впевнений, що деякі кореневі сервери DNS роблять. Мої пінги у Вікіпедії відповідають вашим (а я в Ірландії), тому я підозрюю, що вони можуть використовувати це.
Гельвік

1
Anycast використовується в запиті DNS для отримання найближчої до вас IP-адреси - тоді балансир завантаження прослуховує цю IP-адресу та розподіляє запити на резервні сервери.
Енді Шелам

2
У Вікіпедії також трапляється використовувати велику частину геоінформації pdns для більшої частини балансування навантаження. Більше інформації тут: wikitech.wikimedia.org/view/PowerDNS і тут: wikitech.wikimedia.org/view/DNS
faultyserver

3

Anycast може також використовуватися для TCP-з'єднань, якщо припустити, що з'єднання нетривалі, тому маршрути не змінюються протягом життя з'єднання. Це гарне припущення щодо HTTP-з'єднань (особливо, якщо З'єднання: 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/


3

Найпростіший спосіб перевірити, чи використовується IP-адреса Anycast, - це зробити трасування з іншого місця розташування. Ви можете спробувати наступне: перейдіть на traceroute.org, оберіть місцеположення та спробуйте зробити трасування до IP-адреси 8.8.8.8 (Google Public DNS, що використовує anycast). Ви повинні мати можливість бачити цю траєкторію від сервера в Австралії до 8.8.8.8 перебування в Австралії.

Замість ping спробуйте виконати пошук імені хоста: наприклад: http://network-tools.com/default.asp?prog=dnsrec&host=profile.ak.fbcdn.net

Ви побачите список IP-адреси за цим іменем. Ці IP-адреси будуть використовуватися в круговій формі під час пінг-сервера.



2

Ігоре, ваше запитання чудове, і, як і безліч невинних питань, є багато, багато відповідей, і все на різних рівнях деталей.

Частина обладнання - це веб-сервер. Очевидно ;-)

Цей апарат є насправді кластером балансирів навантаження, всі вони налаштовані на витяг із спільного сховища, так що всі вони однаково налаштовані з однаковим матеріалом.

Апаратне обладнання - це фактично одна з декількох кластерних балансирів навантажень, які географічно розігнані, і вас направили до самого найближчого до вас рішення, прийнятого сервером DNS.


1

У минулому році Google випустив трохи їх домашньої апаратної архітектури, і це дозволяє добре прочитати .


Це цікаве прочитання, але воно не відповідає моєму конкретному питанню. Мені особливо цікаво, що таке обладнання, яке слухає чотири загальнодоступні IP-адреси Google і розподіляє навантаження серед тисяч серверів?
Ігор Островський

1

Одна IP-адреса не обов'язково означає один сервер: http://en.wikipedia.org/wiki/Anycast


1
Anycast - це складне налаштування, якщо у вас є центральна синхронізація (наприклад, Facebook). Це дуже добре працює, наприклад, DNS-сервери, де екземпляри не потребують великого зв'язку, або веб-сервери зі статичним вмістом.

1
Ви маєте рацію в тому, що один IP не означає один сервер, але anycast використовується в запиті DNS, коли вас не турбує хто відповідає, поки ви отримаєте його, а значить, корисний лише протокол UDP, який DNS використовує. За допомогою TCP (використовується в HTTP), ви повинні бути впевнені, що сервер, який відповідає, це той, про який ви спеціально запитали.
Енді Шелам

@AndyShellam, статті en.wikipedia.org/wiki/Anycast#Details nanog.org/meetings/nanog37/presentations/matt.levine.pdf, здається, не згодні з вами ...
Pacerier

1

Більші сайти використовують разом кілька різних методик. Ці веб-сайти, про які ви згадали, мають майже у всіх країнах кілька серверів. На основі IP-адреси відвідувача веб-сайту сервер DNS повертає IP-адресу кластеру, найближчого до відвідувача. Akamai надає таку послугу (натисніть на малюнок на цьому веб-сайті для отримання додаткової інформації.)

Ці "кластери" у цьому центрі обробки даних тепер складаються з декількох різних машин (сервер БД, веб-сервер, балансир завантаження тощо). Залежно від того, що ви надаєте своєму веб-сайту, у вас, можливо, є кілька серверів для статичного вмісту тощо.


1

Масажні сайти, такі як Facebook або Wikipedia, для досягнення масштабованості покладаються на кілька різних технологій.

Однією з таких технологій є dns. Dns виконаний з можливістю завантаження балансу круглим роботом. Конфігурація dns досить розумна, щоб зрозуміти, звідки надходить ваш запит, і повернути адресу найближчого до вас сайту. Тож якщо ви робите копання, ви побачите кілька записів, але якщо зробите пінг, ви завжди отримаєте ту саму адресу.

На сайті перша частина обладнання, яке ви потрапили, - це зворотний проксі-сервер або пул балансира навантаження. Пули налаштовані, тому всі машини відповідають на один і той же IP, але повертають новий IP в заголовку сесії. Усі подальші запити будуть проходити через той самий вузол.

Балансири навантажень, які використовуються для великих майданчиків, не є великими дорогими одиницями обладнання, вони є товарними серверами, на яких працює LVS. http://www.linuxvirtualserver.org/


0

Масивні сайти, такі як Google, майже напевно розробляють власне обладнання. Великі сайти, ймовірно, використовують багатошаровий комутатор для завантаження балансових з'єднань на декілька фактичних серверів. http://en.wikipedia.org/wiki/Multilayer_switch

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.