В настоящей статье используются следующие Условные обозначения

Введение

Фронтальная машина — это сервер, на котором развёрнут сервис OpenNebula, предназначенный для управления облаком.

Требования

Подготовка сервера для установки сервиса OpenNebula

Стендовый сервер, включающий роль фронтальной машины, может выполнять роль рабочего места администратора и являться точкой входа в облако. Для этого на сервере необходимо установить графическое окружение рабочего стола и браузер firefox командой:

sudo apt install fly-all-main firefox
CODE

В информационных системах, находящихся в эксплуатации, не рекомендуется устанавливать графическую систему на сервере.

  1. Ввести сервер в домен ALD или FreeIPA. В зависимости от типа домена для получения инструкций перейти по одной из ссылок: Ввод в домен ALD или Ввод в домен FreeIPA.
  2. Повысить уровень целостности в ОС. Отредактировать на сервере файл /etc/default/grub:

    GRUB_CMDLINE_LINUX_DEFAULT="parsec.max_ilev=127 parsec.ccnr_relax=1 quiet net.ifnames=0"
    CODE
  3. Присвоить администратору сервера максимальный уровень целостности:

    sudo pdpl-user -i 127 <local-admin>
    CODE
  4. Обновить конфигурацию grub:

    sudo update-grub
    CODE
  5. Выполнить перезагрузку.

Установка и настройка Front-end на сервере

  1. Установить базу данных PostgreSQL из репозитория командой:

    sudo apt install postgresql-9.6
    CODE
  2. Установить службы для управления ПК СВ "Брест" в зависимости от используемого домена:

    sudo apt install brestcloud-ald
    CODE
    sudo apt install brestcloud-ipa
    CODE
  3. Выполнить инициализацию ПК СВ "Брест", создать БД и первого пользователя для администрирования системы командой:

    Если подготавливается несколько серверов с ролью Front-end для отказоустойчивости управления по алгоритму RAFT, то в каждом случае следует задавать одинаковые названия БД и учетных данных для доступа к ней.

    sudo brestcloud-configure
    CODE
  4. В ходе выполнения команды запустится мастер, в котором следует задать пароли для создаваемой БД и администратора облака brestadmin.

Самоподписанные сертификаты

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

  1. Создать каталог для сертификатов и ключей (для ПК СВ "Брест" с обновлением 2.6 этот каталог уже существует):

    sudo mkdir /etc/apache2/ssl
    CODE
  2. Создать сертификат и ключ:

    sudo openssl req -x509 -nodes -newkey rsa:2048 -days 3650 -keyout /etc/apache2/ssl/<front-N-hostname>.key -out /etc/apache2/ssl/<front-N-hostname>.crt
    CODE
  3. В строку с запросом ввести:

    Country Name (2 letter code) [AU]: — страна/регион (необязательно)
    State or Province Name (full name) [Some-State]: — штат (необязательно)
    Locality Name (eg, city) []: — город (необязательно)
    Organization Name (eg, company) [Internet Widgits Pty Ltd]: — имя организации (необязательно)
    Organizational Unit Name (eg, section) []: — подразделение организации, пропустить (необязательно)
    Common Name (e.g. server FQDN or YOUR name) []: — Обязательное поле, это имя, по которому к серверу будут обращаться <front-N-hostname>.<domain>
    Email Address []: — адрес электронной почты (необязательно)
    CODE
  4. Просмотреть сертификат можно командой:

    sudo openssl x509 -noout -text -in /etc/apache2/ssl/<front-N-hostname>.crt
    CODE

    Если настроен алгоритм RAFT и плавающий сетевой адрес для отказоустойчивого управления ПК СВ "Брест", то необходимо использовать один и тот же самоподписанный сертификат на всех узлах с Front-end, добавленных в RAFT.

Настройка Apache2

Для настройки Apache2 следует изменить содержание файла /etc/apache2/sites-available/000-default.conf.

  1. Перенаправить порт 80 на 443, указать расположение файлов сертификата и ключа. Привести файл к виду:


    <VirtualHost *:80>
            ServerName <front-N-hostname>.<domain>
            Redirect permanent / https://<front-N-hostname>.<domain>
    </VirtualHost>
    <VirtualHost _default_:443>
            ServerName <front-N-hostname>.<domain>
            ServerAdmin webmaster@localhost
            <Directory />
                    Options FollowSymLinks
                    AllowOverride None
            </Directory>
     
            DocumentRoot /usr/lib/one/sunstone/public
     
            SSLEngine on
            SSLCertificateFile /etc/apache2/ssl/<front-N-hostname>.crt
            SSLCertificateKeyFile /etc/apache2/ssl/<front-N-hostname>.key
     
            <Proxy balancer://unicornservers>
                    BalancerMember http://127.0.0.1:9869
            </Proxy>
     
            ProxyPass /brestcloud !
            ProxyPass / balancer://unicornservers/
            ProxyPassReverse / balancer://unicornservers/
            ProxyPreserveHost on
     
            <Proxy *>
                    AuthType Kerberos
                    KrbAuthRealms <DOMAIN>
                    KrbServiceName HTTP/<front-N-hostname>.<domain>
                    Krb5Keytab /etc/apache2/apache2.keytab
                    KrbMethodNegotiate on
                    KrbMethodK5Passwd off
                    KrbSaveCredentials on
                    require valid-user
                    AllowOverride all
     
                    RewriteEngine On
                    RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
                    RewriteRule ^/(.*)$ balancer://unicornservers%{REQUEST_URI} [P,QSA,L]
                    RewriteCond %{LA-U:REMOTE_USER} (.+)
                    RewriteRule . - [E=RU:%1]
                    RequestHeader add X-Forwarded_Remote-User %{RU}e
            </Proxy>
     
     
            ScriptAlias /brestcloud/ /usr/lib/one/brestcloud/
            <Directory /usr/lib/one/brestcloud/>
                    Options +ExecCGI
                    AddHandler cgi-script .cgi
                    AuthType Kerberos
                    KrbAuthRealms <DOMAIN>
                    KrbServiceName HTTP/<front-N-hostname>.<domain>
                    Krb5Keytab /etc/apache2/apache2.keytab
                    KrbMethodNegotiate on
                    KrbMethodK5Passwd off
                    KrbSaveCredentials on
                    require valid-user
                    AllowOverride all
            </Directory>
     
            ErrorLog ${APACHE_LOG_DIR}/error.log
     
            # Possible values include: debug, info, notice, warn, error, crit,
            # alert, emerg.
            LogLevel warn
     
            CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
    CODE
  2. Задействовать модуль ssl и перезапустить веб-сервер командой:

    sudo a2enmod ssl
    CODE
  3. Сохранить изменения и проверить конфигурацию Apache, выполнив команду:

    sudo apachectl configtest
    CODE
  4. Перезапустить apache2.service:

    sudo systemctl restart apache2
    CODE

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

Для подключения к графическому интерфейсу управления необходим веб-браузер Firefox:

Если администрирование облака на разворачиваемом стенде осуществляется непосредственно с узла стенда, то на узле стенда необходимо выполнить следующие действия. В случае, если для администрирования будет использоваться отдельное АРМ, эти действия нужно выполнить на нем, предварительно введя АРМ в домен.

  1. Зайти в систему, используя графический интерфейс Fly, под пользователем brestadmin.
  2. Запустить браузер Firefox.
  3. В адресной строке ввести: about:config и найти следующие параметры, которые необходимо исправить:

    network.negotiate-auth.delegation-uris
    network.negotiate-auth.trusted-uris
    CODE
  4. Установить для найденных параметров значения: http://,https:// 

  5. Далее приступить к проверке.

Проверка

Перейти в интерфейс OpenNebula для настройки ПК СВ "Брест" по адресу: https://<front-N-ip>.<domain>

Отобразится приглашение войти в систему, в котором следует нажать Login:

Если после нажатия кнопки Login отобразится интерфейс управления облаком, настройки произведены успешно!

Настройка корректного подключения к ВМ по VNC или SPICE через HTTPS

Данный пункт необходим в случае отсутствия настроенного центра сертификации. Описывается процесс настройки и добавления самоподписанного сертификата в доверенные.

Для корректного подключения к ВМ по VNC или SPICE с использованием HTTPS выполнить следующие шаги:

  1. На сервере, где работают службы Front-end, в файле /etc/one/sunstone-server.conf поменять следующие параметры, указав пути к сертификату и ключу:

    :vnc_proxy_support_wss: yes
    :vnc_proxy_cert: /etc/apache2/ssl/<front-N-hostname>.crt
    :vnc_proxy_key: /etc/apache2/ssl/<front-N-hostname>.key
    CODE
  2. После чего требуется перезапустить командами из консоли сервера следующие сервисы:

    root@srv:/etc/one# service unicorn-opennebula restart
    root@srv:/etc/one# service opennebula-novnc restart
    root@srv:/etc/one# service apache2 restart
    CODE
  3. На сервере с Front-end авторизоваться в графическом интерфейсе системы доменным пользователем brestadmin и запустить Firefox.
    Подключиться к ПК СВ Брест по https://<front-N-ip>.<domain> и после открытия интерфейса выйти из сессии brestadmin, оставив открытым это окно.

  4. Очистить кэш в Firefox, для чего перейти в меню браузера Настройки — Приватность и защита — История — Удалить историю, в открывшемся окне выбрать только чекбокс Кэш и нажать Удалить сейчас.
  5. Вернуться в браузер к вкладке с ПК СВ Брест и зайти в сессию brestadmin повторно, нажав кнопку Login.
  6. В разделе Instances - VMs открыть нужную ВМ и в верхнем меню нажать кнопу  VNC. При первом подключении будет получена ошибка: VNC noVNC ready: native WebSockets, canvas rendering.
     
  7. Не закрывая эту вкладку, открыть еще одну вкладку и ввести адрес https://<front-N-ip>.<domain> с указанием порта удаленного подключения 29876. Пример: https://srv.brest.loc:29876/
    После получения предупреждения, добавить страницу в исключения. Для чего нажать кнопки Advanced... и Accept the Risk and Continue.
  8. Вернуться на вкладку с ПК СВ Брест и повторить шаг 6.
  9. В результате на вкладке с ПК СВ Брест будет получена картинка вывода удаленного доступа для ВМ.


 При выходе из сессии ПК СВ Брест для brestadmin все исключения, добавленные в Firefox, сохранятся.


Важно

После выполнения инструкции вернитесь к предыдущей статье.