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

Введение

После выполнения данного руководства, администраторы будут иметь рабочую 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>.