Построение облачных процессов с помощью mistral

47
© MIRANTIS 2014 Построение облачных процессов с помощью Mistral Ренат Ахмеров

Upload: codefest

Post on 16-Jul-2015

364 views

Category:

Software


3 download

TRANSCRIPT

Page 1: Построение облачных процессов с помощью Mistral

© MIRANTIS 2014

Построение облачных процессов с помощью Mistral

Ренат Ахмеров

Page 2: Построение облачных процессов с помощью Mistral

План

• Что такое OpenStack? • Что такое Workflow? • Что такое Mistral? • Q & A

2

Page 3: Построение облачных процессов с помощью Mistral

• Должно быть интересно: • DevOps инженерам • Разработчикам распределенных систем • Администраторам облаков • Ценителям прекрасного

• Скорее всего будет интересно • Любому программисту

3

Для кого эта презентация

Page 4: Построение облачных процессов с помощью Mistral

• Задачи: • Интеграция систем • Управление ресурсами облака • Автоматизация • Построение отчётов

• Разные способы запуска (таймер, CPU 100%) • Одна точка управления и мониторинга

4

Зачем?

Page 5: Построение облачных процессов с помощью Mistral

5

Что такое OpenStack?

Page 6: Построение облачных процессов с помощью Mistral

6

Серьёзные люди видят это так

Page 7: Построение облачных процессов с помощью Mistral

Физический Сервер 1

7

Физический Сервер 2 Физический Сервер 2

Ключевое слово “виртуализация”

Page 8: Построение облачных процессов с помощью Mistral

• OpenSource ПО для построения облаков

• Одно из самых быстрорастущих сообществ

8

OpenStack

Page 9: Построение облачных процессов с помощью Mistral

• Возраст ~ 5 лет • Несколько работающих публичных облаков • Десятки работающих приватных облаков • Сотни миллионов долларов ежегодно

9

Текущий статус OpenStack

Page 10: Построение облачных процессов с помощью Mistral

on crash

• Создать VM

• Настроить VM

• Извлечь ssh pub key

• Создать block storage

• Добавить в DNS

• Добавить в LB

• Добавить в App Group

10

Задача 1: Автомасштабирование

Page 11: Построение облачных процессов с помощью Mistral

Создать VM1

Создать VM2

Создать VM50

НастроитьVM1

НастроитьVM2

НастроитьVM50

Вычислить

Вычислить

Вычислить

Построить отчёт

Отослать email

11

Задача 2: “Тяжёлые” вычисления

Page 12: Построение облачных процессов с помощью Mistral

Nova1. создать(имя, образ)

2. VM id

> 30 sec

3. найти образ

• OS в процессе загрузки • Внешний IP не присвоен

12

Секундочку: а что значит “создать VM”?

Page 13: Построение облачных процессов с помощью Mistral

• Ожидание создания VM • Регистрация в Nova • Готовая к работе OS

• Присвоить внешний IP • Добавить block storage • Обработка ошибок • Удаление VM • Оповещение

13

Чего не хватает?

Page 14: Построение облачных процессов с помощью Mistral

14

Как насчёт скриптов?

Page 15: Построение облачных процессов с помощью Mistral

15

Page 16: Построение облачных процессов с помощью Mistral

16

• Обработка ошибок • Начинать сначала накладно • Оповещение

• Прогресс (состояние) • Передача и сохранение данных • Устойчивость • Возможность вмешаться

Проблемы кустарных решений

Page 17: Построение облачных процессов с помощью Mistral

17

Что же делать?

Page 18: Построение облачных процессов с помощью Mistral

Может нам поможет Workflow и Mistral?

18

Page 19: Построение облачных процессов с помощью Mistral

19

Что такое Workflow?

Page 20: Построение облачных процессов с помощью Mistral

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).” *

А если серьёзно?

Page 21: Построение облачных процессов с помощью Mistral

21

Из Википедии:

“A workflow engine is a software application that defines a process, the rules governing process decisions, and routes information.”

А если серьёзно?

Page 22: Построение облачных процессов с помощью Mistral

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” **

А если серьёзно?

Page 23: Построение облачных процессов с помощью Mistral

23

Сложно?

Page 24: Построение облачных процессов с помощью Mistral

24

Workflow это: • Задачи • Переходы • Граф • Состояние • Результат • Данные • Асинхронность

Попробуем проще

Page 25: Построение облачных процессов с помощью Mistral

25

• REST API • Язык Workflow • Запуск

• По требованию • По событию

• Управление Workflow • Наблюдение • Вызов сервисов облака • Управление состоянием

Ключевые идеи Workflow сервиса

Page 26: Построение облачных процессов с помощью Mistral

26

Task 1

Task 2

Task 3

• Прогресс • История выполнения • Наглядность • Хранение результата • Эффективное исправление ошибок

Почему состояние так важно?

Page 27: Построение облачных процессов с помощью Mistral

• jBPM • Activiti • BizTalk Server • Amazon Simple Workflow • Mac OS Automator

27

Примеры Workflow движков

Page 28: Построение облачных процессов с помощью Mistral

Что такое Mistral?

Mistral = Workflow сервис для OpenStack (и не только!)

28

Page 29: Построение облачных процессов с помощью Mistral

29

• Простой язык Workflow на YAML • Гибкая архитектура:

• Пополняемая библиотека Actions • Повторное использование Workflow и Actions

• Параллельность (fork) • Синхронизация (join) • Политики запуска задач (retry, timeout и т.д.) • Способы запуска

• По требованию • По событию

Ключевые особенности Mistral

Page 30: Построение облачных процессов с помощью Mistral

30

Общая картина

Page 31: Построение облачных процессов с помощью Mistral

31

• Workflow • состояние и результат

• Task • вызов action или workflow

• состояние и результат

• Action • std.http url=“http://my.website.org”

• Trigger

Основные понятия Mistral

Page 32: Построение облачных процессов с помощью 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)

Page 33: Построение облачных процессов с помощью Mistral

33

Scheduler

Executor

API ServerEngine

Executor...

workflows executions

tasks events

Workflow Queue

Task Queue

Engine API Server

Кратко об архитектуре

Page 34: Построение облачных процессов с помощью Mistral

34

Создать VM 1

Создать VM 2

Создать VM 50

Настроить VM 1

Настроить VM 2

Настроить VM 50

Вычислить

Вычислить

Вычислить

Построить отчёт

Отослать email

Join

А что же с задачей?

Page 35: Построение облачных процессов с помощью Mistral

35

• Mistral работает как “клей”: • Надёжное связывание скриптов • Передача данных • Состояние • Параллелизм • Синхронизация

Скрипты всё же можно использовать!

Page 36: Построение облачных процессов с помощью Mistral

36

• Интеграция систем • Оркестрация • Управление ресурсами облака • Автоматизация • Алгоритмы развёртывания ПО • Distributed/Cloud Cron

Когда нужно использовать Mistral

Page 37: Построение облачных процессов с помощью Mistral

Текущий Статус Mistral

37

Page 38: Построение облачных процессов с помощью Mistral

Технические данные

• Возраст проекта 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

Page 39: Построение облачных процессов с помощью Mistral

Компании

39

Page 40: Построение облачных процессов с помощью Mistral

А можно и мне поучаствовать?

40

Page 41: Построение облачных процессов с помощью Mistral

Да!41

Page 42: Построение облачных процессов с помощью Mistral

Как?42

Page 43: Построение облачных процессов с помощью Mistral

43

Подписать OpenStack

CLA

Купить компьютер

Выучить Python

Launchpad accountPython, Git

git clone mistral repos

Сделать изменения

Отослать патч

нет

Устал?

Кофеда

Жизненный

цикл

разработчика

Как поучаствовать в Mistral?

Page 44: Построение облачных процессов с помощью Mistral

44

Или

http://docs.openstack.org/infra/manual/developers.html

Page 45: Построение облачных процессов с помощью Mistral

Спасибо!45

Page 46: Построение облачных процессов с помощью Mistral

46

Q & A

Page 47: Построение облачных процессов с помощью Mistral

47

• Launchpad (blueprints, tarballs etc.)

• https://launchpad.net/mistral

• Wiki (use cases, screencasts, DSL/API specifications):

• https://wiki.openstack.org/wiki/Mistral

Ссылки