Брэндированный DNS или white labeling на Amazon Route 53

    Управление виртуальным хостингом — это сложная, но интересная в реализации задача, которая постоянно сопряжена с различными трудностями.

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

    Поэтому я хотел бы поделиться историей успеха одного из наших клиентов, демонстрирующей, как можно использовать Amazon Route 53 в виртуальном хостинге.


    Любой нормальный хостер предоставляет свои NS сервера для обслуживания клиентских доменов. Более того, очень желательно их реально использовать — в будущем это облегчит миграцию клиентских сайтов с сервера на сервер или восстановление из бэкапа. В этом случае хостеру не нужно участие клиента, чтобы установить новые IP для домена, поэтому в случае работ по обслуживанию или аварии сайты заработают на новом месте с минимальным простоем или вообще без него.
    Обычно NS сервера выглядят следующим образом:
    • ns1.awesome-hoster.com
    • ns2.awesome-hoster.com

    Если вы решили использовать сервис Amazon Route 53 в качестве хостинга DNS, то вы быстро заметите, что по умолчанию он предоставляет отдельный набор NS серверов для каждого домена:
    • ns-XXXX.awsdns-XX.org
    • ns-XXXX.awsdns-XX.co.uk
    • ns-XXXX.awsdns-XX.com
    • ns-XXXX.awsdns-XX.net

    Вот как это выглядит из панели Route 53:


    Как видно в секции под названием “Hosted Zone Details”, расположенной справа на скриншоте, сервера имен имеют адреса типа «ns-1072.awsdns-06.org». Это означает, что DNS не начнет свою работу до тех пор, пока эти адреса не будут указаны у регистратора этого доменного имени.

    Как же получить один набор NS серверов для всех, да еще и white-label? Переключать домены по одному явно не вариант.

    Выход есть — Route 53 API позволяет создать «reusable delegation set» или, если по-русски, переиспользуемый набор NS серверов. Интересно, что данный функционал не доступен из самой панели Route 53.

    Однако, даже в этом случае новый набор серверов имеет все тот же “страшный” вид:
    • ns-XXXX.awsdns-XX.org
    • ns-XXXX.awsdns-XX.co.uk
    • ns-XXXX.awsdns-XX.com
    • ns-XXXX.awsdns-XX.net

    На самом деле, ничего страшного в этом нет. Идея заключается в том, чтобы создать все доменные зоны с одним набором серверов имен, и в качестве IP-адресов для ns1.awesome-hoster.com и ns2.awesome-hoster.com указать амазоновские IP-адреса серверов имен. Да-да, IP тех самых ns-XXXX.awsdns-XX.org и ns-XXXX.awsdns-XX.co.uk, как пример.

    Если вы пользуетесь контрольной панелью Plesk, то мы рекомендуем использовать наше расширение для интеграции c Route 53. Данное расширение автоматизирует создание доменных зон в Route 53 и поддерживает «reusable delegation set».

    Расширение устанавливается в один клик из каталога в самом Plesk’e («Расширения» в главном меню и затем “Каталог расширений”).


    Следуйте инструкциям расширения, чтобы получить пару секретных ключей на портале Amazon и включить синхронизацию. Каждый домен, созданный в Plesk, тут же получит доменную зону в Route 53.

    Давайте вернемся к «reusable delegation set» и посмотрим на функционал, который дает нам расширение для управления этими наборами. С помощью расширения вы можете создать новый переиспользуемый набор серверов имен или сделать таким один из существующих наборов. Чтобы сделать это, необходимо открыть расширение, перейти во вкладку «Reusable Delegation Sets» и выбрать «Create Delegation Set». В результате появится новый набор из 4 серверов имен, который мы будем использовать по умолчанию.


    Теперь все новые доменные зоны, созданные в Plesk, будут использовать один и тот же набор серверов имен. Стоит отметить, что Route 53 накладывает ограничение, не позволяющее изменить сервера имен в уже существующих зонах. Для изменения набора придется пересоздать каждую зону, с указанием правильного набора, а это та еще задача. Интерфейс панели Route 53 всеми способами препятствует удалению зоны: необходимо сначала удалить из нее все ресурсные записи, кроме NS, и только после этого можно удалить зону.

    В своем расширении мы предлагаем инструменты для групповых операций (на вкладке “Mass Management”), которые позволяют в один клик удалять и создать заново в Route 53 все доменные зоны, зарегистрированные в Plesk, без сложностей, присущих панели Route 53.


    Когда синхронизированные зоны будут содержать единый набор серверов, можно переключить A записи ns1.awesome-hoster.com и ns2.awesome-hoster.com на IP-адреса соответствующих серверов из набора (достаточно выбрать 2 из них). Нужно отметить, что запись CNAME в данном случае не будет работать по соображениям безопасности.

    Чтобы удостовериться в правильности настройки, мы можем воспользоваться command line утилитой dig или онлайн сервисом от Google.

    Следует учитывать следующие ограничения, которые накладывает на нас Route 53:
    • Субдомены не должны иметь отдельной зоны: по умолчанию Plesk создает A запись с именем субдомена в зоне родителя, однако делегирование субдомена в отдельной зоне закончится ошибкой: “A conflicting domain is already associated with the given VPC or Delegation Set”.
    • По умолчанию, максимальное количество зон, использующих один набор серверов — 100. Это число может быть увеличено по запросу.
    • Общее количество зон ограничено до 500, но также может быть увеличено.

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

    Нам было бы интересно узнать опыт других пользователей Amazon Route 53. Ждем ваших комментариев!
    Plesk
    Plesk – панель управления хостингом

    Комментарии 3

      0
      Есть ли уверенность, что Амазон не изменит записи ns-XXXX.awsdns-XX.org? В этом случае зоны, в которых указаны «white-labeled» адреса, перестанут работать.
        +2
        В своей документации Амазон также предлагает использовать IP адреса, с вот таким комментарием:
        We rarely change the IP addresses of name servers; if we need to change IP addresses, we'll notify you in advance.
        0
        Спасибо, не знал об этом расширении. Очень полезная штука.

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

        Самое читаемое