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

ВведениеLink to Введение

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

ТребованияLink to Требования

Подготовка сервера для установки сервиса OpenNebulaLink to Подготовка сервера для установки сервиса 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 на сервереLink to Установка и настройка 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.

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

Для того чтобы создать самоподписанный сертификат для возможности использования протокола 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.

Настройка Apache2Link to Настройка 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

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

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

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

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

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

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

ПроверкаLink to Проверка

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

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

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

Настройка корректного подключения к ВМ по VNC или SPICE через HTTPSLink to Настройка корректного подключения к ВМ по 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, сохранятся.


Важно

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