OpenNebula — открытая платформа управления частным облаком. Она устанавливается на обычные серверы с Linux, объединяет их в пул и позволяет создавать виртуальные машины из шаблонов, выдавать доступ пользователям через веб-интерфейс и API, учитывать ресурсы и переносить гостей между хостами. Важно понимать границу ответственности: OpenNebula не является гипервизором. Машины запускаются через KVM и libvirt, LXD или vSphere, а платформа управляет образами, сетями, шаблонами, квотами и жизненным циклом.

Из каких частей состоит облако

Фронтенд — управляющий узел. На нём работают демон oned и веб-интерфейс Sunstone, а также хранится база с описанием ресурсов. Гипервизоры — отдельные хосты, которые подключаются к фронтенду по SSH. Пользователь oneadmin должен существовать на всех узлах с одинаковым UID и иметь беспарольный вход с фронтенда на гипервизоры.

Образы и диски удобнее держать на общем хранилище: NFS, Ceph или другом решении, доступном всем хостам. Без общей файловой системы живая миграция и часть операций с дисками будут невозможны. База по умолчанию — SQLite, но для нескольких администраторов и десятков хостов разумнее MariaDB или PostgreSQL.

Пользователи и группы описываются внутри платформы, а не в системных файлах Linux. Для каждого пользователя или группы можно задать квоты на процессор, память и диски. Это удобно в учебной лаборатории: студент получает доступ к Sunstone, создаёт машины в разрешённом диапазоне и не видит чужие ресурсы.

Установка управляющего узла

Пакеты ставятся из официального репозитория проекта: версия из репозитория дистрибутива может отставать от актуальной ветки. После подключения репозитория установите сервер, веб-интерфейс и драйвер для KVM.

sudo apt install opennebula opennebula-sunstone opennebula-node-kvm
sudo systemctl enable --now opennebula opennebula-sunstone
sudo -u oneadmin onehost list
sudo -u oneadmin oneimage list

Служба opennebula запускает oned, а opennebula-sunstone — веб-интерфейс. Проверьте, что порт 2633 доступен только доверенным сетям: через него идёт XML-RPC API. Веб-интерфейс по умолчанию слушает 9869 и тоже не должен смотреть в интернет без обратного прокси и TLS.

Первый гипервизор

На хосте KVM установите пакет opennebula-node-kvm, qemu и libvirt. Затем настройте SSH-ключи для oneadmin и добавьте узел командой onehost create. Флаг --im задаёт драйвер мониторинга, --vm — драйвер виртуализации.

sudo -u oneadmin ssh-keygen -t ed25519
sudo -u oneadmin ssh-copy-id oneadmin@kvm01
sudo -u oneadmin onehost create kvm01 --im kvm --vm kvm
sudo -u oneadmin onehost sync --force

Команда onehost sync копирует на узел скрипты драйверов из /var/lib/one/remotes. Если после добавления хост остаётся в состоянии INIT, смотрите onehost show и журнал /var/log/one/oned.log: чаще всего причина в SSH, несовпадении UID или отсутствии libvirt.

Образ, сеть и шаблон

Образ можно создать из qcow2-файла. Сеть описывается диапазоном адресов и мостом; для изоляции используйте VLAN или security groups. Шаблон объединяет образ, размеры, сеть и параметры contextualization.

sudo -u oneadmin oneimage create --name ubuntu --path ubuntu.qcow2 -d default --type OS
sudo -u oneadmin onevnet create private.net
sudo -u oneadmin onetemplate create ubuntu-web.one
sudo -u oneadmin onetemplate instantiate ubuntu-web --name web01

В файле шаблона достаточно указать CPU, MEMORY, DISK, NIC и блок CONTEXT с SSH-ключом. Cloud-init внутри гостя получит адрес, имя хоста и ключ, поэтому образ должен содержать соответствующий пакет. После запуска проверьте onevm list и onevm show web01.

Настройки демона

Основной файл — /etc/one/oned.conf. Для небольшой лаборатории допустима SQLite, но перед изменением параметров сделайте копию файла. Интервалы мониторинга не стоит делать слишком маленькими: каждый опрос создаёт нагрузку на хосты и базу.

DB = [ BACKEND = "sqlite" ]
HOST_MONITORING_INTERVAL = 20
VM_POLLING_INTERVAL = 5
LOG = [ SYSTEM = "file", DEBUG_LEVEL = 3 ]

После правки перезапустите службу и убедитесь, что oned поднялся без ошибок. Если планируется несколько фронтендов, SQLite не подходит: нужна сетевая СУБД и отдельная настройка отказоустойчивости.

Хранилище и миграция

Для продуктивной среды выберите общий datastore. Локальные диски годятся для тестов, но привязаны к конкретному хосту. Живая миграция выполняется командой onevm migrate web01 kvm02 --live и требует общего хранилища, совместимой конфигурации CPU и достаточной памяти на целевом узле.

Не забывайте про резервное копирование: снимок виртуальной машины не заменяет бэкап. Копируйте образы и дамп базы OpenNebula, а для Ceph используйте штатные средства снапшотов и репликации. Проверьте, что целевой хост видит те же datastore, иначе миграция завершится ошибкой на этапе подготовки диска.

Диагностика

Начинайте с состояния хоста и виртуальной машины, затем смотрите журналы. Подробный вывод onevm show показывает историю состояний и параметры, а XML-вывод -x удобен для машинного разбора штатным парсером. Ошибки драйверов почти всегда видны в oned.log.

sudo -u oneadmin onehost show kvm01
sudo -u oneadmin onevm show web01 | sed -n '1,40p'
sudo tail -n 100 /var/log/one/oned.log
sudo journalctl -u libvirtd -n 50 --no-pager

Если гость не получает сеть, проверьте мост на хосте через ip link, правила фильтрации и то, что адрес не занят. Если машина запускается, но недоступна по SSH, откройте консоль в Sunstone и проверьте cloud-init внутри гостя.

Отдельно проверьте время на хостах и фронтенде: рассинхронизация ломает журналы и мешает TLS. Версии qemu и libvirt на всех гипервизорах должны совпадать, иначе живая миграция может завершиться ошибкой уже после выделения ресурсов.

Чек-лист перед продуктивом

  • Настроены NTP или chrony на всех узлах.
  • oneadmin имеет одинаковый UID и беспарольный SSH на гипервизоры.
  • Общее хранилище доступно с каждого хоста и проверено на скорость.
  • База вынесена в MariaDB или PostgreSQL, настроены резервные копии.
  • Веб-интерфейс закрыт обратным прокси с TLS, API ограничен межсетевым экраном.
  • Определены квоты пользователей и политика шаблонов.

Итог

OpenNebula даёт управляемое частное облако без привязки к одному гипервизору. Начните с фронтенда, одного KVM-хоста и общего datastore, затем добавьте сети, шаблоны и квоты. Главные источники проблем — SSH между узлами, хранилище и несовпадение версий драйверов, поэтому диагностику начинайте с onehost show и oned.log.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте