?

Log in

No account? Create an account
Про основную работу и проект, над которым я работаю.
я
fox_mulder_cp
Многие из моих друзей и знакомых знают, что последние несколько лет моя работа неразрывно связана с хостингом сайтов, почты и регистрацией доменных имён, а путь от инженера технической поддержки (одного из известных и больших украинских операторов) хостинга до хостмастера состоит из нуля промежуточных пунктов.
Итак, что мы имеем на обычном захудалом хостинге?
Не очень краткое, насыщенное техническими терминами предисловие - почему я это делаю и зачемСвернуть )

Теперь причины, приведшие меня к написанию своего реешения:
1. меня АДСКИ бесит, что всё, что касается конкретного клиента - почта, днс, сайты, и базы данных... Правильно, живут на одном сервере. В случае DoS атаки на одного клиента/сервис - правильно, в 90% вариантов - сервер становится в позу, даже с лимитами, к сожалению.
2. время исправления багов может зависеть и отличаться что у платных, что бесплатных панелей - SQL Injection я уже на горячую фиксил, даже не зная PHP :(
3. Один проксирующий Nginx на хост я понять могу, но перезагружать Apache, когда на хосте несколько тысяч сайтов, и когда два десятка пользователей решило что-то изменить в настройках своих виртуалок одновременно - это уже большое количество времени.
4. Количество говнокода в паре панелек, что я видел, иногда зашкаливает. Чего стоит только свой крон сервис, который дергается из штатного системного крона, но в котором НЕТ проверок на живость базы данных и одновременную загрузку нескольких инстансов себя же. В общем, нужные проверки в код этого "планировщика" я
попросил впилить знакомого.
5. Функционал зачастую "фичаст", но АДОВО перегружен и пугает клиентов "А можно выключить лишнее?"

===================================================
А теперь что я использовал при старте написания своего решения по управлению хостингом приложений и идеи, которые лежат в его основе:

0. Linux как сервер для платформы
1. PostgreSQL как хранилище данных проекта.
2. Ruby on Rails как веб приложение.
3. Resque + Redis для выполнения длительных задач.
4. Ansible как часть системы управления.
5. Nginx как кеширующий прокси сервер.
6. PowerDNS + PG как NS сервер и рекурсор, на котором хранятся внешние и внутренние dns зоны.
7. LXC и Docker как системы управления виртуальными машинами и контейнерами.

Главная идея хостинга в том, что он хостит приложения, а не сайты, так как WordPress или Joomla - это частный случай, на самом деле, технически есть возможность и страниц заглушек/редиректов (например https://blog.sites.mulder.kiev.ua/) и статических сайтов, вроде того, что с февраля живёт у меня на основном сайте http://mulder.kiev.ua/, и планируется активное использование git, например забрать на сервер образ приложения откуда-то с клиентского сервера.

Как это выглядит, общая схема под катомСвернуть )
По умолчанию идёт образ Apache+PHP, и все контейнеры имеют собственный сервер приложений и PHP с полностью независимыми настройками, свой внутренний IP адрес контейнера, по которому через внутреннюю зону DNS ходит проксирующий сервер, со своими лимитами процессов, памяти, процессора, сети и iops'ов

Это всё планируется как кластер серверов приложений, где по OSPF с внутренними сетями все ноды могут достучаться перекрёстно до контейнера на "чужом" узле. Единственный затык - выбрать кластерную файловую систему master-master.

Естественно, кроме самого хостинга приложений, планируется управление DNS, почтой, базами данных, и регистрациями доменных имён, а так же биллинг и API к этому всему.

В общем, вот так сейчас выглядит tech preview первого этапа - пока только создание/запуск/остановка/удаление контейнеров.Свернуть )
Это первый и самый сложный этап, поскольку это первый боевой проект на Rails :)