4 October 2011

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

SmsCoin corporate blog
Продолжая серию статей о наших проектах, сделаем скачок и расскажем о нашей последней разработке: проекте 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).

Заранее благодарим за любые конструктивные замечания, идеи и поправки относительно проекта.
Tags:dnssmscoinpowerdnscouchdbcouchnesshost and relax
Hubs: SmsCoin corporate blog
+17
8.3k 21
Comments 24
Top of the last 24 hours