37

Принимая Akamai в качестве CDN. Из того, что я понимаю, когда клиент запрашивает страницу, запрос отправляется на центральный сервер Akamai, который затем, в зависимости от местоположения клиента, получает пограничный сервер Akamai, и последующие запросы от клиента направляются непосредственно на этот пограничный сервер. Мой вопрос таков:

Когда клиент запрашивает веб-сайт (по имени), как только DNS разрешает имя в IP-адрес центрального сервера Akamai и передает его клиенту, клиент будет удерживать этот IP-адрес, тогда как последующие запросы могут перейти непосредственно к IP-адресу пограничных серверов Akamai?

Или это то, что необходимо, чтобы при использовании CDN само разрешение DNS выполнялось сервером CDN?

У крупных компаний, таких как Google, Amazon, Facebook, есть свои собственные серверы CDN, или они полагаются на сторонних поставщиков CDN, таких как Akamai? Скажите, Google и Yahoo! оба используют CDNs Akamai, а затем контент Yahoo! а гугл проживает на одном сервере? Разве это не создает потенциальную проблему безопасности?

6 ответов6

26

Вы не просто размещаете весь сайт с CDN, просто ваш контент.

Я только что понял, что ответил на аналогичный вопрос некоторое время назад: что делает akamaihd.net?

Поток запроса данных Изображение WikiMedia

Так что ваш сайт ссылается на http://akamai/myfile.ext . Это запросит myfile.ext от akamai . akamai может отправить HTTP-перенаправление на фактический контент-сервер.

Теперь, когда этот последний шаг будет кэширован, прекрасно, все будущие запросы будут отправляться на ближайший контент-сервер.

Как это работает?

Давайте предположим, что этот сайт:

<html>
  <body>
    <img src="http://cdn/oliver.png" />
  </body>
</html>

Я запрашиваю этот сайт с моего собственного веб-сервера. Файл .html не размещается в cdn . Не является DNS моего веб-сервера.

Первоначальный запрос

Мой браузер получил этот HTML-файл и теперь анализирует его. Он находит ссылочное изображение и отмечает, что он расположен по адресу http://cdn/oliver.png . Он запрашивает этот файл.

Для этого нужно найти IP-адрес cdn . В нашем примере этот IP-адрес 10.10.10.10 .

С этим IP-адресом он может подключиться к серверу cdn и запросить /oliver.png .

Географическое положение

Теперь cdn понимает:« Этот парень из Германии!». Поэтому вместо того, чтобы отправить мне мою удивительную картинку, которую я хотел, она отправляет мне HTTP-перенаправление:

/oliver.png не здесь. Это на 10.10.33.33/oliver.png

Так что мой браузер попросит 10.10.33.33 (что, я надеюсь, ближе) для картинки.

Шутки в сторону?

Я не говорю, что так работают ВСЕ CDN, но это был бы один подход.

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

Кто управляет CDN?

У большинства глобальных игроков есть своя собственная сеть доставки контента (или я бы так предположил). Некоторые провайдеры просто выгружают определенные сервисы в большие CDN (как Microsoft делает с загрузками MSDN). И это может как-то коснуться вашей второй темы.

Учтите это, в MSDN Microsoft предлагает скачать продукт. Эти загрузки затем предоставляются Akamai. Если вы можете определить URL-адрес этой загрузки, вы можете просто загрузить продукт, даже не связываясь с Microsoft.

Это проблема безопасности? Не совсем, потому что то, что загружается, все еще защищено (ключом продукта).

Но как насчет других данных?

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

11

Довольно распространенный подход к CDN заключается в использовании так называемого « anycast ». Это работает так, что ваши распределенные серверы располагаются вместе с DNS, которые отвечают этим сервером в качестве пункта назначения; например, у вас может быть три сервера в разных хостингах, и все их соответствующие DNS-серверы утверждают, что их IP-адрес является каноническим для вашего сервера (например, назовите его content.example.com). Каждый из DNS настроен на использование одного и того же глобального IP-адреса, и затем все серверные средства используют обновления BGP, чтобы сделать так, чтобы выиграл маршрут к ближайшему серверу - так, когда вы выполняете поиск имени на content.example.com самый быстрый / ближайший / самый доступный DNS отвечает на запрос своим HTTP-сервером.

Таким образом, не нужно никаких хитростей GeoIP, и вы всегда получаете контент с того сервера, который работает быстрее всего - который может иметь или не иметь никакого отношения к его физическому расположению из-за разнородной природы Интернета.

Насколько я понимаю, Akamai хотя бы частично работает таким образом.

5

Также доступны CDN типа Origin Pull.

Amazon Cloudfront может использовать эту технику.

Вы устанавливаете CNAME, например media.example.com, который указывает на назначенное им имя сервера, и оставляете весь свой контент на своем сервере. Для изображений и контента, которые вы хотите доставить через CDN, вы используете media.example.com в URL. Запрос направляется в их серверную сеть, и если контент недоступен, их серверы извлекают контент с вашего сервера. Попав в систему, контент распределяется по серверным фермам, ближайшим к месту, где существует потребность, и остается там для назначенного TTL. Ваш сервер больше не видит трафик в кэшированном контенте, пока не истечет TTL и Cloudfront не будет обновлять его.

1

Akamai не работает таким образом. Различные CDN работают по-разному, но Akamai специально не делает anycast для своих веб-серверов.

Когда пользователь в Нью-Йорке хочет www.acme.com , сервер имен acme.com перенаправляет ("делегаты") на сервер имен Akamai. Сервер имен Akamai видит, где находится машина, задающая вопрос (на основе своего IP-адреса), и возвращает IP-адрес ближайшего / лучшего сервера Akamai для обслуживания www.acme.com .

0

Большое резюме того, как работает CDN Akamai, можно найти здесь

Короче:

  • Серверы CDN имеют запись CNAME, которая указывает на DNS-серверы Akamai.
  • Таким образом, первый запрос, который браузер клиентов делает к серверу CDN, проверяет DNS на DNS-сервере Akamai, который отвечает IP-адресом сервера Akamai, который близок к пользователю (называемый "пограничными серверами")
  • Эти пограничные серверы могут обслуживать статические элементы из локального кэша, если это недавно было запрошено другим пользователем, и даже не нужно возвращаться на ваш сервер, чтобы получить копию ресурса.
  • Недостающие элементы или страницы без кэширования направляются через сеть Akamai на другой пограничный сервер рядом с хостом. Этот пограничный сервер выполняет фактические запросы к узлу хоста и передает их обратно по сети на исходный пограничный сервер, а оттуда они возвращаются конечному пользователю.
  • Поскольку пограничные серверы обмениваются данными внутри системы с использованием собственных протоколов Akamai и маршрутизируют узкие места, трафик может проходить намного быстрее, чем через общедоступный Интернет.

и как упоминалось в сообщении в блоге, указанном выше, некоторые крупные корпорации разрешают DNS, используя свои собственные серверы, что может свести на нет некоторые преимущества использования CDN.

-2

CDN работает на Anycast DNS. Anycast DNS работает на Anycast IP. Anycast ip: один IP назначается на нескольких серверах. Когда пользователь запросит разрешение DNS, этот запрос будет обработан ближайшим сервером и предоставит данные с сервера с минимальной задержкой.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .