diy paas with docker, consul and python

28
Делаем PaaS при помощи Docker, Consul и Python Константин Назаров

Upload: konstantin-nazarov

Post on 15-Apr-2017

240 views

Category:

Internet


5 download

TRANSCRIPT

Делаем PaaS при помощи Docker, Consul и Python

Константин Назаров

Зачем?

Знайте, что такой способ есть

Запомните паттерн

Что готовим?

Предположим, у вас маленькая команда

Вам нужно масштабировать сервис по запросу

Что будете делать?

Почему не решение X?

Высокий входной порог

Стоимость поддержки

TCO - ?

Ингредиенты

Python

Docker

Consul

Что может Docker API

Запускать контейнеры и настраивать сеть

Запускать команды в контейнерах (exec)

Загружать и скачивать файлы

Что может Docker API

Дохнуть

Что может ConsulХранить пары ключ-значение

Хранить информацию о сервисах

Проверять "здоровье" сервисов

Распространять события

Поддерживает Docker API

Что может Consul

Поддерживает Docker API

Вариант 1: CLI

$ mypaas run myservice --args fd10124f

$ mypaas run myservice --args fd10124f

$ mypaas ls > fd10124f myservice 10.0.0.1:8080

$ mypaas run myservice --args fd10124f

$ mypaas ls > fd10124f myservice 10.0.0.1:8080

$ mypaas rm fd10124f

Дизайн

Следуем соглашениям Docker CLI

Храним все состояние в Consul KV

Подготовка

Ставим Consul на все ноды

Открываем Docker API вовне по TCP

Регистрируем Docker как сервис

Как это работаетПолучаем список "серверов"

Спрашиваем у Consul список сервисов

Решаем, где запустить новый

Запускаем сервис через Docker API

Через Docker Exec донастраиваем

Регистрируем сервис в Consul

Немного о сетиНет прямой связи между хостами

Есть Overlay, но он глючный

Вариант 2: демон

Дизайн

Все, что делал CLI

+ Принимаем команды по HTTP

+ Мониторим запущенные сервисы

Инструменты

gevent

flask

Важные замечания

Не "раздувайте" демон на несколько сервисов

Храните состояние только в Consul

Константин Назаров

[email protected]

@racktear

bit.ly/paas-bom