Дисклеймер: данная статья не рассчитана на опытных линуксоидов, что уже собаку съели, куря мануалы OpenNebula, – для них большая часть текста покажется либо наивной, либо очевидной, либо наивно-очевидной. Мы хотим не рассказать о том, что же это за зверь такой, а скорее порекомендовать, на что обратить внимание, если вас поставили перед фактом, что надо переходить на российское ПО, и вам предстоит импортозаместить систему виртуализации. Ну, или пока запустить ее в тестовом режиме.

Не секрет, что сертифицированные операционные системы ООО «РусБИТех-Астра» названы в честь городов-героев, и самая известная из них — Astra Linux Special Edition "Смоленск" (ОС специального назначения). Про нее слышали все, кто так или иначе сталкивался с вопросом импортозамещения ПО. Есть еще специализированные релизы «Новороссийск», «Севастополь», «Керчь», «Мурманск» и «Ленинград». Они уже не так широко известны, так как предназначены для менее массовой архитектуры, чем x86-64. Но наш сегодняшний разговор пойдет не об операционной системе, а о продукте ООО «РусБИТех-Астра», который носит имя города Брест.

Что же это такое? Полное название продукта — программный комплекс средств виртуализации «Брест». По заявлению разработчика, это «современный инструментарий для управления виртуальными структурами любой сложности с применением средств защиты ОС Astra Linux Special Edition».

Собственно, базовый функционал виртуализации реализован в составе ОС с помощью KVM (модуль ядра Linux), QEMU (эмуляция аппаратного обеспечения), libvirt (демон и набор инструментов для управления виртуализацией) и virt-manager (приложение для управления виртуальными машинами).

Это классическая схема реализации виртуализации в Linux-системах, такая связка используется плюс-минус во всех отечественных дистрибутивах. Гораздо интереснее становится, если мы хотим выйти за рамки виртуализации для тестов на отдельно взятом сервере. Тут уже начинаются различия:

  1. ROSA Linux предлагает использовать oVirt (логично, учитывая то, что базовый дистрибутив RHEL).

  2. ALT Linux – PVE или OpenNebula.

  3. Astra Linux – OpenNebula.

Программный комплекс "Брест" предлагает три варианта использования:

  1. Локальная виртуализация.

  2. Серверная виртуализация.

  3. «Облако» ресурсов и виртуальных машин (ВМ).

Локальная и серверная виртуализация
Данные сценарии подразумевают создание и использование на локальном компьютере или сервере нескольких ВМ, управляемых с помощью virt-manager. Он позволяет подключать удаленные физические серверы по протоколам TCP (SASL+Kerberos), SSL/TLS и ssh для управления виртуализацией на нескольких серверах.

«Облако» ресурсов и виртуальных машин
Такой сценарий позволяет создавать и управлять большим количеством ВМ, при этом доступны все преимущества «облачного» решения: масштабируемость, высокая доступность и безопасность. ПК «Брест» позволяет через единый web-интерфейс управлять машинами, работающими в режиме дискретного и мандатного управления доступом, с учетом требований в части контроля целостности.

И вот о некоторых практических особенностях установки и настройки ПО в этом случае я и хотел бы сегодня рассказать.

 

Считаем сервера

Для локально-серверного сценария достаточно одного физического сервера. «Облако» ресурсов и виртуальных машин тоже можно установить и настроить на одном сервере, когда свободных серверов мало, а широкий спектр возможностей «облака» задействовать хочется, например, если нужен web-интерфейс управления и полноценное разграничение прав. Естественно, что, если сервер один, ни о какой высокой доступности речь не идет.

Компоненты для установки будут следующие:

  1. Узел виртуализации.

  2. ОС Astra Linux Special Edition «Смоленск».

  3. Контроллер домена (Astra Linux Directory (ALD) или FreeIPA).

  4. ПК СВ «Брест».

А если нужна высокая степень доступности?

Контроллер домена можно виртуализировать в качестве локальной виртуализации, а Frontend — установить параллельно с узлом виртуализации. Frontend-серверов неплохо бы сделать несколько. Их должно быть нечетное количество, так что необходимо минимум 3 сервера.

Данный сценарий можно реализовать с доменом как на базе ALD, так и FreeIPA. По множеству причин второй вариант мне нравится больше, и именно его я рекомендую использовать, чтобы как минимум избежать прописывания в /etc/hosts адресов всех Frontend-серверов и узлов виртуализации. 

 

Храним данные

Нам понадобится общее хранилище данных, которое будет подключено к Frontend-серверу и узлам виртуализации. В качестве такового можно использовать распределенное хранилище CEPH, файловые системы NFS, CIFS, OCFS2 и CEPHFS-сервера или хранилища с доступом по протоколу iSCSI.

При планировании совместного хранилища важно помнить, что OpenNebula требует для работы минимум два подключенных LUN'а, о чем чуть более подробно расскажу ниже.

Но сначала надо понять философию OpenNebula: виртуальная машина (ВМ) – не отдельная единица, а лишь запускаемый экземпляр заранее созданного шаблона.
Процедура создания ВМ следующая: 

  1. Создаем образ диска.

  2. Создаем шаблон ВМ, к которому подключаем образ диска.

  3. Создаем экземпляр ВМ по шаблону.

Для хранения образов шаблонов нужен один LUN (тип хранилища — IMAGE), а для хранения данных запускаемых экземпляров – второй (тип хранилища — SYSTEM). Все изменения диска шаблона в процессе работы экземпляра находятся именно во втором хранилище. Ну, и чтобы не смешивать все в одну/две кучи, рекомендуется добавить отдельный LUN для ISO-образов (но тоже с типом хранилища IMAGE). Кстати, если загружать образы виртуальных жестких дисков, экспортированных из других систем виртуализации (да и в принципе, если загружать любые образы), необходимо обеспечить достаточно свободного места на Frontend-сервере, так как он сначала кэширует загружаемый файл в директорию /var/tmp.

 

Сетевые настройки

Ну, и, конечно же, нашим будущим виртуальным машинам понадобится доступ к сети.

Сеть в сценарии с «облаком» ресурсов и виртуальных машин настраивается двумя способами в зависимости от того, должна ли она иметь доступ наружу или нет.

Если такой доступ есть, в качестве моста, предоставляющего ВМ доступ к сети, используются физические сетевые адаптеры узлов виртуализации. В этом нам поможет bridge-utils – и да, настраивать его базовую конфигурацию придется из консоли. Самое главное – запомнить имя, которое мы дали мосту, это имя должно быть одинаковым на всех узлах.

Для частной сети без выхода во внешнюю сеть используется программный коммутатор Open vSwitch. Он тоже настраивается из консоли (имена мостов также запоминаем и не путаем). И не забываем настроить линки Open vSwitch-коммутаторов между узлами, чтобы сеть была едина на всех узлах.

 

Финализируем

Как итог, могу сказать, что с данной системой виртуализации вполне можно иметь дело, особенно если все хорошо спланировать (вообще универсальный совет):

  1. Сколько будет серверов и где расположить домен-контроллер.

  2. Сколько будет Frontend-серверов и где они будут размещаться.

  3. Какое хранилище будет использовано и как оно будет подключаться.

Заранее стоит продумать сетевые настройки и выделить пулы адресов как для инфраструктуры системы виртуализации, так и для ВМ (в том числе и для внутренней сети).

Не забыть про "плавающий" высокодоступный адрес RAFT и адреса для модулей удаленного администрирования IPMI (необходимы для обеспечения отказоустойчивости ВМ).

Зарезервировать адреса под расширение инфраструктуры.

Важно помнить, что придется менять набор тех привычек, с которым мы подходим к виртуализации. Как и со всеми продуктами на базе Linux, многое придется делать из консоли (подробности можно найти на ресурсе разработчика), но с этим пора смириться, если импортозамещение уже дышит вам в спину.