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

DIY PAAS with Docker, Consul and Python

Apr 15, 2017

Download

Internet

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: DIY PAAS with Docker, Consul and Python

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

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

Page 2: DIY PAAS with Docker, Consul and Python

Зачем?

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

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

Page 3: DIY PAAS with Docker, Consul and Python

Что готовим?

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

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

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

Page 4: DIY PAAS with Docker, Consul and Python

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

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

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

TCO - ?

Page 5: DIY PAAS with Docker, Consul and Python
Page 6: DIY PAAS with Docker, Consul and Python

Ингредиенты

Python

Docker

Consul

Page 7: DIY PAAS with Docker, Consul and Python

Что может Docker API

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

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

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

Page 8: DIY PAAS with Docker, Consul and Python

Что может Docker API

Дохнуть

Page 9: DIY PAAS with Docker, Consul and Python

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

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

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

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

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

Page 10: DIY PAAS with Docker, Consul and Python

Что может Consul

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

Page 11: DIY PAAS with Docker, Consul and Python
Page 12: DIY PAAS with Docker, Consul and Python

Вариант 1: CLI

Page 13: DIY PAAS with Docker, Consul and Python

$ mypaas run myservice --args fd10124f

Page 14: DIY PAAS with Docker, Consul and Python

$ mypaas run myservice --args fd10124f

$ mypaas ls > fd10124f myservice 10.0.0.1:8080

Page 15: DIY PAAS with Docker, Consul and Python

$ mypaas run myservice --args fd10124f

$ mypaas ls > fd10124f myservice 10.0.0.1:8080

$ mypaas rm fd10124f

Page 16: DIY PAAS with Docker, Consul and Python

Дизайн

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

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

Page 17: DIY PAAS with Docker, Consul and Python

Подготовка

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

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

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

Page 18: DIY PAAS with Docker, Consul and Python
Page 19: DIY PAAS with Docker, Consul and Python

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

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

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

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

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

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

Page 20: DIY PAAS with Docker, Consul and Python
Page 21: DIY PAAS with Docker, Consul and Python

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

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

Page 22: DIY PAAS with Docker, Consul and Python
Page 23: DIY PAAS with Docker, Consul and Python

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

Page 24: DIY PAAS with Docker, Consul and Python

Дизайн

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

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

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

Page 25: DIY PAAS with Docker, Consul and Python

Инструменты

gevent

flask

Page 26: DIY PAAS with Docker, Consul and Python
Page 27: DIY PAAS with Docker, Consul and Python

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

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

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

Page 28: DIY PAAS with Docker, Consul and Python

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

[email protected]

@racktear

bit.ly/paas-bom