МИВК Многофункциональный
информационно-вычислительный
комплекс ОИЯИ

EN

Краткое руководство администратора

Введение

После выполнения данного руководства, администраторы будут иметь рабочую OpenNebula с графическим интерфейсом (Sunstone), один гипервизор (хост) и работающую виртуальную машину. Это полезно при настройке облака, быстро протестировать новые функции и в качестве базы для построения крупной инфраструктуры.

При установке существуют две отдельные роли: Frontend и Nodes. Frontend сервер будет выполнять услуги OpenNebula, и Nodes будут использоваться для реализации виртуальных машин. Пожалуйста, не нужно следовать этому руководству для создания одного хоста, сочетающего Frontend и Nodes в одном сервере. Рекомендуется создание виртуальных машин на хостах с виртуализацией. Чтобы проверить, поддерживает ваш хост расширения виртуализации, пожалуйста, выполните команду:

# grep -E 'svm|vmx' /proc/cpuinfo

Если нет никаких выходных данных, вероятно, виртуализация на сервере не настроена/включена.

Пакеты:​

  1. opennebula: Command Line Interface.
  2. opennebula-server: Main OpenNebula daemon, scheduler, etc.
  3. opennebula-sunstone: OpenNebula’s web GUI.
  4. opennebula-gate: OneGate server that enables communication between VMs and OpenNebula.
  5. opennebula-flow: OneFlow manages services and elasticity.
  6. opennebula-provision: OneProvision deploys new clusters on remote bare-metal cloud providers.
  7. opennebula-node-kvm: Meta-package that installs the oneadmin user, libvirt and kvm.
  8. opennebula-common: Common files for OpenNebula packages.
  9. opennebula-rubygems: Metapackage with dependency on all required Ruby gems.
  10. opennebula-rubygem-$NAME: Package with Ruby gem $NAME.
  11. opennebula-debuginfo: Package with debug information.
  12. opennebula-ruby: Ruby Bindings.
  13. opennebula-java: Java Bindings.
  14. python-pyone: Python Bindings.
  15. python3-pyone: Python3 Bindings.

Внимание!

Для того чтобы избежать проблем, рекомендуется отключить selinux во всех узлах, Nodes и Frontend.

 # vi /etc/sysconfig/selinux
...
SELINUX=disabled
...
# setenforce 0
# getenforce
Permissive

Внимание!

Некоторые команды могут завершиться неудачей в зависимости от iptables/firewalld конфигурации. Настройте брандмауэры для тестирования.

Установка Fronted

Примечание

Команды с префиксом # предназначены для запуска от root. Команды с префиксом $ должны выполняться от oneadmin.

Установка репозитория

# yum install epel-release

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

# cat << EOT > /etc/yum.repos.d/opennebula.repo

[opennebula]

SELINUX=disabled

name=opennebula

baseurl=http://downloads.opennebula.org/repo/5.10/CentOS/7/x86_64/

enabled=1

gpgcheck=0

EOT

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

Полная установка OpenNebula будет иметь как минимум opennebula- server и opennebula- sunstone пакеты

# yum install opennebula-server opennebula-sunstone opennebula-ruby opennebula-gate opennebula-flow

Необходимо выполнить install_gems, чтобы установить все зависимости. Выбрать CentOS/Redhat соответственно.

# /usr/share/one/install_gems

lsb_release command not found. If you are using a RedHat based distribution install redhat-lsb

Select your distribution or press enter to continue without

installing dependencies.

 1.Ubuntu/Debian

 2.CentOS/RedHat

Настройка и запуск служб

Существует два основных процесса, которые должны быть запущены, основная OpenNebula: oned, и графический пользовательский интерфейс: sunstone. Sunstone слушает только loopback-интерфейс по умолчанию по соображениям безопасности. Чтобы изменить его, нужно отредактировать файл /etc/one/sunstone-server.conf и изменить : host: 127.0.0.1 на : host: 0.0.0.0

Необходимо запустить службы:

# systemctl enable --now opennebula

# systemctl enable --now opennebula-sunstone

Настройка NFS

Примечание

Пропустите этот раздел, если не будет использоваться один сервер для Fronted и рабочего узла.

Экспорт /var/lib/one/ из frontend на рабочий узел. Чтобы сделать это, добавьте следующее в файл /etc/exports в frontend

/var/lib/one/ *(rw,sync,no_subtree_check,root_squash)

Обновить экспорта NFS, выполнив

# systemctl restart nfs.service

Настройка публичного SSH ключа

Для OpenNebula потребуется доступ по SSH от любого узла (включая frontend) к любому другому узлу

Добавить следующий код в ~/.ssh/config как oneadmin, это не запрос на добавление ключей в файл known_hosts

# su - oneadmin

$ cat << EOT > ~/.ssh/config

Host *

    StrictHostKeyChecking no

    UserKnownHostsFile /dev/null

EOT

$ chmod 600 ~/.ssh/config

Установка Nodes

Установка repo

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

# cat << EOT > /etc/yum.repos.d/opennebula.repo

[opennebula]

name=opennebula

baseurl=http://downloads.opennebula.org/repo/5.10/CentOS/7/x86_64/

enabled=1

gpgcheck=0

EOT

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

# yum install opennebula-node-kvm

После установки пакета необходимо перезагрусить службу libvirt

# systemctl restart libvirtd

Запуск необходимых служб:

# systemctl enable --now messagebus.service

# systemctl enable --now libvirtd.service

# systemctl enable --now nfs.service

Настройка сети

Внимание!

По умолчанию при установке virsh настраивает стандартный network interface, он может помешать дальнейшему процессу настройки, поэтому его необходимо удалить

# virsh net-list --all

# virsh net-destroy default

# virsh net-autostart --network default --disable

Резервное копирование всех файлов в этом разделе перед внесением изменений в них.

Должен быть основной интерфейс подключенный к мосту. Следующий пример будет с ens3, но имя интерфейса может различаться. В OpenNebula требования заключается в том, что название моста должно быть одинаковым во всех узлах.

Чтобы сделать это, замените /etc/sysconfig/network-scripts/ifcfg-ens3 :

DEVICE=ens3

BOOTPROTO=none

NM_CONTROLLED=no

ONBOOT=yes

TYPE=Ethernet

BRIDGE=br0

Далее нужно добавить новый /etc/sysconfig/network-scripts/ifcfg-br0 файл.

Если уже имеется DHCP на интерфейсе ens3, использовать необходимо шаблон:

DEVICE=br0

TYPE=Bridge

ONBOOT=yes

BOOTPROTO=dhcp

NM_CONTROLLED=no

Если используются статические IP:

DEVICE=br0

TYPE=Bridge

IPADDR=<YOUR_IPADDRESS>

NETMASK=<YOUR_NETMASK>

ONBOOT=yes

BOOTPROTO=static

NM_CONTROLLED=no

После внесенных изменений, необходимо перезагрузить сеть:

# systemctl restart network

Настройка NFS

Примечание

Пропустите этот раздел, если вы используете один сервер для Fronted и рабочего узла.

Организация экспорта хранилища данных. Добавить строки /etc/fstab в файл:

192.168.1.1:/var/lib/one/  /var/lib/one/  nfs   soft,intr,rsize=8192,wsize=8192,noauto

Примечание

Замените 192.168.1.1 на IP-адрес frontend.

Установить NFS:

# mount /var/lib/one/

Если приведенная выше команда не работает или зависает, это может быть проблема брандмауэра.

Основы использования

Примечание

Все операции в этом разделе возможно проделать, используя Sunstone вместо командной строки. Укажите адрес в браузере: http://frontend:9869

По умолчанию пароль для пользователя oneadmin можно найти в ~/.one/one_auth, который генерируется случайным образом на каждую установку.​

​​Взаимодействовать с OpenNebula нужно от учетной записи oneadmin в frontend. Будем считать все следующие команды выполняются от учетной записи. Войти как oneadmin выполнить:

su – oneadmin

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

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

Выполните эту команду для каждого из узлов. Замените localhost на имя вашего узла.

$ onehost create localhost -i kvm -v kvm -n dummy

Выполните команду onehost list , если возникли проблемы с выполнением команды, то скорей всего неправильно настроен ssh. Посмотреть можно здесь /var/log/one/oned.log

Добавление виртуальных ресурсов

Когда все заработало нужно создать сеть, образы и шаблоны виртуальной машины.

Для создания сети, необходимо создать файл шаблона mynetwork.one, который содержит:

NAME = "private"

BRIDGE = br0

AR = [

    TYPE = IP4,

    IP = 192.168.0.100,

    SIZE = 3

    ]

Примечание

Заменить диапазон адресов бесплатными IP в вашей сети. Можно добавить больше одного диапазона адресов.

Можно двигаться вперед и создавать ресурсы в OpenNebula:

$ onevnet create mynetwork.one

$ oneimage create --name "CentOS-7-one-4.8" \

    --path http://marketplace.c12g.com/appliance/53e7bf928fb81d6a69000002/download \

    --driver qcow2 \

    -d default

$ onetemplate create --name "CentOS-7" \

    --cpu 1 --vcpu 1 --memory 512 --arch x86_64 \

    --disk "CentOS-7-one-4.8" \

    --nic "private" \

    --vnc --ssh --net_context

Примечание

Если при выполнении команды ‘oneimage create’ появляется сообщение о дефиците места в хранилище данных, необходимо отключить проверку хранилища данных в OpenNebula: т.е. в файле /etc/one/oned.conf параметру DATASTORE_CAPACITY_CHECK присвоить значение «no». Необходимо перезапустить oned сервис после изменения этого параметра.

Нужно будет подождать, пока образ не будет готов к использованию. Проверять состояние образа с помощью команды oneimage list .

Для того, чтобы динамически добавить SSH-ключи на виртуальные машины мы должны добавить наш ключ SSH для пользовательского шаблона, путем редактирования данного шаблона:

$ EDITOR=vi oneuser update oneadmin

Добавьте новую строку, как в следующем шаблоне:

SSH_PUBLIC_KEY="ssh-dss AAAAB3NzaC1kc3MAAACBANBWTQmm4Gt..."

Заменить значение выше:

cat ~/.ssh/id_dsa.pub

Запуск виртуальной машины

Для запуска виртуальной машины вам нужно будет инстанцировать шаблон

$ onetemplate instantiate "CentOS-7"

Выполнив onevm list , можно посмотреть в каком состоянии находится виртуальная машина: PENDING, PROLOG, RUNNING. Ошибки можно посмотреть в файле /var/log/one/<VM_ID>.log

Примечание

Если достаточно долго показан статус pend, можно посмотреть почему: onevm show <vmid>|grep ^SCHED_MESSAGE. Если он сообщает, что хранилище данных не обладает достаточным потенциалом для виртуальной машины, вы можете запустить ручное развертывания, выполнив: onevm deploy <vmid> <hostid>.