Как сделать региональный DNS как CDN?

15

Я полагаю, что этот вопрос можно назвать правильным, как CDN работает на уровне DNS, но реальная проблема у меня заключается в том, что у моей компании есть центры обработки данных на трех континентах, и у нас должны быть europe.example.com us.example.com и asia.example .com

CDN обычно отправляют вас в местный центр обработки данных, который я представляю, в зависимости от вашего IP-адреса. Это должно быть DNS, когда DNS-сервер в США отправляет вас в центр обработки данных в США для того же поиска DNS на example.com?

Я ошибаюсь? Если я ошибаюсь по этому поводу, как бы я сделал это эффективно и, если возможно, без центральных (не DNS) серверов?

Стюарт Робинсон
источник
5
Вы не должны: queue.acm.org/detail.cfm?id=1647302
Этьен

Ответы:

12

Проблема с CDN заключается в том, что они не направляют вас на основе вашего собственного IP-адреса - они направляют вас на основе IP-адреса вашего DNS-сервера ... Это может быть совершенно неправильно. И действительно прочитайте статью ACM Пола Vixie , это удар по деньгам.

В любом случае, если вы уже region.example.comнастроены и работаете, вы можете рассмотреть вопрос о перенаправлении HTTP с example.comсоответствующего веб-сервера на основе IP-адреса клиента.

Это в значительной степени то, что делает Google, это то, как я в конечном итоге google.co.ukнабрал google.com.

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

Альнитак
источник
5

Новые CDN (Cloudflare, MaxCDN, fast.ly) используют anycast как для DNS, так и для реальных контент-серверов. Это несколько лучше, чем пытаться использовать исходный IP-адрес DNS-запроса и постоянно меняющуюся базу данных сопоставлений.

Теоретически использование anycast для DNS и контент-серверов позволяет самой сети находить «самые близкие» серверы к клиенту. На практике это в основном верно, но возникают некоторые странные случаи, когда люди в Сингапуре получат доступ к пограничным серверам в Калифорнии, а не в Гонконге, из-за постоянно меняющихся пиринговых отношений между провайдерами.

Anycast трудно сделать хорошо .

Старые CDN, такие как Akamai и Limelight, обычно используют anycast, чтобы добраться до ближайшего DNS-сервера, но затем используют подход, основанный на догадках на основе IP-адреса. По моему опыту, это не очень хорошо работает, особенно если клиент использует DNS-серверы, которых нет с точки зрения топологии сети. Тем не менее, огромный установленный CDN, такой как Akamai, имеет сотни расположений контент-серверов, поэтому возвращение «достаточно близкого» ответа приводит к достойному взаимодействию с пользователем. Очевидно, что иметь сотни сайтов очень дорого, поэтому ни один из всех anycast CDN не выбрал этот маршрут. Следовательно, они также не взимают так много за в основном эквивалентное обслуживание.

rmalayter
источник
1

Есть несколько способов справиться с этим, но все они сводятся к тому, чтобы выяснить, где находится IP-адрес, и указать его соответствующим образом. Например, вы можете указать диапазон IP-адресов для Северной Америки и один для Европы. Если IP-адрес, запрашивающий информацию (от DNS, вашего веб-сервера, вашего контент-сервера и т. Д.), Попадает в европейский диапазон, то ваши европейские серверы должны получать запросы.

Бен Дум
источник
Бен, что ты имеешь в виду? Вы имеете в виду, что у меня есть DNS-сервер в США и один, например, в Великобритании. Когда я думаю о DNS, я просто устанавливаю свою запись A, и все готово. Как я могу указать эти DNS-серверы на региональной основе?
Стюарт Робинсон
Я полагаю, что он имеет в виду что-то вроде представления в привязке. Вы можете настроить различные представления внутри DNS, которые соответствуют основанным на IP-адресе клиента, который можно приблизительно определить как принадлежащий географическому региону. Существует множество доступных сервисов, с помощью которых вы можете направить запрос в API и получить местоположение. Оглядываясь вкратце, вы можете попробовать hostip.info/dl/index.html для более дешевого варианта.
Greeblesnort
случайно наткнулся на это во время моего вечернего просмотра: blogs.techrepublic.com.com/networking/…
Greeblesnort
@ Stewart - нет, вы не будете запускать один DNS-сервер на регион. Ну, вы могли бы, но это было бы для избыточности, поскольку сама система DNS является привязанной к местоположению. Ответ @ greeblesnort почти так же хорош, как его имя. :-)
Бен Дум
0

Вы можете настроить главную страницу по умолчанию на example.com. В первый раз, когда кто-то посещает, он выбирает регион, в который он хочет попасть. Это так же, как работает www.ups.com.

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

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

Ричард Вест
источник
0

Если у вас есть веб-сайт, размещенный в нескольких регионах, вам не нужно ничего делать на уровне DNS. Вы можете использовать API, например http://ipinfo.io, чтобы получить страну посетителя, а затем перенаправить их на соответствующий URL-адрес.

Если мы не говорим о веб-сайте или каком-либо протоколе, который обрабатывает перенаправления, то есть несколько вариантов на уровне DNS. Вы можете выполнить тот же поиск страны IP и затем вернуть запись, которая соответствует региону (DNS на основе геолокации), или вы можете получить карту задержки между различными сетями и вернуть запись, которая представляет самую низкую задержку для пользователя (задержка) на основе DNS). DNS-сервис Amazon Route53 предлагает оба варианта .

Бен Доулинг
источник