Хмара, відкрите для всіх openstack - огляд і перші враження

Не так давно на сторінках рубрики syn / ack ми розглядали
відкриту систему для
створення хмарних сервісів Eucalyptus. яка лежить в основі Ubuntu
Enterprise Cloud. Сьогодні ми поговоримо про його головного конкурента, одним з
розробників якої виступає агентство NASA, а серед покровителів числяться
Intel, AMD, Dell ще два десятка відомих компаній.

Ми звикли до того, що всі наші програми, мережеві сервіси та бази даних
працюють на реальних, відчутних машинах, які необхідно купувати,
доставляти, виділяти площу для установки, налаштовувати і стежити за
працездатністю. Однак часи міняються і на зміну дорогим залізним
серверів приходять сервери віртуальні, які набагато дешевше, зручніше в
обслуговуванні і зовсім не бояться експериментів і надзвичайних ситуацій.
Через кілька секунд після кліка по кнопці "купити" наш новенький сервер
готовий до роботи і ми навіть не підозрюємо про те, як він функціонує, яку частину
серверної займає і скільки виділяє тепла. А також не дбаємо про
своєчасної заміни жорстких дисків і інших компонентів системи. Все це
відбувається десь далеко в хмарі, приховано від наших очей.

Віртуальні сервери отримали дуже широке поширення після відкриття
сервісу Amazon EC2, який став еталоном для хмарних сервісів рівня IaaS (це
коли в оренду здається ціла інфраструктура для управління віртуальними
серверами, а не виділена віртуальна машина або додаток). EC2 дозволив
організацій щодо відмови від власних серверних і половини штату системних
адміністраторів на користь парку зручних в супроводі віддалених серверів,
які можна використовувати для будь-яких потреб, збільшуючи кількість машин у міру
потреби. Сервіс, створений Amazon, виявився не тільки зручним в
використанні, але і вельми технологічним, так що багато, хто намагався створити
хмара для своїх потреб або конкуренції з Amazon, зазнавали невдачі. при всій
простоті самої ідеї, хмарний сервіс рівня IaaS дуже важкий в реалізації,
тому як вимагає створення розумної, самоконтрольованого інфраструктури, яка б
вміла рівномірно розподіляти навантаження між фізичними машинами, не боялася
розширення і була стійка до збоїв обладнання. Таке було під силу тільки
великим комерційним організаціям, які просили за свої продукти чималих
грошей, а тим, хто не міг їх заплатити, доводилося задовольнятися тим, що
є: великою кількістю розрізнених компонентів, які потрібно збирати
разом і довго тестувати надійність роботи вийшла системи.

Типи хмарних сервісів

SaaS - Software as a Service (програмне забезпечення в
якість сервісу). Надає споживачеві можливість використовувати ПО,
працююче в хмарі. Найяскравіший приклад: gmail.

PaaS - Platform as a Service (платформа як
сервісу). Дозволяє споживачу розгортати власні додатки на
підготовленої для цього платформі. Як приклад можна привести середу
Java, що працює віддалено.

IaaS - Infrastructure as a Service (інфраструктура в
якість сервісу). Дає споживачеві цілу інфраструктуру, що дозволяє
запускати віртуальні машини, налагоджувати межу ними зв'язок і використовувати
дисковий простір.

Eucalyptus став одним з перших Open Source проектів, націлених на створення
комплексної інфраструктури, що дозволяє підняти cloud-сервіс рівня IaaS НЕ
вдаючись до додаткових інструментів. Пропонована їм інфраструктура
дійсно зручна, ефективна, стійка і, що важливо, повністю
сумісна з клієнтськими інструментами Amazon EC2. Проте, інфраструктура
на основі Eucalyptus виявилася недостатньо масштабується, а публічна версія
фреймворка сильно урізаною по функціональності. Тому зовсім скоро на ринку
з'явився проект, покликаний вирішити ці проблеми і, ні багато ні мало, стати
стандартної відкритою платформою.

OpenStack був утворений шляхом злиття двох незалежних проектів:
"Cloud Files and Cloud Servers", що розробляється RockSpace, і "Nebula Cloud
Platform ", створеної NASA. В результаті вийшла досить цікава солянка,
розділена знову ж на два майже незалежних продукту: OpenStack Nova і
OpenStack Swift.

Nova - рахункова машина

Головний компонент OpenStack - це Nova (Compute), контролер,
керуючий роботою віртуальних машин. Фактично Nova відповідає за все:
обробляє запити на створення віртуальних машин, з'єднує їх із зовнішнім
світом, стежить за працездатністю і розподілом навантаження на фізичні
машини та канали зв'язку, реагує на збої і т.д. Nova заснована на коді системи
NASA Nebula. написана на
мові програмування Python і спирається на протокол обміну повідомленнями AMQP.

Система складається з семи відокремлених компонентів:

На малюнку добре видно, як ці компоненти пов'язані між собою. Сервер API,
контролер хмари і менеджер аутентифікації складають "керуючий центр"
хмари, який повинен працювати на виділеній машині. Адміністратор використовує
утиліту nova-manage для управління характеристиками всієї інфраструктури і
доступом до неї користувачів. Клієнти, що бажають використовувати хмарний сервіс,
підключаються до сервера API за допомогою клієнтських утиліт Amazon EC2 або їх
вільного варіанту під назвою euca2ool з проекту Eucalyptus.

Ще одна виділена машина відповідає за управління сховищем даних (Object
Store). До складу Nova включена тільки початкова реалізація S3-сумісного
сховища даних, яка може бути використана тільки для налагодження. У реальних
ж проектах на її місці повинен бути встановлений Swift, що розвивається відокремлено
від Nova.

Ще одна машина - це контролер томів, що дозволяє підключати до віртуальних
машинам свого роду зовнішні накопичувачі даних (віртуальні флешбрелкі). його
присутність в інфраструктурі зовсім не обов'язково.

Одна з машин виконує функції планувальника, який повинен стежити за
контролерами обчислень і, в разі надходження нового запиту на створення
віртуальної машини, вибирати для цієї мети найбільш підходящого кандидата
(Рішення про придатність може бути прийнято на основі завантаженості контролерів
обчислень, кількості віртуальних машин, що виконуються на них і інших чинників).

Контролери обчислень - це основний кістяк хмарної інфраструктури
OpenStack. зазвичай їх кількість набагато перевершує кількість всіх
інших машин мережі. Контролери обчислень займаються прийомом запитів на
створення нової віртуальної машини, її запуском, стеженням за станом
віртуальних машин, перезапуском і так далі. Чим більше контролерів обчислень
в інфраструктурі, тим більше клієнтів може обслуговувати сервіс.

Варто зауважити, що хмарна інфраструктура на основі OpenStack
виходить дуже гнучкою і керованою. Компоненти системи повністю відокремлені
один від одного і спілкуються тільки за допомогою відправки асинхронних повідомлень або
протоколу HTTP. Вже налаштована і працює система легко витримає будь-які
зміни в своєму дизайні і не потребує багато часу на переконфігуруванні.
Крім того, OpenStack не замкнутий сам в собі і всюди, де це можливо,
використовує сторонні продукти. Для його управління можна використовувати стандартні
клієнти сервісу Amazon EC2, а для запуску віртуальних машин застосовувати найбільш
зручні в даному конкретному випадку системи віртуалізації (на сьогодні
підтримуються KVM, UML, XEN, HyperV і qemu).

Swift - безмежне сховище

Swift (OpenStack Object Storage) - це повністю
розподілене, відмовостійке високонадійне сховище даних, створене за
образом і подобою Amazon S3.
Swift майже повністю заснований на напрацюваннях компанії Rackspace.

Система складається з чотирьох основних компонентів:

Проксі-сервер підтримує зовнішній ReST-ful API, реалізований в рамках
протоколу HTTP. Тому запит доступу до об'єктів всередині сховища виглядає
дуже наочно і просто:

Об'єктні сервери - найбільш важливий компонент Swift-кластера. Вони відповідають за
зберігання та передачу даних. Будь-які об'єкти сховища в кінцевому рахунку осідають на
жорстких дисках цих серверів, які записують дані в звичайні файли,
супроводжуючи їх метаданими, записуваними в розширені атрибути файлів (xattr) .Надежность
зберігання даних досягається за рахунок дублювання відразу на кілька серверів,
так що якщо один з них вийде з ладу, система зможе відновити дані з
іншого сервера і знову продублювати їх. За замовчуванням система створює три
копії кожного об'єкта, так що в якості залізної складової кластера можна
використовувати навіть найдешевші машини, не забезпечені RAID-контролерами.

Один з основних плюсів системи полягає в її прозорою масштабованості.
Розширити сховище можна, просто підключивши новий вузол до кластеру, а всю
іншу роботу з його синхронізації з сховищем візьме на себе Swift. краще
всього цей кластер підходить для зберігання таких даних, як образи віртуальних
машин (власне, для цього він і був створений), банки фотографій, електронні
листи, бекапи тощо.

Незважаючи на свою молодість, Nova і Swift вже встигли потрапити в офіційні
репозиторії деяких дистрибутивів, тому для установки потрібних нам
компонентів можна використовувати стандартний менеджер пакетів:

$ Sudo apt-get install rabbitmq-server \
redis-server
$ Sudo apt-get install nova-api \
nova-objectstore nova-compute \
nova-scheduler nova-network \
euca2ools unzip

Фактично вже після установки система повністю готова до роботи, залишається
тільки завести обліковий запис суперкористувача:

$ Sudo nova-manage user admin vasya

І створити новий проект, в рамках якого ми будемо робити все подальші
експерименти:

$ Sudo nova-manage project create experiments vasya

Далі просимо систему запакувати дані, необхідні для доступу до проекту, в
zip-архів:

$ Sudo nova-manage project zipfile experiments vasya

Тепер ці дані можна використовувати, щоб керувати роботою хмари з
допомогою EC2-сумісних інструментів. Для цього розпакуємо архів і виконаємо
команди, прописані у файлі novarc:

$ Unzip nova.zip
$. novarc

Щоб протестувати роботу сервісу, нам знадобиться EC2-образ віртуальної
машини.

Мінімальний Linux-образ можна отримати на сайті Rackspace:

$ Tar -xzf images.tgz

Образ необхідно зареєструвати в хмарі, тому робимо наступне:

1. Створюємо маніфести для ядра і рамдіска:

$ Euca-bundle-image -i images / aki-lucid / image -p kernel --kernel true
$ Euca-bundle-image -i images / ari-lucid / image -p ramdisk --ramdisk true

2. Заливаємо ядро ​​і рамдіск в хмару:

$ Euca-upload-bundle -m /tmp/kernel.manifest.xml -b mybucket
$ Euca-upload-bundle -m /tmp/ramdisk.manifest.xml -b mybucket

3. Реєструємо ядро ​​і рамдіск:

$ Euca-register mybucket / kernel.manifest.xml
$ Euca-register mybucket / ramdisk.manifest.xml

Ці команди повинні видати на екран ідентифікатори ядра і рамдіска всередині
хмари. Їх потрібно запам'ятати або скопіювати.

4. Готуємо образ машини, використовуючи зареєстровані в минулому кроці
ядро і рамдіск:

$ Euca-bundle-image -i images / ami-tiny / image -p machine --kernel
ID-ядра --ramdisk ID-диска

5. Завантажуємо образ машини в хмару:

$ Euca-upload-bundle -m /tmp/machine.manifest.xml -b mybucket

6. Реєструємо образ машини і запам'ятовуємо її ідентифікатор:

Тепер можна запустити віртуальну машину на виконання, але спочатку ми повинні
отримати SSH-ключ для доступу до наших машин:

$ Euca-add-keypair mykey> mykey.priv
$ Chmod 600 mykey.priv

Запускаємо віртуальну машину:

$ Euca-run-instances ID-машини --kernel ID-ядра --ramdisk ID-рамдіска -k
mykey

Дивимося стан машини:

Перевіряємо, чи була вона коректно запущена:

Підключаємося до машини по SSH:

$ Euca-authorize -P tcp -p 22 default
$ Ssh -i mykey.priv [email protected]

висновок

Описане в статті - тільки вершина айсберга під назвою OpenStack.
Щоб описати систему повністю, знадобилася б ціла книга і величезна
кількість вільного часу. Але я сподіваюся, що і ця невелика порція
інформації допоможе тобі почати освоєння цього, без сумніву, грандіозного
продукту, який незабаром цілком може стати стандартом в середовищі
відкритих хмарних сервісів.

Покажи цю статтю друзям:

Компанія Oracle випустила екстрений патч для критичних вразливостей в продуктах PeopleSoft

Фахівці Cisco і «ІнЧіп» розкажуть про захист «розумних» автомобілів

Баг в роботі Amazon Key дозволяє зловмисникам таємно проникати в будинку користувачів

«Лабораторія Касперського» нарахувала понад 120 шкідливий на комп'ютері, з якого «витекли» дані АНБ

Відразу кілька ІБ-компаній повідомили про наявність малварі в каталозі Google Play

Схожі статті

Copyright © 2024