Главная » Виртуализация » OpenNebula: установка облачной платформы на Ubuntu 24.04

OpenNebula: установка облачной платформы на Ubuntu 24.04

OpenNebula — открытая платформа для частного облака. Она объединяет несколько серверов с KVM в один пул ресурсов. Пользователи получают ВМ из шаблонов через веб-интерфейс или API, а администратор управляет квотами, сетями, хранилищами и правами. По задачам OpenNebula ближе к «маленькому AWS у себя», чем к Proxmox, который удобнее для управления конкретными серверами.

Актуальная ветка на октябрь 2026 года — OpenNebula 7.4. Бесплатная версия называется Community Edition (CE), пакеты лежат в открытом репозитории downloads.opennebula.io. Фронтенд и узлы официально поддерживаются на Ubuntu 24.04, Debian 12/13 и AlmaLinux/RHEL 9 и 10. CentOS 6 из старой версии этой статьи давно не поддерживается.

Для знакомства хватит скрипта miniONE: одна команда, и через 10–20 минут на одном сервере работает фронтенд с локальным KVM-узлом. Для рабочей установки ставим фронтенд из репозитория на MariaDB, а затем добавляем узлы KVM. Оба варианта разобраны ниже на Ubuntu 24.04.

Из чего состоит облако OpenNebula

  • Фронтенд (Front-end) — управляющий сервер. На нём работают демон oned и планировщик, база данных, веб-интерфейс Sunstone (FireEdge), а также OneFlow (сервисы из нескольких ВМ) и OneGate (обмен данными между ВМ и облаком).
  • Узлы (Hosts) — серверы с KVM и libvirt, на которых запускаются ВМ. Фронтенд управляет ими по SSH от пользователя oneadmin.
  • Хранилища (Datastores) — system (диски запущенных ВМ), image (образы) и files. По умолчанию лежат в /var/lib/one/datastores/.
  • Виртуальные сети — описание моста или VLAN на узлах и пул адресов для ВМ.

Фронтенд может одновременно быть и узлом — так работает miniONE. В продакшене их обычно разделяют.

Что изменилось с 2017 года

Старая версия статьи описывала OpenNebula 5.x на CentOS 6. Сейчас это совсем другая установка:

Тогда (5.x, CentOS 6)Сейчас (7.x)
ОСCentOS 6Ubuntu 24.04, Debian 12/13, AlmaLinux/RHEL 9 и 10
Репозиторийopennebula.org/repo, gpgcheck=0downloads.opennebula.io/repo/<версия>/, подпись обязательна
Веб-интерфейсSunstone на RubySunstone на FireEdge (Ruby Sunstone удалён в 7.0)
Запуск службservice opennebula startsystemctl enable --now ...
РедакцииОднаCommunity Edition и Enterprise Edition
Быстрая установкаНетminiONE, готовые приложения в Marketplace

Главное практическое отличие: отключать проверку подписи пакетов (gpgcheck=0, как было в старой инструкции) больше не нужно и нельзя. Ключ публикуется официально.

Вариант 1. miniONE для теста

miniONE — официальный скрипт, который ставит фронтенд и локальный узел KVM на один сервер. Он создаёт сеть и шаблон тестовой ВМ и загружает образ из Marketplace. Это стенд, а не продакшен: скрипт меняет сетевые настройки, правила iptables и ставит много пакетов. Запускайте его только на чистом сервере или ВМ с вложенной виртуализацией.

Требования по документации 7.x: чистая Ubuntu 22.04/24.04, Debian 12/13 или AlmaLinux 9/10, доступ root, SSH на порту 22, процессор с VT-x/AMD-V. Требования к памяти и диску в разных версиях документации отличаются, на 7.2 указаны 16 ГБ RAM и 80 ГБ свободного места. Сверьтесь со своей версией.

wget 'https://github.com/OpenNebula/minione/releases/latest/download/minione'
chmod +x minione
./minione -h            # список параметров
./minione --password 'ВашСложныйПароль'

В конце скрипт выведет адрес веб-интерфейса и данные для входа пользователя oneadmin, примерно так:

### Report
OpenNebula 7.x was installed
Sunstone is running on:
  http://203.0.113.10/
Use following to login:
  user: oneadmin
  password: ...

Если стенд стоит на сервере с публичным адресом, закройте порт 80 firewall-ом и заходите через SSH-туннель: ssh -L 8080:localhost:80 root@сервер, затем откройте http://localhost:8080/.

Вариант 2. Фронтенд на Ubuntu 24.04 вручную

Шаг 1. Подготовка

Нужна чистая Ubuntu 24.04 с постоянным IP и именем хоста, которое разрешается во всех узлах (DNS или /etc/hosts). Обновите систему:

apt update && apt full-upgrade -y
hostnamectl set-hostname one-fe.example.lan

Шаг 2. Репозиторий OpenNebula CE

mkdir -p /etc/apt/keyrings
wget -q -O- https://downloads.opennebula.io/repo/repo2.key \
  | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg

echo "deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/7.4/Ubuntu/24.04 stable opennebula" \
  > /etc/apt/sources.list.d/opennebula.list

apt update

Номер версии входит в адрес репозитория. Чтобы перейти на следующую ветку, нужно сменить его и пройти процедуру обновления из документации, включая миграцию базы командой onedb upgrade.

Шаг 3. База данных MariaDB

По умолчанию OpenNebula использует SQLite. Для продакшена документация рекомендует MySQL или MariaDB, причём сразу: переносить базу потом сложнее.

apt install -y mariadb-server

cat > /etc/mysql/mariadb.conf.d/60-opennebula.cnf <<'END'
[mysqld]
transaction-isolation = READ-COMMITTED
END
systemctl restart mariadb

mysql -u root <<'END'
CREATE DATABASE opennebula;
CREATE USER 'oneadmin'@'localhost' IDENTIFIED BY 'СложныйПарольБД';
GRANT ALL PRIVILEGES ON opennebula.* TO 'oneadmin'@'localhost';
FLUSH PRIVILEGES;
END

Уровень изоляции READ COMMITTED требует документация OpenNebula. В конфиге он сохраняется после перезапуска, в отличие от SET GLOBAL. Не забудьте базовую защиту MariaDB — см. настройку минимальной безопасности MySQL после установки.

Шаг 4. Пакеты фронтенда

apt install -y opennebula opennebula-fireedge opennebula-gate opennebula-flow

Что ставится:

  • opennebula — демон oned, планировщик и утилиты командной строки (onehost, onevm, onetemplate и другие);
  • opennebula-fireedge — веб-интерфейс Sunstone;
  • opennebula-gate — OneGate, через него ВМ сообщают о себе облаку;
  • opennebula-flow — OneFlow, сервисы из нескольких ВМ и автомасштабирование.

Шаг 5. Настройка базы и пароля oneadmin

Главный конфиг — /etc/one/oned.conf. Найдите блок DB и замените его:

DB = [ BACKEND = "mysql",
       SERVER  = "localhost",
       PORT    = 0,
       USER    = "oneadmin",
       PASSWD  = "СложныйПарольБД",
       DB_NAME = "opennebula",
       CONNECTIONS = 25,
       COMPARE_BINARY = "no" ]

При установке пакета для пользователя oneadmin генерируется случайный пароль в файле /var/lib/one/.one/one_auth. Чтобы задать свой, перепишите файл до первого запуска служб, позже это не сработает:

sudo -u oneadmin sh -c 'echo "oneadmin:ВашСложныйПароль" > /var/lib/one/.one/one_auth'
chmod 600 /var/lib/one/.one/one_auth

Права на oned.conf не меняйте: в нём лежит пароль от базы.

Шаг 6. Запуск и проверка

systemctl enable --now opennebula opennebula-fireedge opennebula-gate opennebula-flow

sudo -u oneadmin oneuser show
# примерно так:
# USER 0 INFORMATION
# ID              : 0
# NAME            : oneadmin
# GROUP           : oneadmin
# ...

ss -tlnp | grep -E '2633|2616|5030|2474'

Порты фронтенда:

ПортСлужбаКому открыть
2633oned, XML-RPC APIТолько фронтенду и доверенным системам
2616FireEdge (Sunstone)Администраторам и пользователям, через TLS-прокси
5030OneGateВиртуальным машинам
2474OneFlowТолько локально или администраторам

Веб-интерфейс будет доступен по адресу http://адрес-фронтенда:2616/fireedge/sunstone. Публиковать его в интернет по HTTP без шифрования нельзя: логин и пароль администратора облака пойдут открытым текстом. Поставьте перед ним Nginx с TLS-сертификатом и ограничьте доступ по адресам или VPN, а порт 2616 закройте снаружи.

Добавление узла KVM

Шаг 1. Пакеты на узле

На каждом узле (Ubuntu 24.04) подключите тот же репозиторий, что в шаге 2 фронтенда, и поставьте пакет узла:

apt update
apt install -y opennebula-node-kvm
systemctl restart libvirtd

Пакет ставит QEMU/KVM, libvirt, создаёт пользователя oneadmin и нужные правила sudo. Проверьте, что KVM доступен: ls -l /dev/kvm и grep -cE 'vmx|svm' /proc/cpuinfo.

Шаг 2. Сетевой мост

ВМ подключаются к Linux-мосту на узле. На Ubuntu 24.04 он настраивается в netplan, например /etc/netplan/01-br0.yaml:

network:
  version: 2
  ethernets:
    eno1:
      dhcp4: false
  bridges:
    br0:
      interfaces: [eno1]
      addresses: [192.168.10.21/24]
      routes:
        - to: default
          via: 192.168.10.1
      nameservers:
        addresses: [192.168.10.1]

Перед применением выставьте файлу права 600 (chmod 600 /etc/netplan/01-br0.yaml), иначе netplan предупредит, что конфиг доступен всем. Применяйте через netplan try: если связь пропадёт, настройки откатятся через 120 секунд. Имя моста должно совпадать на всех узлах.

Шаг 3. SSH между фронтендом и узлами

Фронтенд управляет узлами по SSH от oneadmin без пароля. Ключ генерируется при установке пакета на фронтенде, лежит в /var/lib/one/.ssh/. На фронтенде:

sudo -iu oneadmin
ssh-keyscan one-fe node01 node02 >> ~/.ssh/known_hosts
cat ~/.ssh/id_rsa.pub

Содержимое публичного ключа добавьте на каждом узле в /var/lib/one/.ssh/authorized_keys (владелец oneadmin, права 600). Скопируйте туда же файл known_hosts, чтобы узлы могли ходить друг к другу при миграции. Проверка с фронтенда:

sudo -u oneadmin ssh node01 hostname
# должно вывести имя узла без вопросов и пароля

Если вы управляете гипервизорами и через virt-manager, пригодится статья о virt-manager на удалённом хосте по SSH.

Шаг 4. Регистрация узла

sudo -u oneadmin onehost create node01 -i kvm -v kvm
sudo -u oneadmin onehost list
# примерно так:
#  ID NAME     CLUSTER   TVM  ALLOCATED_CPU   ALLOCATED_MEM   STAT
#   0 node01   default     0    0 / 800 (0%)   0K / 31G (0%)   on

В течение минуты статус должен смениться с init на on. Если появился err, смотрите /var/log/one/oned.log — почти всегда это SSH или отсутствие KVM на узле.

Первая виртуальная машина

Создайте виртуальную сеть на мосту br0. Файл lan.tmpl:

NAME    = "lan"
VN_MAD  = "bridge"
BRIDGE  = "br0"
AR      = [ TYPE = "IP4", IP = "192.168.10.100", SIZE = "50" ]
NETWORK_ADDRESS = "192.168.10.0"
NETWORK_MASK    = "255.255.255.0"
GATEWAY = "192.168.10.1"
DNS     = "192.168.10.1"
sudo -u oneadmin onevnet create lan.tmpl
sudo -u oneadmin onemarketapp list | grep -i debian
sudo -u oneadmin onemarketapp export <ID> debian -d default

Экспорт приложения из Marketplace создаёт образ и шаблон ВМ. Дальше удобнее в Sunstone: Templates → выбрать шаблон → Instantiate, указать сеть lan. Диск ВМ можно заменить своим qcow2 — про форматы и конвертацию в статье об образах дисков QEMU-KVM, Xen и VMDK.

Для живой миграции между узлами нужно общее хранилище (NFS, Ceph и т. п.). В простой конфигурации образы копируются на узел по SSH. Это работает, но миграция идёт с копированием дисков и занимает больше времени.

Бэкап фронтенда

Всё состояние облака хранится на фронтенде: база, конфиги и ключи. Если потерять фронтенд без копии, ВМ на узлах продолжат работать, но управлять ими будет нечем. Минимальный набор для резервного копирования:

  • дамп базы: onedb backup (сохраняет базу в файл, параметры подключения берёт из oned.conf) или обычный mariadb-dump opennebula;
  • каталог /etc/one/ — все конфиги служб;
  • каталог /var/lib/one/.one/ и /var/lib/one/.ssh/ — ключи и учётные данные oneadmin;
  • образы из datastore default, если они не лежат на отдельном общем хранилище.
sudo -u oneadmin onedb backup /var/backups/one-$(date +%F).sql
tar czf /var/backups/one-etc-$(date +%F).tar.gz /etc/one /var/lib/one/.one /var/lib/one/.ssh

Храните копии вне фронтенда и раз в квартал проверяйте восстановление на тестовой машине.

Отличия для Debian и AlmaLinux

Пакеты и команды одинаковые, меняется только подключение репозитория и способ настройки сети.

Ubuntu 24.04 / Debian 12–13AlmaLinux / RHEL 9–10
Репозиторий/etc/apt/sources.list.d/opennebula.list, путь .../7.4/Ubuntu/24.04 или .../7.4/Debian/13/etc/yum.repos.d/opennebula.repo, baseurl=https://downloads.opennebula.io/repo/7.4/RedHat/$releasever/$basearch
Дополнительно—crb enable перед установкой
Установкаapt installdnf install (те же имена пакетов)
Мост на узлеnetplan (Ubuntu), /etc/network/interfaces (Debian)NetworkManager: nmcli connection add type bridge ...
Конфиг MariaDB/etc/mysql/mariadb.conf.d//etc/my.cnf.d/

Файл репозитория для AlmaLinux:

[opennebula]
name=OpenNebula Community Edition
baseurl=https://downloads.opennebula.io/repo/7.4/RedHat/$releasever/$basearch
enabled=1
gpgkey=https://downloads.opennebula.io/repo/repo2.key
gpgcheck=1
repo_gpgcheck=1

SELinux на AlmaLinux отключать целиком не нужно. Если что-то блокируется, смотрите ausearch -m avc -ts recent и решайте конкретную проблему.

Типичные проблемы

СимптомПричинаРешение
Узел в статусе errНет SSH без пароля от oneadmin или узел не в known_hostsПроверить sudo -u oneadmin ssh node01, поправить ключи
oned не стартует после правки конфигаОшибка в блоке DB или нет доступа к MariaDBjournalctl -u opennebula, /var/log/one/oned.log, проверить логин в MariaDB
Не подходит пароль oneadmin в Sunstoneone_auth изменили после первого запускаСменить пароль командой oneuser passwd 0 'новый'
ВМ висит в PENDINGНет узла в статусе on или не хватает ресурсов/места в datastoreonehost list, onedatastore list, причина в onevm show ID
ВМ в FAILURE при запускеНет моста на узле или не тот BRIDGE в сетиСравнить ip -br link на узле и шаблон сети
apt: ошибка подписи репозиторияКлюч не скачан или неверный путь в signed-byПовторить импорт ключа в /etc/apt/keyrings/opennebula.gpg

Если вам нужен не облачный портал, а просто несколько серверов с ВМ под управлением администратора, проще взять Proxmox — см. установку Proxmox VE на свой сервер.

Частые вопросы

Чем OpenNebula отличается от Proxmox?

Proxmox — гипервизор с веб-интерфейсом для администратора: вы управляете конкретными узлами и ВМ. OpenNebula — слой облака поверх гипервизоров: группы, квоты, каталог шаблонов, самообслуживание пользователей, API. Если ВМ создаёте только вы, Proxmox проще. Если нужен портал для команд или клиентов, лучше подходит OpenNebula.

Чем Community Edition отличается от Enterprise?

CE бесплатна и собирается из того же открытого кода. Enterprise Edition доступна по подписке и включает дополнительные корректирующие выпуски, проверенные сборки и поддержку. Для лабораторий и небольших облаков хватает CE, но обновления в ней выходят реже.

Куда делся старый Sunstone на Ruby?

Его удалили в OpenNebula 7.0. Теперь веб-интерфейс Sunstone работает на сервере FireEdge (пакет opennebula-fireedge, порт 2616). Старые инструкции с opennebula-sunstone и портом 9869 для 7.x не подходят.

Можно ли поставить фронтенд и узел на один сервер?

Да, так и работает miniONE. Для тестов и небольших стендов это нормально. В продакшене лучше вынести фронтенд отдельно: проблема на гипервизоре тогда не уронит управление облаком.

Нужен ли SQLite или сразу MariaDB?

SQLite подходит для miniONE и экспериментов. Для любого облака, которое будет жить дольше недели, сразу ставьте MariaDB или MySQL: переносить базу с SQLite потом сложнее, а под нагрузкой SQLite работает медленнее.

Как обновить OpenNebula до новой версии?

Остановите службы и сделайте бэкап базы и каталога /etc/one. Затем смените версию в адресе репозитория, обновите пакеты и выполните onedb upgrade. Точный порядок для каждой версии описан в разделе Upgrade документации docs.opennebula.io. Перескакивать через несколько версий без чтения заметок к выпуску не стоит.