Наши проекты: DNS хостинг с блекджеком и плюшками

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

    Предыстория


    Все началось с того, что год назад мы задумались о повышении надежности нашей системы и для общего процесса оптимизации потребовалось, чтобы наш DNS хостинг поддерживал достаточно низкий TTL, скажем 5 минут. К сожалению, ResellerClub, где зарегистрированы наши домены и держится DNS зона, не дает такой возможности. В поисках альтернативы стало понятно, что с помощью системы доменных имен можно не только балансировать трафик между серверами, но и, например, фильтровать его во время DDoS-атаки. В прошлом году мы провели анализ предложений и даже опубликовали результат наших исследований и проверок на Хабре.

    В процессе изучения рынка пришло понимание, того что по факту существует 2 типа предложений: простейший вариант DNS хостинга за адекватную цену (1-3 доллара в месяц) и DNS хостинг с массой дополнительных возможностей вроде гео-таргетинга, но по достаточно высоким ценам. Также существует вариант простенького хостинга по большим ценам, но его, по понятным причинам, мы не рассматривали. Вот чего не нашли — так это DNS хостинга, предлагающего все возможности и по адекватной цене. Поэтому мы решили создать велосипед такой проект самостоятельно.



    Анализ


    К разработке проекта мы подошли серьезно и начали с более детального анализа конкуренции. Основная масса предложений сводилась к пакету (1 домен + до 100 записей + до миллиона запросов) за 1-3 доллара в месяц. С технической стороны в большинстве вариантов предлагается поддержка популярных типов записей, обычный Round-robin, минимальный TTL в районе 1-5 минут. Количество серверов, обслуживающих конкурентные платформы, варьируется от 1 до 15 (за исключением Route 53 от Амазон).

    Аналогичная услуга, но уже с поддержкой гео-таргетинга, продвинутой балансировкой, API и другими приятностями стоит уже намного дороже и, например у dyndns, начинается с 195 долларов. Посчитав себестоимость некоего пакета, мы пришли к выводу, что такой же набор услуг в пакете (1 домен + 100 записей + 1 миллионов запросов) мы можем предлагать всего за 2 доллара.

    Как же свершить это чудо?

    Техника


    Конечно же, демпингом мы заниматься не собираемся, равно как и работать себе в убыток. Для предоставления нужного уровня услуг в рамках заявленной стоимости необходимо было выбрать правильную технологическую платформу, и наш выбор пал на те технологии, которые мы в последнее время все больше внедряем в собственные проекты. Для хранения данных мы выбрали NoSQL-решение CouchDB, что попутно позволило нам решить еще и проблему репликации DNS серверов. Так как «master-master» репликация уже реализована на уровне CouchDB, то каждый DNS сервер мог работать автономно как master, ничего не зная о других серверах. Кроме всего прочего, это решение повышает общую стабильность системы, так как исключает отношения «master-slave» на уровне DNS, что означает отсутствие проблем, которые возникают при падении мастера. В нашей архитектуре все сервера являются мастерами, и платформа работает, пока доступен хотя бы один из них.

    Собственно, выбором CouchDB в роли базы данных и обусловлено название самого проекта couchness.com.

    По традиции последних лет, сайт писали на Django, используя внутреннюю библиотеку одного из наших разработчиков для работы с CouchDB.

    В роли DNS сервера попробовали несколько вариантов, написав ко всем привязку к нашей базе на CouchDB, но в итоге остановились на PowerDNS, как на наиболее оптимальном варианте.

    От анализа и написания ТЗ до завершения проекта прошло немало времени, но на данный момент основная часть функционала уже реализована и идет активная работа над оставшимися задачами. На данный момент проект запущен и поддерживает следующие возможности:
    1. поддержка IDN, IPv6, ряда популярных типов записей.
    2. Round-robin и балансировку нагрузки (по факту Round-robin с возможностью указать «вес» отдельной записи).
    3. 5 нод, количество которых будет расти постоянно по мере роста проекта. Наша цель — довести их количество до нескольких десятков, что, учитывая архитектуру платформы, лишь улучшает ее стабильность.
    4. поддержка русского языка и русских платежных систем — для тех, кто никогда не мог воспользоваться западными решениями по причине отсутствия PayPal/кредитки.
    5. TTL от одной секунды (меньше просто нельзя).

    В разработке


    1. API, уже совсем скоро.
    2. Гео-таргетинг (направление пользователей на разные сервера в зависимости от их местоположения) — очень полезное решения для поставщиков услуг CDN.
    3. Гео-таргетинг NS серверов. С ростом нод в нашем сервере можно будет прописать не только ns1 и ns2, но и msk.ru.ns1 и msk.ru.ns2, что даст значительное ускорение в DNS запросах для тех пользователей, которые находятся «близко» к этим нодам. Актуально для тех, чья основная аудитория находится в одной стране/городе.
    4. Система версий DNS зон с возможностью «отката» к любой версии и просмотра изменений.
    5. Экспорт/импорт DNS зон.
    и многое другое, о чем пока писать не будем — надо же сохранить интригу…

    Что же полезного можно сделать с такими возможностями?


    1. Балансировка нагрузки между серверами, но не просто равномерная, как в Round-robin, а с учетом ресурсов каждого сервера. Работает для всех типов записей (а не только для SRV).

    2. Защита от DDoS-атак с использованием гео-таргетинга и API, благодаря чему вы сможете в режиме реального времени добавлять условия для блоков и даже для отдельных IP, предлагая им пройти на 127.0.0.1 вместо IP вашего сервера. Потребуется выставить низкий TTL и актуально только если атака идет по домену, но может реально помочь в снижении нагрузки в таком случае.

    3. Используя тот же API, можно динамично менять настройки в DNS зоне, полностью убирая отдельные записи или меняя их «вес» при балансировке. При низком TTL это будет давать практически моментальный эффект, снимая или понижая траффик с проблемного сервера.

    Хоть на данный момент не все возможности доступны для широкой публики, основной функционал работает отлично, и мы приглашаем всех желающих попробовать новый сервис. Для облегчения этой задачи мы раздаем 5$ ваучеры всем желающим, а этого, учитывая нашу ценовую политику, хватит на пару месяцев использования. Для получения ваучера достаточно написать в ЛС или подружиться со страницей проекта в Facebook (http://www.facebook.com/couchness).

    Заранее благодарим за любые конструктивные замечания, идеи и поправки относительно проекта.
    SmsCoin
    Компания

    Похожие публикации

    Реклама
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее

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

      +1
      couchness.com/ru/
      поддержка IPv6


      $ host ns1.couchness.com
      ns1.couchness.com has address 213.183.59.136
      ns1.couchness.com has address 178.63.65.11

      $ host ns2.couchness.com
      ns2.couchness.com has address 31.131.16.199
      ns2.couchness.com has address 174.37.197.95
      ns2.couchness.com has address 195.62.52.69

      И где???

      Если скажете, что у меня что-то не настроено:

      $ host silverghost.org.ua
      silverghost.org.ua has address 109.254.25.23
      silverghost.org.ua has IPv6 address 2001:470:b572::1

      Я ослеп и не вижу IPv6?
      Или Вы только AAAA поддерживаете? Так это не поддержка IPv6, а только поддержка АААА типа записей и не больше.

      Я не прав?
        0
        Поскольку уже был тут один «хостер», то во избежание:
        image
          +5
          Да, всё так. Нестыковка вышла между копирайтерами и реалиями :)

          На данный момент мы добавили ipv6 на одной из нод, в ближайшие дни появятся на остальных нодах, благо это не проблема.
            +2
            Вот, это уже дело:

            $ host ns1.couchness.com
            ns1.couchness.com has address 213.183.59.136
            ns1.couchness.com has address 178.63.65.11
            ns1.couchness.com has IPv6 address 2a01:4f8:121:302::2

            Хорошая реакция… Молодцы. :)
              +2
              Это потому что TTL маленький ;-)
                +1
                главное не меритесь TTL
          +2
          Не уверен что у вас приемлимая цена для только-что открытого хостинга. Я ориентируюсь по nic.ru. У них стоимость primary-DNS 620 рублей в год. Это в районе $1.8 в месяц. За счет каких сервисов или особенностей у вас стоимость выше чем у них?
            +2
            За счет того, что здесь ещё и Secondary и куча плюшек? Вообще же некорректно ориентироваться на nic.ru в данном вопросе, они динозавры.
              0
              Ну это смотря с какой стороны смотреть. В данном случае «динозавры» — положительная характеристика. Они стабильны, давно работают и поддержка клиентов давно отработано. Вот что может предложить этот сервис что-бы все это перевесить? Я не издеваюсь, я действительно хочу узнать. Может я просто чего-то не понимаю в современном DNS хостинге?
                0
                Вместо них можно спокойно поехать на ПДД Яндекса (там ТП и то шустрее).
                А 2 физических сервера, стоящих в одном ДЦ, назвать DNS-хостингом сложновато.
                  +1
                  вопрос приблизительно формата «зачем платный хостинг, если есть бесплатный», в том числе и ДНС хостинг. В принципе, незачем, если все устраивает. Но когда хочется чего-то большего, то здесь и начинается проблема.

                  Наша цель предоставить уровень enterprise по обычной цене и пока не видим никакой причины чтобы это не реализовать.

                  Теперь есть выбор:
                  1. обычный набор услуг, бесплатно
                  2. обычный набор услуг, платно, за адекватную стоимость в 2-3 доллара
                  3. полный комплекс услуг с продвинутыми возможностями, платно, за те же 2 доллара

                  Мы искали и не нашли третий вариант, поэтому создали свой.

                  Так как проект пока на уровне второго варианта, хоть и улучшенного, то даже не берем деньги, раздавая ваучеры на бесплатное использование.
                +3
                Низкий TTL, roundrobin. Для быстрых изменений настроек, типа параметров балансировщика, это бывает очень важно.

                А зубры DNS-хостинга обычно в этом плане отвратительно пашут. Зона расходится часами только между нодами самого хостера, плюс еще кэш из-за большого TTL долго протухает.
                  0
                  Т.е. низкий TTL — это главная фишка этого хостинга? В общем-то штука нужная. Однако, если у вас настолько критичное приложение что оно чувствительно к таким вещам, думаю вам надо ставить свой DNS сервер. Хотя, наличие варинатов, это однозначно хорошо. Тем не менее, все-равно не уверен что такая цена уместна.

                  А вот если будет API (когда оно будет) для быстрого динамического изменения параметров DNS — вот это будет то, что оправдает текущую цену. Если, конечно, она не повыситься к тому времени.
                    +5
                    Собственно, в статье это и написано — нам нужен был низкий TTL, поэтому мы и делали DNS хостинг под себя :)
                    Просто в процессе реализации решили сделать из этого сервис.

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

                      +2
                      По своим предыдущим задачам могу скачать что востребовано будет API изменения веса, например, выдачи IP адресов для домена в round-robin. Кстати, если будете ориентироваться на то, что клиент захочет вместе с вами разрабатывать и отлаживать ваш софт, будте готовы к тому, что он и скидку потребует в лучшем случае. Т.к. он за вас сделает часть вашей работы — постановку задачи. В худшем случае просто не будет связываться.

                      И подумайте, все-таки над тем, что API на самом деле может стать той «изюминкой» которая может помочь вам продвинуться. Низкий TTL — это приятная, но обычная фишка при установке стандартного DNS сервера самостоятельно. А вот API клиент так просто не получит.
                        +1
                        Собственно к скидкам уже готовы, раздаем всем по 5$ на пользование услугами, как возврат получаем фидбек и делаем сервис лучше.

                        TTL — не изюминка сам по себе, хоть если поищите, практически везде есть ограничение, порой крайне высокое. Все предоставляется в комплексе, цена меняться не будет с появлением новых фич, разве что что-то особо сложное можем выделить как отдельную услугу.

                        Рекомендую попробовать, денег не стоит.
                –4
                шлшюками Ж)
                  0
                  основной вопрос — перебрал уже десятки сервисов, но такую замечательную запись как
                  *. IN A 10.10.10.10
                  предложить никто не может. как у вас обстоят дела с подобными записями?

                    +1
                    звездочка работает. странно что у вас были с ней проблемы на других сервисах, «фича» базовая. Пишите в ЛС, получите ваучер, сможете протестировать бесплатно.
                    0
                    Есть ли записи типа RRSIG и другие для поддержки DNSSEC?
                      0
                      DNSSEC пока не поддерживается
                      0
                      Есть серьезные сомнения, что ваш сервис действительно полностью совместим с RFC. Могу навскидку привести пару примеров.

                      Пример #1:
                      Запрос к доменному имени, которого нет на вашем сервере приводит к ответу NOERROR, вместо положенного в таких случаях REFUSED, если у вас домена нет или SERVFAIL, если есть но данные в нем недоступны по каким то причинам. Такое поведение чревато проблемами, при переносе DNS зон к вам или от вам.
                      Диагностика:
                      $ dig +norecurse www.example.com. @ns1.couchness.com.
                      
                      ; <<>> DiG 9.6-ESV-R4-P2 <<>> +norecurse www.example.com. @ns1.couchness.com.
                      ;; global options: +cmd
                      ;; Got answer:
                      ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49679
                      ;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
                      
                      ;; QUESTION SECTION:
                      ;www.example.com.               IN      A
                      
                      ;; Query time: 61 msec
                      ;; SERVER: 178.63.65.11#53(178.63.65.11)
                      ;; WHEN: Sun Mar  4 20:08:35 2012
                      ;; MSG SIZE  rcvd: 33
                      


                      Пример #2:
                      Запрос NS к доменному имени отдает ненужные данные SOA в дополнительной секции. К этому большинство резолверов отнесутся толерантно, но все равно как то не красиво.
                      Диагностика:
                      $  dig +norecurse ns couchness.com. @ns1.couchness.com.
                      
                      ; <<>> DiG 9.6-ESV-R4-P2 <<>> +norecurse ns couchness.com. @ns1.couchness.com.
                      ;; global options: +cmd
                      ;; Got answer:
                      ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15646
                      ;; flags: qr aa; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 5
                      
                      ;; QUESTION SECTION:
                      ;couchness.com.                 IN      NS
                      
                      ;; ANSWER SECTION:
                      couchness.com.          600     IN      NS      ns1.couchness.com.
                      couchness.com.          600     IN      NS      ns2.couchness.com.
                      
                      ;; ADDITIONAL SECTION:
                      ns2.couchness.com.      600     IN      A       159.253.141.127
                      ns1.couchness.com.      600     IN      SOA     ns1.couchness.com. admin.couchness.com. 2011101610 86400 7200 36000 172800
                      ns2.couchness.com.      600     IN      SOA     ns1.couchness.com. admin.couchness.com. 2011101610 86400 7200 36000 172800
                      ns1.couchness.com.      600     IN      A       178.63.65.11
                      ns1.couchness.com.      600     IN      A       174.37.204.91
                      
                      ;; Query time: 54 msec
                      ;; SERVER: 178.63.65.11#53(178.63.65.11)
                      ;; WHEN: Sun Mar  4 20:10:25 2012
                      ;; MSG SIZE  rcvd: 193
                      
                        0
                        Еще немного критики: если ваш DNS сервис рассчитан в том числе и на российскую аудиторию, то как вы объясните, что нет ни одного сервера на территории РФ? Это явно не способствует низким задержкам для российских пользователей.
                          0
                          А вы вообще живы? 4-е письмо в саппорт за 10 дней все без ответа. Искать другой сервис?

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

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