Слайд 1Juju и MaaS - эффективные инструменты развёртывания масштабных систем на "железе"
и в "облаках"
Владислав Клячин, Canonical
14 июня 2014
Слайд 2План доклада
Проблемы эффективности IT инфраструктуры
MAAS – система быстрой инициализации “железа”
OpenStack и
вклад Canonical в его разработку
Juju – система оркестрации сервисов
Charms – строительные кубики для Juju
Язык программирования Go и Juju
Слайд 3Мысль дня:
Компании Facebook потребовалось 10 лет и несколько $100M, чтобы масштабировать
сервис до 1 миллиарда пользователей.
Следующие 2 web-сервиса, которые достигнут 1 миллиарда пользователей, сделают это менее чем за 3 года в рамках начального финансирования, имея менее 100 сотрудников.
Как по вашему мнению должна выглядит “умная” инфраструктура?
Слайд 6Автоматическое масштабирование поможет Вам быть почти как Google
Слайд 7OpenStack: основа “масштабируемого Linux”.
Приложения
Память
Диски
Процессоры
Ядро Linux
Слайд 8OpenStack: основа “масштабируемого Linux”.
Приложения
Память
Диски
Процессоры
OpenStack
сотни или тысячи Linux-серверов
Слайд 9Проблема №1
Подготовка “голого железа”
Что выбрать?
MAAS (Metal as a service)
Ironic (часть OpenStack)
Razor
Другие
решения, основанные на множественных скриптах
Слайд 10Демонстрация...
Давайте используем MAAS для инициализации «голого железа» и построим на нем
облако OpenStack или установим Hadoop.
MAAS
Слайд 12Orange 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
Слайд 13Быстрая инициализация масштабируемого облака в три простых шага
Установка MААS на первый
сервер
Обнаружение остальных серверов
Автоматически обнаруженные узлы через PXE
Узлы внесённые в список при инсталяции Linux
Ручной ввод MAC-адресов
Включение серверов
Linux и/или гипервизоры устанавливаются автоматически
Слайд 14Последовательность инициализации
Включение в список (enlistment)
загрузка временного окружения через DHCP
регистрация на контроллере
кластера
добавление временных идентификационных данных IPMI MAAS в BMC
Ввод в эксплуатацию (commissioning)
загрузка временного окружения через DHCP
инвентаризация железа (CPU, RAM, disks, NICs, IPMI)
добавления постоянных идентификационных данных IPMI MAAS в BMC
Инициализация (provisioning)
происходит когда это требуется
инициализирует требуемую версию Ubuntu (precise или trusty)
Слайд 15Высокая масштабируемость архитектуры MAAS
Инициализация и “видимость” – между несколькими дата-центрами
Развертывание в
режиме высокой доступности (HA).
Поддержка групповых операций для поддержки большого количества серверов
Слайд 16Высокая масштабируемость архитектуры MAAS
API
Интерфейс командной строки
Графический интерфейс
Интеграция с Landscape для назначения
правами доступа и высокоуровневого системного управления
Слайд 17Большинство облаков OpenStack использует Ubuntu
http://www.openstack.org/blog/2013/11/openstack-user-survey-october-2013/
Ubuntu – 55%
CentOS – 24%
RHEL – 10%
другие
– 11%
Слайд 19Поддержка OpenStack в Ubuntu 14.04
Слайд 20Поддержка OpenStack
35% поддержки Ubuntu приходится на облачные сервисы
В настоящее время сотни
обращений в месяц
С 1 января по 10 июня:
184 ошибки исправлено
199 новых ошибок обнаружено
Слайд 21Проблема №2
Установка и конфигурирование сервисов
Опции:
Juju
Heat
Cloudify
Всё больше новых сервисов каждый день
Слайд 23Juju – лучшее решение для оркестрации сервисов
Слайд 24Преимущества Juju
Лёгкость развёртывания сервисов
от одного сервера до целого облака
Реакция на события
автоматическое
изменение конфигурации при изменениях в окружении
поддержание минимального количества копий для сервиса
Масштабируемость
charms разработаны с учётом возможности добавления дополнительных копий сервисов “на лету”
Поддержка любых языков программирования
для написания charms может быть использован любой язык программирования
Слайд 25Провайдеры Juju
Облачные сервисы:
Amazon Web Service (EC2)
Windows Azure
OpenStack
HP Public Cloud
Joyent
“Голое железо”
MAAS
Контейнеры
LXC
KVM
Установка на
уже работающие системы (Manual provider)
Слайд 26Легкость изучения Juju
на http://learnjuju.com
Слайд 27Charm – пакет для установки сервиса
Charm:
включает в себя конфигурацию приложения
описывает процедуру
инициализации сервиса
определяет “точки перехвата” (hooks) для связи сервисов
Bundle:
несколько charm вместе со специальной конфигурацией
связи уже настроены
все charm устанавливаются одновременно в “один шаг”
Слайд 30Внутри charm – metadata.yaml
name: wordpress
summary: "WordPress is a full featured
web blogging tool, this charm deploys it."
maintainer: Marco Ceppi
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 proxy
categories: ["applications"]
requires:
db:
interface: mysql
nfs:
interface: mount
cache:
interface: memcache
provides:
website:
interface: http
peers:
loadbalancer:
interface: reversenginx
Слайд 31Мгновенная установка сервисов
Инициализация сервисов
$ juju deploy wordpress
$ juju deploy mysql
Создание связей
$
juju add-relation wordpress mysql
Окрытие сервиса для внешнего мира
$ juju expose wordpress
Масштабирование сервиса
$ juju add-unit –n 5 wordpress
Слайд 32Растущая экосистема Charm
публичный магазин для сharm
доступны более 100 сharm
все сharm тестируются
отделом контроля Canonical
поддержка приватных магазинов для сharm
Слайд 33Возможность установки Charms на любую платформу
Слайд 34Архитектура Juju
Juju client (HTML5 GUI, CLI)
Deployment Environment
Juju state server (in
HA mode)
Provisioning server
API server
Mongo
Provisioning server
API server
Mongo
Juju agent
Workload
Compute instance
Juju agent
LXC
Compute
KVM
LXC
Workload
Слайд 35Juju – проект с открытым исходным кодом
Теперь на GitHub: https://Теперь на
GitHub: https://github.comТеперь на GitHub: https://github.com/juju
Слайд 37Juju – крупнейший проект с открытым кодом на Go
Число строк в
файлах на языке Go:
--------------------------------------------------------------------------------
Go Language files blank comment code
--------------------------------------------------------------------------------
juju-core + mgo + goamz + ... 1212 29702 26677 198562
juju-core 1040 25103 21749 172277
docker 605 11491 8532 101881
camlistore 471 10365 11552 64180
vitess 226 6240 5746 41787
juju-core (w/o tests) 532 10766 14811 75596
docker (w/o tests) 442 7772 7227 62935
camlistore (w/o tests) 360 8329 9917 51030