OpenNebula

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 20:04, 18 мая 2017.
OpenNebula
Opennebula-logo.svg
Создатели: OpenNebula System (Community)
Разработчики: Ignacio M. Llorente and Rubén S. Montero
Выпущена: 2008
Постоянный выпуск: 5.2.1 / 9 января 2017
Написана на: C,C++,Ruby, Java, Shell script, Lex, Yacc
Операционная система: Linux
Платформа: Гипервизор
Тип ПО: Облачные вычисления
Лицензия: Apache License version 2
Веб-сайт opennebula.org

OpenNebula - инновационный проект в сфере облачной обработки данных для предприятий, представляющий собой открытую и расширяемую платформу автоматизации работы ЦОД. OpenNebula позволяет развернуть IaaS-модель (предоставляет возможность использования облачной инфраструктуры для самостоятельного управления ресурсами обработки, хранения, сетями и другими фундаментальными вычислительными ресурсами), а также обеспечить работу гибридной схемы за счет комбинирования ресурсов локального дата-центра и внешних облачных провайдеров. В состав проекта входят средства для организации развёртывания виртуальных окружений, мониторинга, контроля доступа, обеспечения безопасности и управления хранилищем. Код системы полностью открыт под лицензией Apache. Готовые установочные пакеты доступны для Ubuntu, openSUSE, RHEL/CentOS и Debian.

Перспективы развития и усовершенствования OpenNebula:

  • Разработка простой, мощной, масштабируемой и адаптируемой системы создания виртуальных центров обработки данных и управление ими;
  • Поддержка облачных и встроенных модульных систем, которые позволяют реализовать различные облачные архитектуры и могут взаимодействовать с любым интерфейсом центра обработки данных;
  • Обеспечение cloud-разработчиков и пользователей возможностью выбора облачных систем и интерфейса, чтобы де-факто стандарты способствовали созданию богатой среды поддержки высокоуровневых компонентов;
  • Обеспечение стабильного и качественного программного обеспечения;
  • Разработка самых требуемых в данный момент инструментов управления облачными центрами;
  • Поддержка среды разработки компонентов с открытым исходным кодом;
  • Поддержка сообщества пользователей и разработчиков, вносящих вклад в проект;
  • Сотрудничество с другими проектами с открытым исходным кодом;
  • Сотрудничество с основными научно-исследовательскими проектами в области облачных вычислений;

История

История развития OpenNebula

OpenNebula был впервые создан в качестве исследовательского проекта в 2005 году Игнасио М. Льоренте и Рубеном С. Монтеро. В марте 2008 года был первый релиз, программное обеспечение было выпущено в виде исходного кода, и по сей день проект также можно загрузить с полностью открытым кодом из репозитория коммерческих компаний с ведущими технологиями для управления облаком. Opennebula является результатом многолетних исследований и разработок в области эффективного и масштабируемого управления виртуальными машинами на массивных инфраструктурах, полученным в тесном сотрудничестве с сообществом пользователей и участниками рынка облачных вычислений. Множество инновационных функций были разработаны специально для бизнес-сценариев от ведущих компаний в различных отраслях в контексте ведущих международных проектов в области облачных вычислений. Технология OpenNebula достигла высот благодаря активному взаимодействию пользователей и разработчиков. На данный момент наблюдается экспоненциальный рост количества пользователей, различных проектов, исследовательских групп и компаний, создающих новые виртуализации и облачные компоненты с открытым кодом, для дополнения и расширения функционала инструментов облачных вычислений. В марте 2010 года основные авторы OpenNebula основали C12G Labs (теперь известные как Opennebula System), в которой на коммерческой основе пишутся программы под заказ для IT- предприятий, это позволяет проекту OpenNebula не быть привязанным исключительно к государственному финансированию.

Основные возможности:

Типы поддерживаемых Cloud-окружений:

  1. Приватные cloud-системы, доступные только внутри организации, полностью подконтрольные и выполненные на собственных мощностях. В качестве системы виртуализации поддерживается использование Xen, KVM и VMware;
  2. Публичные cloud-окружения, работающие в инфраструктуре внешних сервис-провайдеров, таких как Amazon EC2. Для доступа к публичным cloud-окружениям OpenNebula поддерживает такие API, как EC2 Query, OGF OCCI и vCloud;
  3. Гибридные cloud-системы, сочетающие элементы публичных и приватных cloud-систем. Например, определённая критически важная часть инфраструктуры может работать в приватном облаке, а вторичные системы вынесены во внешние облака, или изначально вся система построена как приватная, но при нехватке ресурсов в пиковые моменты к работе привлекаются мощности публичных сервисов.

Возможности для администратора, управляющего инфраструктурой:

  1. Динамическое изменение размера физической инфраструктуры через добавление или удаление узлов налету и разбиение кластера на виртуальные разделы, позволяющие выделять только необходимый объем ресурсов для функционирования определённого сервиса;
  2. Централизованный интерфейс для управления всеми элементами виртуальной и физической распределенной инфраструктуры. Управляющий web-интерфейс Sunstone для администраторов cloud-окружений, через который можно управлять работой инфраструктуры приватных и гибридных окружений, распределять виртуальные и физические ресурсы;
  3. Высокая степень задействования доступных ресурсов, возможность подключения внешних ресурсов, предоставления ресурсов в аренду или организации совместного использования инфраструктуры между несколькими департаментами;
  4. Сокращение издержек за счёт уменьшения числа физических серверов, уменьшение затрат на администрирование, обслуживание, энергоснабжение и охлаждение (вместо физических серверов предоставляются виртуальные серверы, которые более полно используют доступные физические ресурсы - например, группа мало загруженных серверов теперь может работать на одной физической машине);
  5. Возможность быстрого увеличения серверной мощности за счёт подключения ресурсов внешних cloud-сервисов в моменты пиковой нагрузки;
  6. Механизмы для обеспечения отказоустойчивости, реализована функция автоматического выполнения операций по восстановлению работоспособности окружений в случае сбоя в работе физического сервера или виртуальной машины;
  7. Поддержка управления квотами через задание определённым пользователям набора ограничений на использование ресурсов;
  8. Поддержка групп со своим набором пользователей и виртуальных ресурсов. Например, можно создать отдельное изолированное облако со своим набором пользователей и делегировать управление этим облаком определённой компании, обеспечив возможность работы нескольких провайдеров облачных услуг на базе одной инфраструктуры OpenNebula. В каждой группе может быть свой набор публичных ресурсов (шаблоны, образы виртуальных машин, виртуальные сети), не пересекающийся с другими группами;
  9. Гибкая система контроля доступа (ACL) и управления пользователями/группами, поддерживающая распределение ресурсов между ними, в том числе возможность выделения ресурсов для совместного использования несколькими пользователями или группами. В настоящее время поддерживается несколько типов пользователей: администратор (разрешено выполнение любых операций), обычный пользователь, публичный пользователь (только базовые возможности) и пользователь определённого сервиса;
  10. Возможность задания политики размещения ресурсов в дата-центре (Data Center Placement Policies). Поддерживаются 4 предопределённых набора правил: packing (используется минимальное число серверов для размещения VM, следовательно обеспечивается максимальная плотность и минимальная фрагментация), striping (VM равномерно распределяются по имеющимся серверам, обеспечивается максимальный запас по ресурсам для VM), load-aware (VM размещается на сервере с минимальной нагрузкой) и custom (размещение на основании вычисленного веса).
  11. Организация централизованного управления несколькими отдельными установками OpenNebula (oZones). Доступ к зонам организуется с использованием абстрактного понятия Виртуальный дата-центр, содержащий свой набор ресурсов (образы и шаблоны виртуальных машин, виртуальные сети и виртуальные машины) и пользователей, которые используют данные виртуальные ресурсы.

Возможности для пользователя, размещающего свои окружения:

  1. Более быстрое получение запрошенного сервиса (виртуальный сервер поднять значительно быстрее, чем купить и установить физический сервер);
  2. Поддержка развертывания гетерогенных операционных окружений в рамках единой совместно используемой инфраструктуры;
  3. Полный контроль за жизненным циклом виртуальных серверов. Ведение аккаунтинга и генерации отчётов об активности пользователей и серверов;
  4. Self-Service Portal - web-интерфейс для конечных пользователей, дополняющий ранее реализованные интерфейсы OpenNebula Sunstone (администрирование cloud-окружений) и OpenNebula Zones (управления несколькими зонами одного пользователя). Используя Self-Service Portal пользователи могут самостоятельно создавать, развёртывать и управлять различными ресурсами, в том числе хранением образов виртуальных машин, сетевыми ресурсами и виртуальными машинами;

Масштабируемая архитектура и интерфейсы API 4.2

OpenNebula специально разработана, чтобы легко адаптироваться к любой инфраструктуре и может легко быть расширена дополнительными компонентами. Результатом этого стала модульная система, которая может реализовать множество облачных архитектур и может взаимодействовать с несколькими data-центрами.
Интерфейсы OpenNebula

Cloud - интерфейсы

Cloud - интерфейсы позволяют управлять виртуальными машинами, сетями и изображениями с помощью простого и удобного в использовании REST API. Cloud - интерфейсы скрывают сложную часть облака дабы конечному пользователю не трудно было их освоить. OpenNebula реализует два различных интерфейса:

  1. EC2-Query API. OpenNebula реализует функциональные возможности, предлагаемые Amazon's EC2 API, в основном те, которые касаются управлением виртуальных машин. Таким образом, вы можете использовать любой инструмент EC2 Query, при доступе к OpenNebula Cloud.
  2. OCCI-OGF. Это веб-сервис позволяет запускать и управлять виртуальными машинами в OpenNebula, используя последнюю версия проекта OGF OCCI API.

Системные интерфейсы

OpenNebula XML-RPC интерфейс

Интерфейс XMl-RPC является основным интерфейсом для OpenNebula, и он представляет все функциональные возможности для взаимодействия программного агента OpenNebula. Через интерфейс XMl-RPC вы можете контролировать и управлять любым ресурсом OpenNebula, в том числе виртуальными машинами, сетями, изображениями, пользователями, хостами и кластерами. Используйте XMl-RPC интерфейс если вы разрабатываете специализированные библиотеки для облачных приложений или вам нужен низкоуровневый интерфейс с ядром OpenNebula.

OpenNebula Cloud API (ОСА)

OpenNebula Cloud API обеспечивает упрощенное и удобное взаимодействие с ядром OpenNebula. Интерфейсы OCA предоставляет те же функции, что и интерфейс XML-RPC. В ОСА поддерживается 2 языка: Ruby и JAVA. Используйте интерфейс ОСА, если вы разрабатываете усовершенствованные инструменты IaaS, которые нуждаются в полном доступе к функциональным возможностям OpenNebula.

Отладочный интерфейс OpenNebula

Взаимодействие между OpenNebula и облачной инфраструктурой выполняется специальными отладчиками в рамках каждой из частей:

  • Место хранения. Выполняется операции абстрактоного хранения (например, клонирование или удаление), которые реализуются с помощью специальных программ, которые могут быть заменены или модифицированы для взаимодействия с бэкапами и файловыми системами.
  • Виртуализация. Взаимодействие с гипервизором также реализованы с помощью пользовательских программ, для загрузки, остановки или переноса виртуальной машины. Это позволяет создавать уникальные виртуальные машины для каждого пользователя.
  • Мониторинг. Мониторинг информации также собирается внешними системами. Можно добавить дополнительные датчики для увеличения метрики пользовательского мониторинга, которые в дальнейшем могут быть использованы для выделения виртуальных машин или для целей бухгалтерского учета.
  • Авторизация. OpenNebula может быть также выполнена с возможностью использования внешних программ для авторизации запросов пользователей. Таким образом, вы можете реализовать любую политику доступа к облачным ресурсам.

Используйте отладчики если вам нужен OpenNebula интерфейс какой-либо конкретной системы хранения данных, виртуализации, мониторинга или авторизации, уже развернутых в data - центре или для настройки поведения стандартных отладчиков OpenNebula.

OpenNebula Data-центр

OpenNebula сохраняет свое состояние и выделенную информацию в постоянной базе данных. OpenNebula может использовать базу данных MySQL или SQLite, которые могут легко взаимодействовать с любым инструментом БД.

Установка OpenNebula Debian/Ubuntu

Добавить репозитории OpenNebula

Для начала необходимо добавить OpenNebula репозиторий как суперпользователь:

# wget -q -O- http://downloads.opennebula.org/repo/Debian/repo.key | apt-key add - 

Добавим ссылку на скачку актуальной версии OpenNebula (на момент написания 5.2)

# echo "deb http://downloads.opennebula.org/repo/5.2/Debian/8 stable opennebula" > /etc/apt/sources.list.d/opennebula.list //debian 8
# echo "deb http://downloads.opennebula.org/repo/5.2/Ubuntu/16.04 stable opennebula" > /etc/apt/sources.list.d/opennebula.list // ubuntu 16.04
# echo "deb http://downloads.opennebula.org/repo/5.2/Ubuntu/14.04 stable opennebula" > /etc/apt/sources.list.d/opennebula.list // ubuntu 14.04

Установка программного обеспечения

Установим необходимые пакеты

# apt-get update 
# apt-get install opennebula opennebula-sunstone opennebula-gate opennebula-flow 

Все доступные для установки пакеты:

  • opennebula-common: Предоставляет пользователя и общие файлы.
  • ruby-opennebula: Ruby API.
  • libopennebula-java: Java API.
  • libopennebula-java-doc: документация по Java API.
  • opennebula-node: Предоставляет узлы как opennebula-узлы.
  • opennebula-sunstone: Sunstone (графическая оболочка).
  • opennebula-tools: Интерфейс командной строки.
  • opennebula-gate: OneGate сервер, который обеспечивает связь между виртуальными машинами и OpenNebula.
  • opennebula-flow: OneFlow управляет сервисами.
  • opennebula: OpenNebula Daemon.

Установка Ruby Runtime

Некоторым компонентам OpenNebula необходимы библиотеки Ruby. OpenNebula предоставляет скрипт, который устанавливает необходимые gems, а также необходимые пакеты для библиотек разработки.

 # /usr/share/one/install_gems 

Предыдущий скрипт подготовлен для обнаружения распространенных дистрибутивов Linux и установки необходимых библиотек. Если не удается найти пакеты, необходимые в вашей системе, вручную установите следующие пакеты:

  • sqlite3 development library
  • mysql client development library
  • curl development library
  • libxml2 and libxslt development libraries
  • ruby development library
  • gcc and g++
  • make

Запуск OpenNebula

После установки gems система автоматически создает нового пользователя oneadmin, теперь все следующие действия необходимо выполнять от этого пользователя:

Для установки пароля для этого пользователя используйте:

# passwd oneadmin 

Теперь зайдя под пользователем oneadmin Замете /var/lib/one/.one/one_auth будет создано с помощью произвольно сгенерированного пароля. Он должен содержать следующее: oneadmin: <пароль> . Не забудьте поменять пароль перед запуском OpenNebula. Например:

$ echo "oneadmin:mypassword" > ~/.one/one_auth 

Все готово для запуска OpenNebula:

# systemctl start opennebula 
# systemctl start opennebula-sunstone 

Или для старых Linux систем:

# service opennebula start 
# service opennebula-sunstone start 

Проверка установки

После запуска OpenNebula в первый раз, вы должны проверить, что команды могут подключаться к Daemon OpenNebula. Вы можете сделать это в CLI Linux или в графическом интерфейсе пользователя: Sunstone.

Linux CLI:

 $ oneuser show 
big

Sunstone Теперь вы можете попробовать войти в веб-интерфейс Sunstone. Для этого укажите свой браузер на http://<внешний адрес>:9869. Если все в порядке, вам будет предложена страница входа. Пользователем является oneadmin, а пароль - тот, который находится в файле /var/lib/one/.one/one_auth.

Приветственная страница OpenNebula.png

После входа в систему Вас встретит Панель инструментов

Dashboard.png

Установка OpenNebula KVM Node

Прежде, чем устанавливать, необходимо точно быть уверенным, что ваш сервер может поддерживать виртуализацию, можно прописать в терминале

 $ kvm-ok 

Если в результате будет написано

KVM acceleration can be used

Следовательно проблем не будет, и сервер поддерживает аппаратную виртуализацию, без нее нельзя будет создавать виртуальные машины, с пакетом Qemu-KVM Opennebula не работает Если же на выходе получается:

Your CPU does not support KVM extensions
KVM acceleration can NOT be used

То сервер не сможет взаимодействовать и поддерживать виртуальные машины через Opennebula, несмотря на то, что через Qemu-KVM виртуальные машины можно поднимать. Необходимо проверить в настройках BIOS, вероятно, там отключена аппаратная виртуализация. Если на сервере не стоит KVM, то установить можно так:

 $ sudo apt-get install libvirt-bin ubuntu-vm-builder bridge-utils //ubuntu
 $ sudo apt-get install kvm libvirtd virtinst bridge-utils //debian

Добавить репозитории OpenNebula

# wget -q -O- http://downloads.opennebula.org/repo/Debian/repo.key | apt-key add - 
# echo "deb http://downloads.opennebula.org/repo/5.2/Debian/8 stable opennebula" > /etc/apt/sources.list.d/opennebula.list // debian 8
# echo "deb http://downloads.opennebula.org/repo/5.2/Ubuntu/16.04 stable opennebula" > /etc/apt/sources.list.d/opennebula.list // ubuntu 16.04
# echo "deb http://downloads.opennebula.org/repo/5.2/Ubuntu/14.04 stable opennebula" > /etc/apt/sources.list.d/opennebula.list // ubuntu 14.04

Установка программного обеспечения

# apt-get update
# apt-get install opennebula-node
# service libvirtd restart //debian
# service libvirt-bin restart //ubuntu

Настройка SSH

OpenNebula взаимодействует с собственными нодами с помощью SSH протоколов, поэтому необходимо раздать всем машинам общий ключ пользователя oneadmin всех машин в файл /var/lib/one/.ssh/authorized_keys. В этом примере воспользуемся scp протоколом передачи. Для простоты на каждой машине для пользователя oneadmin зададим пароли, которые в последствии будем использовать для scp. После создаем ключи

$ ssh-keyscan <Главная> <машина1> <машина2> <машина3> ... >> /var/lib/one/.ssh/known_hosts

Подразумевается что <Адрес машины в общей сети> После создания ключей, их необходимо распространить среди машин:

$ scp -rp /var/lib/one/.ssh oneadmin@<машина1>:/var/lib/one/
$ scp -rp /var/lib/one/.ssh oneadmin@<машина2>:/var/lib/one/
$ scp -rp /var/lib/one/.ssh oneadmin@<машина3>:/var/lib/one/
...

Для проверки правильности проделанных шагов проверим, не запрашивается ли пароль при обращении через SSH по пользователю oneadmin

$ ssh oneadmin@<Главная>
$ exit
$ ssh oneadmin@<машина1>
$ ssh oneadmin@<Главная>
$ exit
$ exit
$ ssh oneadmin@<машина2>
$ ssh oneadmin@<Главная>
$ exit
$ exit
$ ssh oneadmin@<машина3>
$ ssh oneadmin@<Главная>
$ exit
$ exit
...

Стоить отметить важный момент, дело в том, что когда OpenNebula будет общаться с машинами, то будет использовать scp при этом, она будет указывать свой собственный адрес, к примеру

debian:/... <машина1>:/...

И тут может возникнуть ошибка, когда машина не дает доступа к себе, хотя мы и проверяли это на предыдущем шаге, дело в том, что в нашей машине ее название debian ссылается не на тот адрес, на который мы ранее выдавали SSH ключ, для того чтобы избежать такой ошибки необходимо в hosts прописать свой настоящий адрес сети:

 # nano /etc/hosts

Типичная картина (имя компьютера debian, без доменов)

127.0.0.1 localhost
127.0.1.1 debian

Как можно видеть принцип прост: <Адрес в сети> <Домен в сети> <Краткое имя> Допишем в этот файл адреса всех машин и присвоим им имена, чтобы каждый раз не искать по реестру адреса:

127.0.0.1 localhost
<Адрес главной машины> <Имя в сети>
<Адрес машины1> <Имя в сети>
<Адрес машины2> <Имя в сети>
...

Добавление Хоста в OpenNebula-Sunstone

Заходим в Infrastructure -> Hosts, нажимаем на большой плюс

Добавление хоста.png

Пишем в Hostname имя в локальной сети и нажимаем Create

Добавление хоста2.png

Проверяем подключен ли Хост

Добавление хоста3.png

Добавление Хоста в OpenNebula CLI

$ onehost create <машина1> -i kvm -v kvm
$ onehost list
ID NAME            CLUSTER   RVM      ALLOCATED_CPU      ALLOCATED_MEM STAT
1 localhost       default     0                  -                  - init

Через 20-60 секунд машина будет подключена:

$ onehost list
ID NAME            CLUSTER   RVM      ALLOCATED_CPU      ALLOCATED_MEM STAT
0 <машина1>          default     0       0 / 400 (0%)     0K / 7.7G (0%) on

Основные операции OpenNebula CLI

$ onehost delete <машина1> //удаление хоста <машина1>

Просмотреть информацию о хосте

$ show <машина1> 
HOST 0 INFORMATION
ID                    : 0
NAME                  : server
CLUSTER               : server
STATE                 : MONITORED
IM_MAD                : kvm
VM_MAD                : kvm
LAST MONITORING TIME  : 05/28 00:30:51

HOST SHARES
TOTAL MEM             : 7.3G
USED MEM (REAL)       : 4.4G
USED MEM (ALLOCATED)  : 1024M
TOTAL CPU             : 400
USED CPU (REAL)       : 28
USED CPU (ALLOCATED)  : 100
RUNNING VMS           : 1

LOCAL SYSTEM DATASTORE #0 CAPACITY
TOTAL:                : 468.4G
USED:                 : 150.7G
FREE:                 : 314.7G

MONITORING INFORMATION
ARCH="x86_64"
CPUSPEED="1700"
HOSTNAME="server"
HYPERVISOR="kvm"
IM_MAD="kvm"
MODELNAME="Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz"
NETRX="0"
NETTX="0"
RESERVED_CPU=""
RESERVED_MEM=""
VERSION="5.2.1"
VM_MAD="kvm"

WILD VIRTUAL MACHINES

NAME                                                      IMPORT_ID  CPU     MEMORY

VIRTUAL MACHINES

    ID USER     GROUP    NAME            STAT UCPU    UMEM HOST             TIME
    13 oneadmin oneadmin kvm1-13         runn  0.0   1024M server       8d 06h14

Изменение статуса хоста:

$ onehost disable <машина№> // деактивировать машину
$ onehost enable <машина№> // активировать машину
$ onehost offline <машина№> // полностью выключить машину

В случае, если необходимо обновить хосты до новой версии:

$ onehost sync --force //обновить все подключенные ноды
$  onehost sync host01,host02,host03... // поименное обновление только необходимых нодов

Добавление Виртуальной машины:

$ onehost importvm <Номер нода(0)> <Название ВМ(ttylinux)>
$ onevm list
ID USER     GROUP    NAME            STAT UCPU    UMEM HOST               TIME
 3 oneadmin oneadmin ttylinux        runn    0    590M <Название нода>  0d 01h02

Видео по установке

Ссылки