Xpoint
   [напомнить пароль]

Как устроена маршрутизация в CDN? GeoDNS и другие варианты

Метки: [без меток]
2012-06-20 21:03:15 [обр] neokoder[досье]

Привет, коллеги.

Вот к примеру Google наверняка имеет огромное кол-во серверов. Но DNS-записи для Google выдают только несколько IP серверов.

Узнал что есть такая штука как GeoDNS. Принцип понятен, но не понятно как это технически организовано, как работает маршрутизация. Может кто-то объяснить подробнее?
Вот к примеру у меня есть домен, зарегистрированный у одного из наших регистраторов. Мне для Geo DNS необходимо поднять свой BIND на паре серверов или что-то подобное с модулем Geo DNS, далее указать у регистратора в качестве DNS-серверов для домена 2 своих DNS-сервера.
Теперь как это будет работать? К примеру есть 2 провайдера — один в России, другой в Европе. Эти провайдеры имеют свои DNS-сервера, так вот когда идёт первый запрос от пользователей то эти сервера(на мой взгляд) будут обращаться не к моему NS-серверу, а к промежуточному или напрямую к корневому зоны .RU, который уже с моих серверов получает информацию о DNS-зоне моего домена. Т.е DNS-cервера провайдеров не обращаются напрямую к моим DNS-серверам(в этом случае у меня не будет возможности отфильтровать пользователей по IP) или я не понимаю как устроена DNS-система в принципе(в таком случае был бы благодарен за разъяснения).

Может быть есть ещё какие-то способы организации CDN кроме GEO DNS?

p.s. на данный момент у меня нет задачи реализовать CDN, но в связи с реализацией некоторого проекта мне необходимо знать как технически функционирует CDN, в частности маршрутизация в CDN.

спустя 53 минуты [обр] neokoder[досье]
Блин, наверное я ошибся в том плане, что локальный DNS-сервер провайдера не может обратиться напрямую к моим DNS-серверам. Может, это в общем NS-запись.
спустя 12 минут [обр] neokoder[досье]
Тогда у меня такой уточняющий вопрос: по какому принципу работает DNS-сервер провайдера?
Т.е. он запросив записи NS всегда ли будет обращаться напрямую к моим DNS-Серверам или же он может запросить данные у вышестоящего DNS-сервера, т.е. в любом случае уже появляться некий посредник и где будет(из какой страны) финальный DNS-сервер, который непосредственно запросит данные с моих DNS-серверов точно неизвестно. Это может нарушить весь принцип GEO DNS Targetting.
спустя 1 час 28 минут [обр] Jared(3/26)[досье]
neokoder[досье], провайдеры, насколько я понимаю, используют кеширующие ДНС сервера, которые самостоятельно производят рекурсивные запросы. То есть, ip адрес вашего клиента, производящего в конечном счете запрос к вашему ДНС серверу находится в диапазоне адресов провайдера. Таким образом, со своего ДНС сервера, поддерживающего вашу зону, вы можете отдавать разные адреса, в зависимости от адреса клиента.
Статья о настройке бинда подобным образом:
http://backreference.org/2010/02/01/geolocation-aware-dns-with-bind/
спустя 2 часа 30 минут [обр] Евгений Седов aka KPbIC(7/176)[досье]

Когда кэширующий DNS-сервер получает рекурсивный запрос, то он его содержание не меняет. То есть, если запрашивается адресная запись (RR-запись типа A), то он спрашивает у корневого сервера "не знаете ли вы адрес домена example.org?". Вероятность, что корневой сервер в своем кэше хранит такую запись близка нулю. Тогда, корневой сервер отдает максимально полезную запись. Вероятней всего, это будет запись DNS-сервера домена первого уровня. Процесс повторяется, но уже с DNS-сервером зоны первого уровня. Эта машина тоже ничего не знает о A-записи, если только админ не заходил с нее на ваш сайт. Теперь ваш сервер получит NS-запись для целевого домена.

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

спустя 13 часов [обр] neokoder[досье]
Вероятность, что корневой сервер в своем кэше хранит такую запись близка нулю

Вот это не понял, можно подробнее. Почему к примеру корневой сервер DNS не может хранить в кеше запись типа A?
В этом случае в принципе GEO DNS таргетинг по странам будет продолжать работать(поскольку корневой сервер скорее всего из той же страны), а вот таргетинг по регионам уже нет.

И как быть к примеру когда используются public DNS или более общий случай когда человек находясь в одной стране, использует DNS-Сервера из другой?
То что кешируются NS-записи, в этом никаких проблем нет, а вот если сервер DNS-провайдера вместо того чтобы получить самому NS-запись для домена и сделать запрос непосредственно к DNS-серверам, поддерживающим зону начнёт использовать посредников - вышестоящие DNS-сервера для получения A-записей или MX-записи, то уже система Geo DNS не будет работать точно.

Поэтому хочу спросить: а какие ещё способы разделения ресурсов(серверов для клиентов) существуют в CDN помимо Geo DNS? Как можно направить клиента в Европе на один сервер, а в России на другой?
Или к примеру разделение не по географическому признаку, а разделение с целью распределения нагрузки (но не с помощью Geo DNS). Какие ещё существуют способы?

спустя 4 часа 48 минут [обр] Евгений Седов aka KPbIC(7/176)[досье]
Как я уже говорил, нагруженным серверам не позволяют отвечать на рекурсивные запросы. То есть, они не берут на себя работу по полному разрешению имени. Соответственно, в их кэше (если это, вообще, можно назвать "кэшом") хранится информация только о зонах, для которых они обладают авторитетом.
Powered by POEM™ Engine Copyright © 2002-2005