Вторник, 26 октября 2021 19:00

Установка OpenNebula на Astra Linux. Альтернатива Hyper-V под Linux. Часть 1.

Россия
Оцените материал
(0 голосов)

Сегодня мы рассмотрим установку системы облачной виртуализации OpenNebula, которую можно использовать как альтернативу Hyper-V под Astra Linux.

OpenNebula – облачная платформа, главным элементом которой является кластер. К кластеру можно подключить до 1024 улов (node). Вы можете использовать множество кластеров и управлять ими из одной панели управления. Управление кластерами, узлами, виртуальными машинами и сетями, и всеми элементами возможно, как из командной строки, так и с помощью удобного web-интерфейса.

При этом OpenNebula не потребляет много ресурсов, сама служба управления кластером - FrontEnd потребует около 1Гб оперативной памяти, и на одном сервере вы можете установить сервер управления кластерами и узел, на котором будут работать виртуальные машины.

Мы будем использовать общее (shared) хранилище и таким образом избавимся от необходимости использовать SSH, что позволит почти мгновенно запускать и останавливать виртуальные машины на нашем локальном узле (host).

Сегодня мы рассмотрим установку OpenNebula на один сервер, и создадим и запустим виртуальную машину под Astra Linux.

Предварительная настройка сети

Для работы с OpenNebula на сервере нам потребуется как минимум два сетевых интерфейса. Это обязательное требование!

eth0 – интерфейс управления – management, через него будет производится управление и доступ к серверу.

eth1 – интерфейс на котором будут автоматически создаваться сетевые мосты (bridge) для виртуальных сетей.

Если вы настраиваете тестовый стенд, например, на ноутбуке, я рекомендую подключить usb-сетевой адаптер.

Для начала настроим сеть, если сеть у вас уже настроена, проверьте настройки на соответствие:

sudo mcedit /etc/network/interfaces.d/eth0

 

auto eth0
allow-hotplug etho
iface eth0 inet static
address 192.168.1.240
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 77.88.8.8 77.88.8.1

 

sudo mcedit /etc/network/interfaces.d/eth1

 

auto eth1
allow-hotplug eth1
iface eth1 inet manual

Для сервера нужно задавать статический сетевой адрес, чтобы в дальнейшем не возникло проблем в случае, если DHCP-сервер выйдет из строя или раздаст ip-адрес сервера другому устройству!

Обратите внимание! На интерфейсе eth1 мы не прописываем ip адрес, так как он будет включен в автоматически создаваемый сетевой мост (bridge) для виртуальных машин.

Добавление репозитория OpenNebula в apt

В стандартном репозитории Astra Linux отсутствуют пакеты для OpenNebula, так что придется пользоваться официальным репозиторием:

Создадим файл

sudo mcedit /etc/apt/sources.list.d/opennebula.list

С содержимым

deb https://downloads.opennebula.io/repo/6.0/Debian/9 stable opennebula

Обновим apt

sudo apt-get update

Вы можете получить ошибку:

W: Репозиторий «https://downloads.opennebula.io/repo/6.0/Debian/9 stable Release» не содержит файла Release.
N: Данные из этого репозитория нельзя аутентифицировать, и поэтому потенциально из небезопасно использовать.
N: Смотрите справочную страницу apt-secure(8) о создании репозитория и настройке пользователя.
E: Не удалось получить https://downloads.opennebula.io/repo/6.0/Debian/9/dists/stable/opennebula/binary-i386/Packages  server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
E: Некоторые индексные файлы не скачались. Они были проигнорированы или вместо них были использованы старые версии.

Она связана с истекшим корневым сертификатом LetsEncrypt и и все еще всплывает на некоторых серверах!

Давайте её исправим.

Как временное решение можно временно отключить проверку сертификатов в apt.

Откроем файл:

sudo mcedit /etc/apt/apt.conf.d/99-astra-linux

И добавим в конец файла строки: 

Acquire::https::Verify-Peer "false";
// Do not verify that certificate name matches server name
Acquire::https::Verify-Host "false";

Теперь эта ошибка должна исчезнуть.

Добавим GPG ключи для репозитория OpenNebula.

Добавление GPG ключей для репозитория OpenNebula

Установим

sudo apt -y install debian-keyring curl

Установим ключи

wget --no-check-certificate -O- https://downloads.opennebula.io/repo/repo.key | sudo apt-key add -

Запустим

sudo apt-get update

На этот раз обновление прошло без проблем!

Установка Node.js

Для работы OpenNebula необходим Node.js! Его установку мы уже рассматривали в этой статье.

Установка пакетов OpenNebula

sudo apt-get -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision

Дождемся окончания установки всех пакетов

Установка пароля администратора web-интерфейса OpenNebula

Во время установки OpenNebula был создан пользователь oneadmin. Создадим для него пароль. Его мы будем использовать для входа в админ панель!

sudo -u oneadmin /bin/sh
echo "oneadmin:Pa$$w0rd" > /var/lib/one/.one/one_auth
exit

Запуск служб 

Запустим сервисы OpenNebula

sudo systemctl start opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow

Проверим что все работает нормально.

Обратите внимание! Запуск всех команд для работы с OpenNebula из консоли обязательно нужно запускать с использованием sudo!

sudo oneuser show

 

USER 0 INFORMATION
ID              : 0
NAME            : oneadmin
GROUP           : oneadmin
PASSWORD        : 97c94ebe5d7ХХХХХХХХХХХХХХХХХХХХХХХХХ73c3c150e2faa3d14c9da6
AUTH_DRIVER     : core
ENABLED         : Yes
 
TOKENS
 
USER TEMPLATE
TOKEN_PASSWORD="a7a980501e1ff8f1ХХХХХХХХХХХХХХХХХХХХХХ7ef30a152ea1a59ad286ce965b"
 
VMS USAGE & QUOTAS
 
VMS USAGE & QUOTAS - RUNNING
 
DATASTORE USAGE & QUOTAS
 
NETWORK USAGE & QUOTAS
 
IMAGE USAGE & QUOTAS

Всё в порядке.

Доступ к панели управления OpenNebula

Откроем адрес:

http://192.168.1.240:9869/

Где 192.168.1.240 адрес нашего сервера

Откроется страница

2021-10-18_12-35-03.png 

Войдём используя логин и пароль:

oneadmin 
Pa$$w0rd

Откроется страница

2021-10-18_12-36-59.png

Вот мы и установили OpenNebula на наш сервер!

Установка узла OpenNebula

Для запуска виртуальных машин мы должны добавить хотя бы один узел (node) в кластер OpenNebula. Узлы так же называются хостами (host). Кластер автоматически создается при установке облачной платформы.

В одном кластере может быть до 1024 узлов!

Установим пакет:

apt -y install opennebula-node-kvm

На этом установка узла на локальный сервер закончена!

Добавление узла в кластер

Запустим:

sudo onehost create localhost -i kvm -v kvm

Проверим список:

sudo onehost list
  ID NAME                                                                                                      CLUSTER    TVM      ALLOCATED_CPU      ALLOCATED_MEM STAT
   0 localhost                                                                                                 default      0                  -                  - init

Узлу потребуется некоторое время, для инициализации.  

sudo onehost list
  ID NAME                                                                                                      CLUSTER    TVM      ALLOCATED_CPU      ALLOCATED_MEM STAT
   0 localhost                                                                                                 default      0      0 / 800 (0%)     0G / 15.7G (0%) on

Локальный хост был успешно добавлен.

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

Для начала мы просто создадим виртуальную сеть, через которую посредством сетевого моста, виртуальные машину смогут использовать ресурсы физической локальной сети и Интернет. Мы выделим этой сети пять адресов из нашей ЛВС.

Обратите внимание, что мы используем интерфейс eth1.

Если вы укажите eth0 то этот интерфейс автоматом будет включен в сетевой мост и при запуске виртуальной машины вы потеряете соединение с сервером!

А так как сетевые мосты создаются и удаляются автоматически это приведет к непредсказуемым результатам! Поэтому, чтобы гарантировать доступ к управлению сервером, нужно использовать отдельный интерфейс для управления!

Создадим файл для шаблона сети: 

cd ~
mcedit vm1.tpl

 

NAME    = "LAN"
VN_MAD  = "bridge"
BRIDGE  = "br0"
BRIDGE_TYPE="linux"
PHYDEV  = "eth1"

AR=[
    TYPE = "IP4",
    IP   = "192.168.1.241",
    SIZE = "5"
]

DESCRIPTION = "LAN network for VM"

Обратите внимание – OpenNebula не выдает IP адреса! Вместо этого каждой виртуальной машине присваивается свой MAC адрес, основанный на назначенном ip адресе! Поэтому вам в любом случае придется или настраивать статический ip-адрес на виртуальной машине или добавить её MAC на уже настроенный в ЛВС DHCP-сервер. Узнать назначенный виртуальной машине MAC-адрес можно в свойствах виртуальной машины.

В отдельной статье мы рассмотрим по какому принципу генерируются mac-адреса для виртуальных машин!

Создадим саму виртуальную сеть:

sudo onevnet create vm1.tpl
ID: 0

Скопируем iso-файл с образом Astra Linux на сервер в папку 

/var/tmp/ 

Вы можете использовать любой удобный для вас способ.

Изменим права доступа и группу для файла с образом 

sudo chown oneadmin orel-current.iso
sudo chgrp oneadmin orel-current.iso

Настройка общего хранилища

Так как облако будет работать на локальной машине нам нужно создать общее (shared) хранилище. В этом случае не будет использовать SSH и скорость работы с образами значительно вырастет!

Создадим системное (system) хранилище

Создадим файл настроек:

cd ~
mcedit sysstor.tpl

 С содержимым:

NAME = system_shared
TM_MAD = shared
TM_MAD_SYSTEM = shared
TYPE = SYSTEM_DS

Создадим само хранилище: 

onedatastore create sysstor.tpl
ID: 103

Проверим: 

onedatastore list
  ID NAME                                                                                                             SIZE AVA CLUSTERS IMAGES TYPE DS      TM      STAT
 103 system_shared                                                                                                  899.4G 85% 0             0 sys  -       shared  on
   2 files                                                                                                          899.4G 85% 0             0 fil  fs      ssh     on
   1 default                                                                                                        899.4G 85% 0             0 img  fs      ssh     on
   0 system                                                                                                              - -   0             0 sys  -       ssh     on

Создадим хранилище для образов (image)

Создадим файл настроек: 

cd ~
mcedit imgstor.tpl

С содержимым:

NAME    = default_shared
TM_MAD  = shared
TM_MAD_SYSTEM = shared
TYPE    = IMAGE_DS 
DS_MAD = fs

Создадим хранилище:

onedatastore create imgstor.tpl
ID: 104

Создадим хранилище для файлов (file)

Создадим файл настроек:

cd ~
mcedit filestor.tpl

С содержимым: 

NAME    = file_shared
TM_MAD  = shared
TM_MAD_SYSTEM = shared
TYPE    = FILE_DS
DS_MAD = fs

 Создадим хранилище: 

onedatastore create filestor.tpl
ID: 105

Вы можете удалить хранилища, созданные при установке: 

sudo onedatastore delete 0
sudo onedatastore delete 1
sudo onedatastore delete 2

Проверим: 

105 file_shared                                                                                                    899.4G 83% 0             0 fil  fs      shared  on
 104 default_shared                                                                                                 899.4G 83% 0             6 img  fs      shared  on
 103 system_shared                                                                                                  899.4G 83% 0             0 sys  -       shared  on

ID хранилищам назначается автоматически, так что у вас они могут быть совсем другими!

Создание виртуального образа CD-ROM

Создадим cd-rom диск для установки операционной системы из образа:

sudo oneimage create -d 104 --name "Astra Linux Orel DVD" --path /var/tmp/orel-current.iso --type CDROM
ID: 0

Проверим статус: 

sudo oneimage list
  ID USER     GROUP    NAME                                                                                                        DATASTORE     SIZE TYPE PER STAT RVMS
   0 oneadmin oneadmin Astra Linux Orel DVD                                                                                        default       3.8G CD    No lock    0

Статус lock – LOCKED означает, что образ копируется в хранилище OpenNebula подождем, пока статус не изменится на rdy:  

sudo oneimage list
  ID USER     GROUP    NAME                                                                                                        DATASTORE     SIZE TYPE PER STAT RVMS
   0 oneadmin oneadmin Astra Linux Orel DVD                                                                                        default       3.8G CD    No rdy     0

Образ скопирован, можно продолжать настройку.

Создание виртуального образа для HDD

Создадим HDD диск для самой операционной системы:

sudo oneimage create -d 104 --name "Astra HDD 1" --type DATABLOCK --size 25G --persistent --format qcow2
ID: 1

Проверим статус:

sudo oneimage list
  ID USER     GROUP    NAME                                                                                                        DATASTORE     SIZE TYPE PER STAT RVMS
   1 oneadmin oneadmin Astra HDD 1                                                                                                 default        45G DB   Yes rdy     0
   0 oneadmin oneadmin Astra Linux Orel DVD                                                                                        default       3.8G CD    No rdy     0

Все образы созданы и готовы к использованию.

Проверка кластера перед использованием

Перед созданием проверим, что наш кластер готов к развертыванию виртуальной машины:

sudo onecluster show 0
CLUSTER 0 INFORMATION
ID                : 0
NAME              : default
 
CLUSTER RESOURCES
TOTAL CPUs: 8
OCCUPIED CPUs: 0
AVAILABLE CPUs: 8
 
TOTAL RAM: 15
OCCUPIED RAM: 0
AVAILABLE RAM: 15
 
CLUSTER TEMPLATE
RESERVED_CPU=""
RESERVED_MEM=""
 
HOSTS
2
 
VNETS
1
 
DATASTORES
0
1
2

В разделах HOSTS, VNETS не должно стоять значений 0!

В OpenNebula у нас есть возможность использовать текстовый файл, для описания всех свойств виртуальной машины.

Создадим файл:

cd ~
mcedit astra.tpl

 

NAME = "Astra Linux Orel"
CONTEXT = [
  NETWORK = "YES",
  SSH_PUBLIC_KEY = "$USER[SSH_PUBLIC_KEY]" ]
CPU = "0.25"
DISK = [
  IMAGE = "Astra Linux Orel DVD",
  IMAGE_UNAME = "oneadmin" ]
DISK = [
  DEV_PREFIX = "vd",
  IMAGE = "Astra HDD 1",
  IMAGE_UNAME = "oneadmin" ]
GRAPHICS = [
  LISTEN = "0.0.0.0",
  TYPE = "VNC" ]
HYPERVISOR = "kvm"
INPUTS_ORDER = ""
LOGO = "images/logos/linux.png"
MEMORY = "1024"
MEMORY_UNIT_COST = "MB"
NIC = [
  NETWORK = "LAN",
  NETWORK_UNAME = "oneadmin",
  SECURITY_GROUPS = "0" ]
NIC_DEFAULT = [
  MODEL = "virtio" ]
OS = [
  BOOT = "disk1,disk0" ]

Создадим виртуальную машину:

sudo onevm create astra.tpl
ID: 0

Так как мы используем файловую систему, то виртуальная машина стать доступна для доступа очень быстро!

Проверим статус: 

sudo onevm list
  ID USER     GROUP    NAME                                                                  STAT  CPU     MEM HOST                                                 TIME
   7 oneadmin oneadmin Astra Linux Orel-7                                                    runn 0.25   1024M mer-vm-server1                                   0d 00h19

Виртуальная машина запущена и готова к работе!

Определение MAC-адреса виртуальной машины

Прежде чем мы продолжим нам нужно узнать MAC-адрес виртуального сервера, для этого запустим:

sudo onevm show 7 | grep LAN
 0 LAN                  br0          192.168.1.241   02:00:c0:a8:01:f1
    0 LAN                       0
 ETH0_VLAN_ID="",

 MAC адрес нашей виртуальной машины 02:00:c0:a8:01:f1

Теперь просто настройте свой локальный DHCP-сервер для выделения ip-адреса нашей виртуальной машине.

Доступ к виртуальной машине через VNC

Так как мы использовали вариант вывода графики VNC мы сможем подключиться с помощью VNC клиента, использование VNC через браузер может не работать! Поэтому лучше использовать VNC-клиент.

Я использую TightVNC - https://www.tightvnc.com/ вы можете использовать любой другой VNC-клиент.

При установке TightVNC выберите пользовательскую установку и установите только Viewer

Прежде чем продолжить, нам нужно узнать порт VNC для соединения с виртуальной машиной. Каждая виртуальная машина использует уникальный TCP порт для VNC.

Запустим 

sudo onevm show 7 | grep PORT
PORT="5903",

Запустим TightVNC Viewer и укажем ip адрес сервера OpenNebula и порт:

192.168.1.240:5903

2021-10-19_10-07-52.png 

Нажмем Connect

Откроется окно с нашей виртуальной машиной.

В моем случае операционная система уже установлена. Вы можете видеть приглашение к установке ОС и рабочий стол.

 2021-10-19_10-09-25.png

2021-10-19_10-10-05.png 

После установки операционной системы проверим наличие связи, если вы правильно указали mac-адрес в настройках вашего DHCP-сервера виртуальная машина должна получить ip-адрес!

Включение автозапуска служб

Когда у нас всё настроено включим автозапуск всех сервисов:

sudo systemctl enable opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow

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

Откроем файл 

/etc/one/sunstone-server.conf

Изменим строку:

:public_fireedge_endpoint: http://localhost:2616

Добавив # в начало строки

#:public_fireedge_endpoint: http://localhost:2616

Запустим:

sudo systemctl restart opennebula-sunstone

Заключение

Сегодня мы рассмотрели настройку сервера облачной виртуализации OpenNebula.

Настроили на сервере сеть.

Настроили репозитории apt и установили требуемые пакеты.

Задали пароль администратора.

Запустили службы и проверили доступность панели администратора.

Установили узел (node) на этот же сервер.

Добавили узел в кластер.

Настроили и добавили виртуальную сеть.

Создали виртуальный cd-rom с образом  Astra Linux Orel и HDD для виртуальной машины

Создали шаблон для виртуальной машины и развернули его в кластере.

Подключились к виртуальной машине используя VNC-клиент и проверили наличие сети на виртуальной машине.

В следующей статье мы рассмотрим установку Windows Server на виртуальную машину.

Прочитано 362 раз Последнее изменение Воскресенье, 31 октября 2021 13:33