Константин Назаров: "Как сделать PaaS при помощи Docker, Consul и обвязки на Python"
Как сделать PaaS при помощи Docker, Consul и обвязки на Python
Сейчас я в одиночку работаю над созданием Database-As-A-Service решения. И вопрос "как и где запускать" успешно решился в пользу Docker. Проблемы возникли в двух местах: как соединять контейнеры по сети для репликации данных, и как автоматизированно управлять большим парком запущенных инстансов.
На рынке есть много решений для организации IaaS, и всяких шедулеров вроде Mesos и Kubernetes. Но у всех у них довольно крутой learning curve. К тому же они не очень хорошо работают с сервисами, сдизайненными не по SOA.
В своем докладе я расскажу, как можно сделать (и как я в итоге сделал) для своей компании небольшой PaaS на основе Docker, Consul и обвязки на Python в качестве оркестратора. Это вполне воспроизводимо силами одного человека.
Вот о чем мы поговорим:
- Consul как надежное распределенное хранилище
- Делаем связь контейнеров между хостами без overlay сети
- Выделение IP адресов и организация их пула в Consul KV
- Как правильно регистрировать сервисы и health check-и
- Делаем оркестратор на gevent + простую админку к нему на Flask
- Делаем failover, масштабирование и переезд сервисов
- Отложенные задания (бэкап, аналитика и т.д.)
- И немного про мониторинг всего этого хозяйства (Consul + Prometheus)
Почти весь, включая ansible скрипты, доступен на GitHub.
Константин Назаров
Россия. Москва
SRE
Tarantool
Константин Назаров - инфраструктурный инженер в команде Tarantool. В прошлом - системный программист и любитель Common Lisp. Минималист и приверженец итеративного подхода ко всему.