27
DevOps-40 Project FiFo – система управления облаком SmartOS на языке Erlang 31.01.2014, DevOps meetup, СПб

DevOps-40 meetup #7, Project FiFo

Embed Size (px)

DESCRIPTION

My talk on DevOps-40 meetup #7

Citation preview

Page 1: DevOps-40 meetup #7, Project FiFo

DevOps-40

Project FiFo – системауправления облаком

SmartOS на языке Erlang31.01.2014, DevOps meetup, СПб

Page 2: DevOps-40 meetup #7, Project FiFo

DevOps-40

Традиционное вступление:● Я не успел записать новогоднее обращение в срок

● Я устал, но не ухожу (need moar lesbian cosplayers speakers!)

● В зале есть эрлангисты? (ответите за всё!)

Page 3: DevOps-40 meetup #7, Project FiFo

DevOps-40

В жанре легкого трепа:● Чего хотим от панели управления?● Как это реализовать?● Что такое “проект FiFo”?● Впечатления от использования, в основном, жалобы

● В т.ч., жалобы на (около)Erlang

Page 4: DevOps-40 meetup #7, Project FiFo

DevOps-40

Чего хотим от панели?● Минимально:● Создать, удалить, изменить, запустить, остановить виртуалку

● Управление правами доступа● Управление ресурсами (гипервизором, IP-адресами)

Page 5: DevOps-40 meetup #7, Project FiFo

DevOps-40

Чего хотим от панели?● Нормально:● Гипервизоров больше одного● Интеграция с биллингом● Плавное (а не выбор предопределенных пакетов) изменение параметров виртуалок

Page 6: DevOps-40 meetup #7, Project FiFo

DevOps-40

Чего хотим от панели?● Идеально:● Распределенность и отказоустойчивость

● Работа с большим количеством объектов

● Управление стораджем/бэкапами

Page 7: DevOps-40 meetup #7, Project FiFo

DevOps-40

Как это реализовать?● Взять OpenStack и погрузиться в пучины его развертывания

● ^ Я не пробовал, отговорили● Взять Erlang и написать свою крутую панель с распределенностью и лисперами

Page 8: DevOps-40 meetup #7, Project FiFo

DevOps-40

Хотя, постойте● Project FiFo – попытка написания своей крутой Open Source панели на Erlang под SmartOS

● Альтернатива под SmartOS – платный SmartDC (он на NodeJS)

● Фактически, нет альтернатив

Page 9: DevOps-40 meetup #7, Project FiFo

Как устроен(а) FiFo● FiFo состоит из квадратиков (как и все остальное)

● Их пока шесть

DevOps-40

Page 10: DevOps-40 meetup #7, Project FiFo

Как устроен(а) FiFo● wiggle – API server● snarl – rights management server● sniffle – business logic server● howl – live notifications server● jingles – Cowboy-based Web app● chunter – hypervisor agent

DevOps-40

Page 11: DevOps-40 meetup #7, Project FiFo

Как устроен(а) FiFo● Все это хозяйство обнаруживает друг друга при помощи mDNS

● Отказоустойчивость сделана поверх RIAK Core

● Хранилище – LevelDB● Rich browser app на AngularJS

DevOps-40

Page 12: DevOps-40 meetup #7, Project FiFo

Как выглядит

DevOps-40

Page 13: DevOps-40 meetup #7, Project FiFo

Как внедрено у нас● Две продакшн инсталляции, одна – тестовая

● Используем с сентября● В одной из продакшн инсталляций несколько гипервизоров

● Недавно провели апдейт

DevOps-40

Page 14: DevOps-40 meetup #7, Project FiFo

Что хорошо● mDNS это очень хорошо● ^ (используйте VLANs)● Хорошо, что вообще работает● Падения панели не сказываются на работе гипервизоров

● Ставится относительно просто

DevOps-40

Page 15: DevOps-40 meetup #7, Project FiFo

Что плохо● Высокий уровень хаоса:● Странная система версионирования

● Куча (!) багов● Сообщения об ошибках бессмысленны

DevOps-40

Page 16: DevOps-40 meetup #7, Project FiFo

Что плохо● Недоработки:● Rich web app – круто, но не по слабым каналам

● Плохая обработка ошибок● “Let it fail” != “make it fail” (сервисы падают и до рестарта лежат)

DevOps-40

Page 17: DevOps-40 meetup #7, Project FiFo

Let make it fail!

DevOps-40

Page 18: DevOps-40 meetup #7, Project FiFo

Краткий список багов● При описании диапазона IP можно указать VLAN id, но панель его проигнорирует

● Свойства включенной машины нельзя поменять (при этом вернется “Server error 500”)

DevOps-40

Page 19: DevOps-40 meetup #7, Project FiFo

Краткий список багов● Метаданные в базе могут разойтись с реальностью (“лишний гипервизор”, неудаляемые дубликаты виртуалок)

● ^ Ищу консольный клиент LevelDB● Кстати, 6244 /var/db/sniffle/ (в Mb)

DevOps-40

Page 20: DevOps-40 meetup #7, Project FiFo

Краткий список багов● Виртуальную машину типа KVM нельзя создать, если выделить ей меньше 4G памяти

● Никаких ошибок, в панели она просто зависнет

● Удалить ее -только со второго раза

DevOps-40

Page 21: DevOps-40 meetup #7, Project FiFo

Краткий список багов● Выделенные IP-адреса не всегда возвращаются в пул свободных при их освобождении

● Если назначить объекту “сеть” два пула IP-адресов, адреса из второго не будут выдаваться

DevOps-40

Page 22: DevOps-40 meetup #7, Project FiFo

DevOps-40Ну и про Erlang● Компилируемый язык для веб- приложения? Д в упрлс!

● Каша из логов: debug.log, crash.log, erlang.log, error.log, info.log, run_erl.log, warning.log – и это с одного из шести сервисов!

● В логах тоже каша

Page 23: DevOps-40 meetup #7, Project FiFo

DevOps-40

Что имеем в FiFo?● Минимально:● Создать, удалить, изменить, запустить, остановить виртуалку

● Управление правами доступа● Управление ресурсами (гипервизором, IP-адресами)

Page 24: DevOps-40 meetup #7, Project FiFo

DevOps-40

Что имеем в FiFo?● Нормально:● Гипервизоров больше одного● Интеграция с биллингом● Плавное (а не выбор предопределенных пакетов) изменение параметров виртуалок

Page 25: DevOps-40 meetup #7, Project FiFo

DevOps-40

Что имеем в FiFo?● Идеально:● Распределенность и отказоустойчивость

● Работа с большим количеством объектов

● Управление стораджем/бэкапами

Page 26: DevOps-40 meetup #7, Project FiFo

DevOps-40Выводы● Нельзя просто взять Erlang и разбавить его Angular'ом

● Здесь было слово в защиту PHP, но я его случайно стер

● FiFo – образовательный проект, в некотором роде

● Ждите статус апдейтов

Page 27: DevOps-40 meetup #7, Project FiFo

DevOps-40

Тост за единение!● Вопросы?● DevOps-40: Лучшее – детям!