Juju и MaaS - эффективные инструменты развёртывания масштабных систем на "железе"

advertisement
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-surveyoctober-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: wordpress
summary: "WordPress is a full featured web blogging tool, this charm deploys it."
maintainer: Marco Ceppi <marco@ceppi.net>
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
Мгновенная установка сервисов
• Инициализация сервисов
$ 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 state server (in HA mode)
Provisioning
server
Juju client
(HTML5
GUI, CLI)
Provisioning
server
Mongo
Mongo
API server
Juju agent
API server
Workload
Compute instance
Juju agent
LXC
LXC
Compute
Workload
KVM
Deployment Environment
Juju – проект с открытым исходным кодом
• Теперь на GitHub: https://github.com/juju
Язык программирования Go
Juju – крупнейший проект с открытым кодом
на 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)
docker (w/o tests)
camlistore (w/o tests)
532
442
360
10766
7772
8329
14811
7227
9917
75596
62935
51030
Спасибо
Вопросы и ответы
Download