константин назаров, diy paas with docker, consul and python
Post on 20-Mar-2017
98 Views
Preview:
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
top related