Краткое руководство администратора
Введение
После выполнения данного руководства, администраторы будут иметь рабочую OpenNebula с графическим интерфейсом (Sunstone), один гипервизор (хост) и работающую виртуальную машину. Это полезно при настройке облака, быстро протестировать новые функции и в качестве базы для построения крупной инфраструктуры.
При установке существуют две отдельные роли: Frontend и Nodes. Frontend сервер будет выполнять услуги OpenNebula, и Nodes будут использоваться для реализации виртуальных машин. Пожалуйста, не нужно следовать этому руководству для создания одного хоста, сочетающего Frontend и Nodes в одном сервере. Рекомендуется создание виртуальных машин на хостах с виртуализацией. Чтобы проверить, поддерживает ваш хост расширения виртуализации, пожалуйста, выполните команду:
Если нет никаких выходных данных, вероятно, виртуализация на сервере не настроена/включена.
Пакеты:
- opennebula: Command Line Interface.
- opennebula-server: Main OpenNebula daemon, scheduler, etc.
- opennebula-sunstone: OpenNebula’s web GUI.
- opennebula-gate: OneGate server that enables communication between VMs and OpenNebula.
- opennebula-flow: OneFlow manages services and elasticity.
- opennebula-provision: OneProvision deploys new clusters on remote bare-metal cloud providers.
- opennebula-node-kvm: Meta-package that installs the oneadmin user, libvirt and kvm.
- opennebula-common: Common files for OpenNebula packages.
- opennebula-rubygems: Metapackage with dependency on all required Ruby gems.
- opennebula-rubygem-$NAME: Package with Ruby gem
$NAME
. - opennebula-debuginfo: Package with debug information.
- opennebula-ruby: Ruby Bindings.
- opennebula-java: Java Bindings.
- python-pyone: Python Bindings.
- python3-pyone: Python3 Bindings.
Внимание!
Для того чтобы избежать проблем, рекомендуется отключить selinux во всех узлах, Nodes и Frontend.
…
SELINUX=disabled
…
# setenforce 0
# getenforce
Permissive
Внимание!
Некоторые команды могут завершиться неудачей в зависимости от iptables/firewalld конфигурации. Настройте брандмауэры для тестирования.
Установка Fronted
Примечание
Команды с префиксом # предназначены для запуска от root. Команды с префиксом $ должны выполняться от oneadmin.
Установка репозитория
Добавить OpenNebula репозиторий
[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 пакеты
Необходимо выполнить install_gems, чтобы установить все зависимости. Выбрать CentOS/Redhat соответственно.
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-sunstone
Настройка NFS
Примечание
Пропустите этот раздел, если не будет использоваться один сервер для Fronted и рабочего узла.
Экспорт /var/lib/one/ из frontend на рабочий узел. Чтобы сделать это, добавьте следующее в файл /etc/exports в frontend
Обновить экспорта NFS, выполнив
Настройка публичного SSH ключа
Для OpenNebula потребуется доступ по SSH от любого узла (включая frontend) к любому другому узлу
Добавить следующий код в ~/.ssh/config как oneadmin, это не запрос на добавление ключей в файл known_hosts
$ cat << EOT > ~/.ssh/config
Host *
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
EOT
$ chmod 600 ~/.ssh/config
Установка Nodes
Установка repo
Добавить OpenNebula репозитории:
[opennebula]
name=opennebula
baseurl=http://downloads.opennebula.org/repo/5.10/CentOS/7/x86_64/
enabled=1
gpgcheck=0
EOT
Установка необходимых пакетов
После установки пакета необходимо перезагрусить службу libvirt
Запуск необходимых служб:
# systemctl enable –now libvirtd.service
# systemctl enable –now nfs.service
Настройка сети
Внимание!
По умолчанию при установке virsh настраивает стандартный network interface, он может помешать дальнейшему процессу настройки, поэтому его необходимо удалить
# virsh net-destroy default
# virsh net-autostart –network default –disable
Резервное копирование всех файлов в этом разделе перед внесением изменений в них.
Должен быть основной интерфейс подключенный к мосту. Следующий пример будет с ens3, но имя интерфейса может различаться. В OpenNebula требования заключается в том, что название моста должно быть одинаковым во всех узлах.
Чтобы сделать это, замените /etc/sysconfig/network-scripts/ifcfg-ens3 :
BOOTPROTO=none
NM_CONTROLLED=no
ONBOOT=yes
TYPE=Ethernet
BRIDGE=br0
Далее нужно добавить новый /etc/sysconfig/network-scripts/ifcfg-br0 файл.
Если уже имеется DHCP на интерфейсе ens3, использовать необходимо шаблон:
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=dhcp
NM_CONTROLLED=no
Если используются статические IP:
TYPE=Bridge
IPADDR=<YOUR_IPADDRESS>
NETMASK=<YOUR_NETMASK>
ONBOOT=yes
BOOTPROTO=static
NM_CONTROLLED=no
После внесенных изменений, необходимо перезагрузить сеть:
Настройка NFS
Примечание
Пропустите этот раздел, если вы используете один сервер для Fronted и рабочего узла.
Организация экспорта хранилища данных. Добавить строки /etc/fstab в файл:
Примечание
Замените 192.168.1.1 на IP-адрес frontend.
Установить NFS:
Если приведенная выше команда не работает или зависает, это может быть проблема брандмауэра.
Основы использования
Примечание
Все операции в этом разделе возможно проделать, используя Sunstone вместо командной строки. Укажите адрес в браузере: http://frontend:9869
По умолчанию пароль для пользователя oneadmin можно найти в ~/.one/one_auth, который генерируется случайным образом на каждую установку.
Взаимодействовать с OpenNebula нужно от учетной записи oneadmin в frontend. Будем считать все следующие команды выполняются от учетной записи. Войти как oneadmin выполнить:
Добавление хоста
Для запуска виртуальных машин, необходимо зарегистрировать рабочий узел для OpenNebula.
Выполните эту команду для каждого из узлов. Замените localhost на имя вашего узла.
Выполните команду onehost list , если возникли проблемы с выполнением команды, то скорей всего неправильно настроен ssh. Посмотреть можно здесь /var/log/one/oned.log
Добавление виртуальных ресурсов
Когда все заработало нужно создать сеть, образы и шаблоны виртуальной машины.
Для создания сети, необходимо создать файл шаблона mynetwork.one, который содержит:
BRIDGE = br0
AR = [
TYPE = IP4,
IP = 192.168.0.100,
SIZE = 3
]
Примечание
Заменить диапазон адресов бесплатными IP в вашей сети. Можно добавить больше одного диапазона адресов.
Можно двигаться вперед и создавать ресурсы в OpenNebula:
–path http://marketplace.c12g.com/appliance/53e7bf928fb81d6a69000002/download \
–driver qcow2 \
-d default
–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 для пользовательского шаблона, путем редактирования данного шаблона:
Добавьте новую строку, как в следующем шаблоне:
Заменить значение выше:
Запуск виртуальной машины
Для запуска виртуальной машины вам нужно будет инстанцировать шаблон
Выполнив onevm list , можно посмотреть в каком состоянии находится виртуальная машина: PENDING, PROLOG, RUNNING. Ошибки можно посмотреть в файле /var/log/one/<VM_ID>.log
Примечание
Если достаточно долго показан статус pend, можно посмотреть почему: onevm show <vmid>|grep ^SCHED_MESSAGE. Если он сообщает, что хранилище данных не обладает достаточным потенциалом для виртуальной машины, вы можете запустить ручное развертывания, выполнив: onevm deploy <vmid> <hostid>.