juju и maas - эффективные инструменты развёртывания...
DESCRIPTION
Juju и MaaS - эффективные инструменты развёртывания масштабных систем на "железе" и в "облаках". Владислав Клячин, Canonical 14 июня 2014. План доклада. Проблемы эффективности IT инфраструктуры MAAS – система быстрой инициализации “ железа ” - PowerPoint PPT PresentationTRANSCRIPT
Juju и MaaS - эффективные инструменты
развёртывания масштабных систем на "железе" и в
"облаках"Владислав Клячин, Canonical
14 июня 2014
План доклада
• Проблемы эффективности IT инфраструктуры• MAAS – система быстрой инициализации “железа”• OpenStack и вклад Canonical в его разработку• Juju – система оркестрации сервисов• Charms – строительные кубики для Juju• Язык программирования Go и Juju
Мысль дня:
• Компании Facebook потребовалось 10 лет и несколько $100M, чтобы масштабировать сервис до 1 миллиарда пользователей.
• Следующие 2 web-сервиса, которые достигнут 1 миллиарда пользователей, сделают это менее чем за 3 года в рамках начального финансирования, имея менее 100 сотрудников.
• Как по вашему мнению должна выглядит “умная” инфраструктура?
Вы и Google
Вы Google
Эффективность расходов
Автоматическое масштабирование поможет Вам быть почти как Google
OpenStack: основа “масштабируемого Linux”.
Приложения
ПамятьДиски
Процессоры
Ядро Linux
OpenStack: основа “масштабируемого Linux”.
ПриложенияПамятьДиски
ПроцессорыOpenStack
сотни или тысячи Linux-серверов
Проблема №1
• Подготовка “голого железа”• Что выбрать?
– MAAS (Metal as a service)– Ironic (часть OpenStack)– Razor– Другие решения, основанные на множественных скриптах
Демонстрация...
• Давайте используем MAAS для инициализации «голого железа» и построим на нем облако OpenStack или установим Hadoop.
MAAS
Знакомьтесь, Ubuntu Orange Box
Orange Box, спецификация
• 10 узлов– i5-3427U CPU– 16GB DDR3 RAM– 120GB SSD– 4 node with extra SSD drive– 1 node with 2TB HDD & Wi-FI card
• вес: 17 кг• цена: $10000
Быстрая инициализация масштабируемого облака в три
простых шага• Установка MААS на первый сервер• Обнаружение остальных серверов
– Автоматически обнаруженные узлы через PXE– Узлы внесённые в список при инсталяции Linux– Ручной ввод MAC-адресов
• Включение серверов– Linux и/или гипервизоры устанавливаются автоматически
Последовательность инициализации
• Включение в список (enlistment)– загрузка временного окружения через DHCP– регистрация на контроллере кластера– добавление временных идентификационных данных IPMI MAAS в BMC
• Ввод в эксплуатацию (commissioning)– загрузка временного окружения через DHCP– инвентаризация железа (CPU, RAM, disks, NICs, IPMI)– добавления постоянных идентификационных данных IPMI MAAS в BMC
• Инициализация (provisioning)– происходит когда это требуется– инициализирует требуемую версию Ubuntu (precise или trusty)
Высокая масштабируемость архитектуры MAAS
• Инициализация и “видимость” – между несколькими дата-центрами
• Развертывание в режиме высокой доступности (HA).
• Поддержка групповых операций для поддержки большого количества серверов
Высокая масштабируемость архитектуры MAAS
• API• Интерфейс командной строки• Графический интерфейс• Интеграция с Landscape для
назначения правами доступа и высокоуровневого системного управления
Большинство облаков OpenStack использует Ubuntu
• http://www.openstack.org/blog/2013/11/openstack-user-survey-october-2013/
• Ubuntu – 55%• CentOS – 24%• RHEL – 10%• другие – 11%
Архитектура OpenStack
Поддержка OpenStack в Ubuntu 14.04
Поддержка OpenStack
• 35% поддержки Ubuntu приходится на облачные сервисы
• В настоящее время сотни обращений в месяц
• С 1 января по 10 июня:– 184 ошибки исправлено– 199 новых ошибок обнаружено
Проблема №2
• Установка и конфигурирование сервисов• Опции:
– Juju– Heat– Cloudify– Всё больше новых сервисов каждый день
“Зоопарк” технологий
Juju – лучшее решение для оркестрации сервисов
Преимущества Juju• Лёгкость развёртывания сервисов
– от одного сервера до целого облака• Реакция на события
– автоматическое изменение конфигурации при изменениях в окружении
– поддержание минимального количества копий для сервиса• Масштабируемость
– charms разработаны с учётом возможности добавления дополнительных копий сервисов “на лету”
• Поддержка любых языков программирования– для написания charms может быть использован любой язык
программирования
Провайдеры Juju
• Облачные сервисы:– Amazon Web Service (EC2)– Windows Azure– OpenStack– HP Public Cloud– Joyent
• “Голое железо”– MAAS
• Контейнеры– LXC– KVM
• Установка на уже работающие системы (Manual provider)
Легкость изучения Jujuна http://learnjuju.com
Charm – пакет для установки сервиса
• Charm:– включает в себя конфигурацию приложения– описывает процедуру инициализации сервиса– определяет “точки перехвата” (hooks) для связи сервисов
• Bundle:– несколько charm вместе со специальной конфигурацией– связи уже настроены– все charm устанавливаются одновременно в “один шаг”
Внутри charm
Внутри charm - продолжение
Внутри charm – metadata.yaml
name: wordpresssummary: "WordPress is a full featured web blogging tool, this charm deploys it."maintainer: Marco Ceppi <[email protected]>description: | This will install and setup WordPress optimized to run in the cloud. This install, in particular, will place Ngnix and php-fpm configured to scale horizontally with Nginx's reverse proxycategories: ["applications"]requires: db: interface: mysql nfs: interface: mount cache: interface: memcacheprovides: website: interface: httppeers: loadbalancer: interface: reversenginx
Мгновенная установка сервисов
• Инициализация сервисов$ juju deploy wordpress$ juju deploy mysql
• Создание связей$ juju add-relation wordpress mysql
• Окрытие сервиса для внешнего мира$ juju expose wordpress
• Масштабирование сервиса$ juju add-unit –n 5 wordpress
Растущая экосистема Charm
• публичный магазин для сharm• доступны более 100 сharm• все сharm тестируются
отделом контроля Canonical• поддержка приватных
магазинов для сharm
Возможность установки Charms на любую платформу
Архитектура Juju
Juju client (HTML5
GUI, CLI)
Deployment Environment
Juju state server (in HA mode)
Provisioning server
API serverMongo
Provisioning server
API serverMongo
Juju agent Workload
Compute instance
Juju agent LXC
Compute KVM
LXC
Workload
Juju – проект с открытым исходным кодом
• Теперь на GitHub: https://github.com/juju
Язык программирования Go
Juju – крупнейший проект с открытым кодом на Go
Число строк в файлах на языке Go:--------------------------------------------------------------------------------Go Language files blank comment code--------------------------------------------------------------------------------juju-core + mgo + goamz + ... 1212 29702 26677 198562juju-core 1040 25103 21749 172277docker 605 11491 8532 101881camlistore 471 10365 11552 64180vitess 226 6240 5746 41787
juju-core (w/o tests) 532 10766 14811 75596docker (w/o tests) 442 7772 7227 62935camlistore (w/o tests) 360 8329 9917 51030
Спасибо
Вопросы и ответы