OpenNebula - OpenSource-рішення для організації IaaS
OpenSource forever
В даний час все більшою популярністю для організації приватної хмари користується модель IaaS, розглянемо можливості, що надаються OpenSource проектом OpenNebula
У «хмарні» часи системному адміністратору, коли в його підпорядкуванні знаходилося кілька фізичних серверів, доводилося мати справу з не дуже гнучкою інфраструктурою. Адже є якщо ресурсів не вистачало, докуповувався новий, потужніший сервер, який використовувався натомість або як на додаток до старого у вигляді кластера чи балансування навантаження. Якщо комп'ютерів було небагато, то особливих турбот з експлуатацією така схема не завдавала. Але зі збільшенням систем керувати всім цим ставало дуже незручно. Проблему вирішила віртуалізація, що дозволяє будувати одному потужному фізичному сервері кілька віртуальних, гнучко виділяючи кожному необхідні ресурси. Поява IaaS це наступний логічний етап розвитку ІТ, адже вся інфраструктура управляється з єдиного центру, адміністратор на льоту може створювати нові системи з необхідними характеристиками та змінювати налаштування поточних, переносити сервери та багато іншого, про що раніше доводилося тільки мріяти. Щоб підняти свій IaaS аналогічний Amazon EC2 немає необхідності в закупівлі дорогих ліцензій або звертатися до провайдера послуг, тут можна вирішити все звернувшись до одного з OpenSource проектів. Тим більше, що вибирати є з чого – OpenNebula, Eucalyptus, OpenStack, CloudStack, openQRM, Nimbus та деякі інші. Кожен з них заслуговує на окрему увагу, але в статті зупинимося докладніше на OpenNebula.
Можливості OpenNebula
- Front-end - сервіс OpenNebula (вимагає Ruby);
- Hosts - вузли, що містять гіпервізори (вимагає ssh і налаштований гіпервізор);
- База даних -використовується для збереження параметрів OpenNebula (підтримується MySQL або SQLite).
Кожен компонент OpenNebula містить певні вимоги, всі вони досить добре розписані в документації, яку слід відзначити особливо. Залишилося додати, що ядро написано на С++, утиліти управління написані на Ruby та Shell.
Установка OpenNebula в Ubuntu 12.04
Актуальною на момент написання цих рядків є версія 4.0.1. Реліз має низку покращень і орієнтований на виробничі середовища, тому розробники рекомендують у будь-якому разі оновитись. До речі, всі релізи називаються на честь зоряних туманностей (англ. nebula). Проект пропонує готові пакети для встановлення на 64 бітні версії Ubuntu, Debian, openSUSE та RHEL/CentOS (для openSUSE та CentOS є свій репозиторій), і вихідні тексти за допомогою яких можна встановити OpenNebula в інших дистрибутивах. Сам процес установки будь-яким способом не складний, хоча саме в документації та Wiki розписаний, як мені здається, не дуже докладно і можливо навіть трохи заплутано, а тому потребує певної уважності. Для прикладу розберемо установку та налаштування OpenNebula на одну машину, якраз достатньо, щоб зрозуміти принципи та навчитися працювати. Налаштування віртуального оточення добре розписане на численних ресурсах в Інтернеті, тому цей момент пропущу. Пакети можна знайти і в офіційних репозиторіях дистрибутивів, але не завжди найактуальніші.
Також доступні образи для VMware та KVM, пропонується і доступ до демохмар, де можна познайомитися з OpenNebula без встановлення. Що примітно, розмір файлів інсталяції невеликий, наприклад deb пакет для Ubuntu займає всього 2.5 Мб. Для керування мережею слід створити міст на кожному хості. Ставимо пакет bridge-utils:
Якщо мережевих карток кілька, то дії для кожної картки аналогічні. Зверніть увагу також, що сховище образів знаходиться в/var/lib/one/images, потрібно потурбуватися, щоб місця було достатньо.
Ставимо пакети для задоволення залежностей (для кожної версії OpenNebula він свій, тому тут можуть бути уточнення):
Один компонент встановимо через gem.
На вузлах доступу необхідний SSH сервер.
Для експорту образів та налаштувань використовується NFS.
І перезапускаємо сервер.
Все готове для встановлення OpenNebula. Завантажуємо deb-пакет та ставимо.
Розробники пропонують скрипт, який допомагає додатково встановити деякі модулі для певних ролей, його також краще запустити для підстрахування (може, щось змінилося).
Потім необхідно буде вибрати дистрибутив та роль. Але, очевидно, install_gems розрахований на тих, хто встановлює за допомогою вихідних текстів. Адже не встановити deb-пакет OpenNebula - не отримаємо скрипту, не встановимо залежності, про які йшлося вище - не стане пакет. Крім цього нам знадобиться база MySQL, команди тут стандартні:
Налаштовуємо оточення користувача
У разі встановлення серверної частини за допомогою вихідних текстів та на керованих хостах усі ці операції необхідно буде зробити вручну. Важливо: на всіх вузлах користувач і група повинні мати один і той же id.
Тепер реєструємось як oneadmin і вводимо ssh-keygen, залишаючи всі параметри за замовчуванням. У документації також пропонується налаштувати змінні в
/.bash_profile. У версії 3.6 при установці за допомогою deb пакета, необхідності в цьому не було, змінні встановлювалися автоматично, тому наведу приклад. Специфіка OpenNebula полягає втому, що багато команд слід віддавати від імені користувача oneadmin, при використанні sudo можуть бути проблеми. Щоб не було плутанини надалі всі команди, віддані від імені oneadmin, будуть позначені запрошенням “oneadmin$”. Реєструємося як oneadmin.
Далі необхідно забезпечити можливість аутентифікації по SSH без пароля, для цього копіюємо ключі та створюємо
Копіюємо каталог/var/lib/one/.ssh на кожен вузол, після чого обов'язково підключаємося до вузла, щоб перевірити, що з'єднання відбувається без запиту пароля і вузол доданий доknown host
Імена всіх вузлів повинні дозволятися через DNS, бажано їх прописати в/etc/hosts. Після встановлення також утворюється підкаталог
Важливий момент не описаний у документації, але з яким стикаються всі хто ставить OpenNebula за допомогою пакетів - потрібно скинути пароль користувача згенерований під час установки. Якщо цього не зробити, то надалі отримуватимемо повідомлення про неможливість аутентифікації користувача «User couldn't be authenticated, aborting call». Для цієї мети використовуємо утиліту одногокористувача з параметром passwd, в якості значень їй потрібно передати ID користувача і новий пароль. У oneadmin ID завжди дорівнює 0.
Тепер прописуємо пароль у відкритому вигляді у файл
/.one/one_auth інакше знову ж таки «User couldn't be authenticated, aborting call».
Редагуємо конфігураційні файли
Відкриваємо конфігураційний файл демона one, налаштувань у ньому багато (мережеві, зберігання образів, моніторинг, журналування, конфігурація драйверів тощо), але в більшості їх можна поки що не чіпати. Нас цікавить лише підключення до бази даних. Редагуємо, використовуючи готовий шаблон.
Для запуску OpenNebula реєструємось якoneadmin.
Запускаємо будь-яку команду, висновок не повинен містити помилок. Наприклад.
У разі проблем слід звернутися до журналу, який знаходиться в/var/log/one, oned.log і sched.log. Зокрема ввівши “cat /var/log/one/oned.log ” отримаємо листинг конфігураційного файлу та повідомлення про запуск тих чи інших параметрів. Додати новий вузол можна за допомогою команди:
де im_mad — information драйвер, який використовується для моніторингу вузла, vmm_mad — virtualization драйвер для керування вузлом. Усі можливі установки розписані oned.conf. Додаємо.
Потрібно отримати список параметрів, статус вузла позначається як ON. Детальнішу інформацію щодо конкретного вузла покаже команда «onehost show »
Облікові записи користувачів отримуємо такою командою.
Але найімовірніше комусь всі ці операції при використанні веб-інтерфейсу здаються простіше і наочніше.
Налаштування інтерфейсів
Налаштування OpenNebula Sunstone вказані в/etc/one/sunstone-server.conf, який взагалі зрозумілий і добре розписаний у документації. Можна взагалі нічого не чіпати, просто запустити сервіс.
Решту можна поки що не чіпати. Запускаємо.
Для керування пропонується набір утиліт “occi-* ”, наприклад, список пристроїв зберігання можна отримати так.
Відкривши браузер на сторінціhttp://example.org:4567/ui отримаємо доступ до веб-інтерфейсу OpenNebula Self-Service, його можливості багато в чому збігаються з Sunstone.




Звичайно в рамках статті просто неможливо показати всі сторони такого потужного та гнучкого інструменту як OpenNebula, але тутзнову відправляю до документації проекту, яка багато в чому допомагає.