Построение облачных процессов с помощью mistral
TRANSCRIPT
© MIRANTIS 2014
Построение облачных процессов с помощью Mistral
Ренат Ахмеров
План
• Что такое OpenStack? • Что такое Workflow? • Что такое Mistral? • Q & A
2
• Должно быть интересно: • DevOps инженерам • Разработчикам распределенных систем • Администраторам облаков • Ценителям прекрасного
• Скорее всего будет интересно • Любому программисту
3
Для кого эта презентация
• Задачи: • Интеграция систем • Управление ресурсами облака • Автоматизация • Построение отчётов
• Разные способы запуска (таймер, CPU 100%) • Одна точка управления и мониторинга
4
Зачем?
5
Что такое OpenStack?
6
Серьёзные люди видят это так
Физический Сервер 1
7
Физический Сервер 2 Физический Сервер 2
Ключевое слово “виртуализация”
• OpenSource ПО для построения облаков
• Одно из самых быстрорастущих сообществ
8
OpenStack
• Возраст ~ 5 лет • Несколько работающих публичных облаков • Десятки работающих приватных облаков • Сотни миллионов долларов ежегодно
9
Текущий статус OpenStack
on crash
• Создать VM
• Настроить VM
• Извлечь ssh pub key
• Создать block storage
• Добавить в DNS
• Добавить в LB
• Добавить в App Group
10
Задача 1: Автомасштабирование
Создать VM1
Создать VM2
Создать VM50
НастроитьVM1
НастроитьVM2
НастроитьVM50
Вычислить
Вычислить
Вычислить
Построить отчёт
Отослать email
11
Задача 2: “Тяжёлые” вычисления
Nova1. создать(имя, образ)
2. VM id
> 30 sec
3. найти образ
• OS в процессе загрузки • Внешний IP не присвоен
12
Секундочку: а что значит “создать VM”?
• Ожидание создания VM • Регистрация в Nova • Готовая к работе OS
• Присвоить внешний IP • Добавить block storage • Обработка ошибок • Удаление VM • Оповещение
13
Чего не хватает?
14
Как насчёт скриптов?
15
16
• Обработка ошибок • Начинать сначала накладно • Оповещение
• Прогресс (состояние) • Передача и сохранение данных • Устойчивость • Возможность вмешаться
Проблемы кустарных решений
17
Что же делать?
Может нам поможет Workflow и Mistral?
18
19
Что такое Workflow?
20
Из Википедии:
“… A workflow manages and monitors the state of activities, such as the processing and approval of a loan application form, and determines which new activity to transition to according to defined processes (workflows).” *
А если серьёзно?
21
Из Википедии:
“A workflow engine is a software application that defines a process, the rules governing process decisions, and routes information.”
А если серьёзно?
22
Из Википедии:
“A workflow management system (WfMS) is a software system for the set-up, performance and monitoring of a defined sequence of tasks, arranged as a workflow” **
А если серьёзно?
23
Сложно?
24
Workflow это: • Задачи • Переходы • Граф • Состояние • Результат • Данные • Асинхронность
Попробуем проще
25
• REST API • Язык Workflow • Запуск
• По требованию • По событию
• Управление Workflow • Наблюдение • Вызов сервисов облака • Управление состоянием
Ключевые идеи Workflow сервиса
26
Task 1
Task 2
Task 3
• Прогресс • История выполнения • Наглядность • Хранение результата • Эффективное исправление ошибок
Почему состояние так важно?
• jBPM • Activiti • BizTalk Server • Amazon Simple Workflow • Mac OS Automator
27
Примеры Workflow движков
Что такое Mistral?
Mistral = Workflow сервис для OpenStack (и не только!)
28
29
• Простой язык Workflow на YAML • Гибкая архитектура:
• Пополняемая библиотека Actions • Повторное использование Workflow и Actions
• Параллельность (fork) • Синхронизация (join) • Политики запуска задач (retry, timeout и т.д.) • Способы запуска
• По требованию • По событию
Ключевые особенности Mistral
30
Общая картина
31
• Workflow • состояние и результат
• Task • вызов action или workflow
• состояние и результат
• Action • std.http url=“http://my.website.org”
• Trigger
Основные понятия Mistral
32
my_workflow: … tasks: ping_my_website: action: std.http url=“http://my.website.org” on-error: - report_downtime
report_downtime: action: std.email to_addrs=[‘[email protected]’]
…
Domain Specific Language (DSL)
33
Scheduler
Executor
API ServerEngine
Executor...
workflows executions
tasks events
Workflow Queue
Task Queue
Engine API Server
Кратко об архитектуре
34
Создать VM 1
Создать VM 2
Создать VM 50
Настроить VM 1
Настроить VM 2
Настроить VM 50
Вычислить
Вычислить
Вычислить
Построить отчёт
Отослать email
Join
А что же с задачей?
35
• Mistral работает как “клей”: • Надёжное связывание скриптов • Передача данных • Состояние • Параллелизм • Синхронизация
Скрипты всё же можно использовать!
36
• Интеграция систем • Оркестрация • Управление ресурсами облака • Автоматизация • Алгоритмы развёртывания ПО • Distributed/Cloud Cron
Когда нужно использовать Mistral
Текущий Статус Mistral
37
Технические данные
• Возраст проекта 1 год и 3 месяца • ~ 100 000 строк кода • 4 подпроекта o https://github.com/stackforge/mistral o https://github.com/stackforge/python-mistralclient o https://github.com/stackforge/mistral-extra o https://github.com/stackforge/mistral-dashboard
• ~ 60 блюпринтов на Launchpad
38
Компании
39
А можно и мне поучаствовать?
40
Да!41
Как?42
43
Подписать OpenStack
CLA
Купить компьютер
Выучить Python
Launchpad accountPython, Git
git clone mistral repos
Сделать изменения
Отослать патч
нет
Устал?
Кофеда
Жизненный
цикл
разработчика
Как поучаствовать в Mistral?
44
Или
http://docs.openstack.org/infra/manual/developers.html
Спасибо!45
46
Q & A
47
• Launchpad (blueprints, tarballs etc.)
• https://launchpad.net/mistral
• Wiki (use cases, screencasts, DSL/API specifications):
• https://wiki.openstack.org/wiki/Mistral
Ссылки