Я понимаю, что DNS преобразует имя URL в IP-адрес, но я не понимаю, как DNS использует IP-адрес ОДНОГО конкретного сервера, когда на некоторых веб-сайтах, таких как Google, есть центры обработки данных с более чем 200 000 серверов?
3 ответа
То, что вы описываете, называется DNS балансировки нагрузки. Существуют различные типы балансировщиков нагрузки, самый простой - это балансировка нагрузки Round Robin. Эта ссылка имеет хорошее объяснение Round Robin DNS. Этот метод часто используется, когда у вас большие нагрузки и / или интенсивный трафик, который один сервер и / или сеть не может обработать самостоятельно.
Циклическая балансировка нагрузки является одним из самых простых методов распределения клиентских запросов по группе серверов. Спускаясь вниз по списку серверов в группе, подсистема балансировки нагрузки циклически пересылает клиентский запрос каждому серверу по очереди. Когда он достигает конца списка, балансировщик нагрузки возвращается в исходное состояние и снова спускается по списку (отправляет следующий запрос первому перечисленному серверу, следующий после этого - второму серверу и т.д.).
Основное преимущество балансировки нагрузки в циклическом режиме состоит в том, что его чрезвычайно просто реализовать. Однако это не всегда приводит к наиболее точному или эффективному распределению трафика, поскольку многие балансировщики нагрузки циклического перебора предполагают, что все серверы одинаковы: в настоящее время работают, в настоящее время обрабатывают одинаковую нагрузку и имеют одинаковую емкость хранилища и вычислительные мощности. Следующие варианты алгоритма циклического перебора учитывают дополнительные факторы и могут привести к лучшей балансировке нагрузки:
Взвешенная круговая схема - вес назначается каждому серверу на основе критериев, выбранных администратором сайта; наиболее часто используемый критерий - пропускная способность сервера. Чем выше вес, тем больше доля клиентских запросов, которые получает сервер. Если, например, серверу A назначен вес 3, а серверу B - вес 1, балансировщик нагрузки пересылает 3 запроса серверу A для каждого 1, который он отправляет серверу B.
Динамический циклический перебор - вес назначается каждому серверу динамически, основываясь на данных в режиме реального времени о текущей нагрузке на сервер и пропускной способности.
Есть и другие методы, но я думаю, что это должно дать вам приличное понимание того, что происходит под капотом.
Это не так.
Хотя наш веб-браузер может отправлять несколько запросов на IP-адрес, нет гарантии, что вы используете один и тот же сервер при каждом подключении. В лицо, вероятно, что вы не. Один IP-адрес может быть направлен на разные хосты в зависимости от того, где вы находитесь в топологии сети. Anycasting - это популярный способ объявления одного IP-адреса, который направляется на множество серверов в зависимости от того, какой сервер находится "ближе" в сети. Гораздо проще, пограничные маршрутизаторы, разбросанные по сети, объявляют, что могут достичь IP-адреса ABCD, и ваш провайдер направляет ваш запрос на ближайший маршрутизатор, который затем перенаправляет запрос на хост. Хост за этим IP-адресом, вероятно, будет балансировщиком нагрузки, который будет передавать входящие запросы на ферму серверов. Через преобразование сетевых адресов ответы возвращаются с серверов, выглядящих так, как будто они пришли с того же IP-адреса.
Я понимаю, что DNS преобразует имя URL в IP-адрес, но я не понимаю, как DNS использует IP-адрес ОДНОГО конкретного сервера, когда на некоторых веб-сайтах, таких как Google, есть центры обработки данных с более чем 200 000 серверов?
Лучший способ понять, как один базовый IP-адрес может трансформироваться в более чем 200 000 серверов, - это начать с основ инфраструктуры веб-серверов и развиваться оттуда.
Простой сервер, размещенный на одном IP-адресе.
Во-первых, на базовом веб-сервере имя хоста в URL-адресе преобразуется в один IP-адрес. Это самое основное, что может сделать любой человек перед компьютером. Черт возьми, я нахожусь на Mac OS X, и он имеет встроенный общий доступ к сети, поэтому, если я включу, что мой рабочий стол технически станет веб-сервером. Поэтому, если бы у меня был веб-сайт, размещенный у интернет-провайдера, у меня мог бы быть эквивалент - общий или выделенный веб-сервер - который подключен к одному IP-адресу.
Но что произойдет, если этот веб-сервер станет популярным? Мне может понадобиться балансировка нагрузки веб-сервера.
Сервер с балансировкой нагрузки, размещенный на одном IP-адресе, но с двумя или более серверами.
Итак, если у простого веб-сервера есть один IP-адрес, то веб-сервер с балансировкой нагрузки становится немного сложнее. Базовый веб-сервер балансировки нагрузки состоит как минимум из трех отдельных серверов; балансировщик нагрузки и по крайней мере два веб-сервера, которые синхронизируются друг с другом за кулисами.
Веб-сервер балансировки нагрузки имеет один внешний IP-адрес на балансировщике нагрузки. Это то, к чему будет обращаться имя хоста, когда кто-то обращается к нему из внешнего мира. Но за кулисами есть по крайней мере два веб-сервера, синхронизированных друг с другом, подключенных к этим балансировщикам нагрузки.
Преимущество такого рода настройки заключается в том, что «нагрузка» на трафик буквально «балансируется» между двумя или более серверами. Главный балансировщик нагрузки следит за тем, какой сервер за кулисами может доставить контент быстрее всего, и использует этот сервер для доставки фактического контента вам. Таким образом, хотя стандартный веб-сервер с одним IP-адресом будет работать под нагрузкой, балансировщик нагрузки позволяет лучше управлять загрузкой трафика. Таким образом, более высокая доступность безотказной работы обеспечивается настройкой балансировки нагрузки.
Но базовый балансировщик нагрузки по-прежнему основан на одном IP-адресе в одном физическом местоположении. Что делать, если ваш сайт популярен во всем мире? Тогда, возможно, вариант CDN (Content Delivery Network) поможет ускорить процесс?
Добавление CDN (Content Delivery Network) в смесь.
Таким образом, на многих веб-сайтах статические ресурсы, такие как изображения, файлы CSS (каскадные таблицы стилей) и JavaScript, - это то, что поглощает тонны пропускной способности сервера. Поэтому многие владельцы веб-сайтов предпочитают использовать CDN (сеть доставки контента) для доставки статических ресурсов конечным пользователям.
CDN, как правило, представляет собой глобально распределенную сеть серверов доставки контента, которая доставляет контент пользователям в зависимости от географического местоположения. Принцип работы CDN заключается в том, что вы загружаете контент на один сервер - он же «узел» - в одном месте, и за кулисами CDN копирует контент в другие узлы CDN по всему миру. Благодаря этому контент размещается на серверах, которые географически ближе к конечным пользователям, чем если бы эти же ресурсы просто находились на одном статическом веб-сервере.
Допустим, ваш основной веб-сайт находится в Северной Америке, а посетитель, посещающий веб-сайт, находится в Германии. На традиционном веб-сайте этот пользователь в Германии должен будет получить весь контент с вашего сервера в Северной Америке. Но если вы разделите контент между основным веб-сервером для основного контента и CDN для статических ресурсов, то доставка контента конечному пользователю ускорится, поскольку основное содержимое будет поступать с веб-сервера в Северной Америке, но статические ресурсы будут доставляться через Узел CDN в Германии для пользователя в Германии.
Таким образом, с помощью балансировщика нагрузки у веб-сайта может быть один IP-адрес, но более одного веб-сервера, предоставляющего контент за сценой. А добавление CDN за кулисами теперь может добавить десятки, если не тысячи, других серверов, доставляющих контент за кулисы.
Уже сейчас вы должны получить представление о том, как один единственный IP-адрес может транслироваться на десятки серверов за кулисами.
Другие вещи.
Другие ответы более подробно рассказывают о схемах циклического перебора DNS. Но реальность сводится к следующему: один IP-адрес не обязательно означает, что один сервер находится за кадром. И один IP-адрес на самом деле может быть не реальным веб-сервером, а, скорее, проводником к другому серверу. В настоящее время существует множество способов разработать сетевую архитектуру для «распространения работы» на другие серверы в других местах.
Черт возьми, если у вас есть сервер базы данных, подключенный к сайту за кулисами, угадайте, что? Вам не нужно размещать этот сервер базы данных на том же самом веб-сервере, что и веб-приложение. Просто разделите базу данных на отдельный сервер базы данных. А после этого вы можете даже распределить базу данных по нескольким серверам баз данных.
Это означает, что в отличной схеме есть много разных способов формирования современной инфраструктуры веб-сервера для ускорения доступа и распределения нагрузки между несколькими компьютерами в разных местах.