Установка и настройка

Установка

Важно

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

Режим суперпользователя:

sudo -i
  1. Перед началом установки сохраните список установленных ранее пакетов, это позволит Вам безболезненно восстановить систему в случае ее повреждения. Для этого выполните следующие команды:

    mkdir -p /tmp/rollback/rs_server
    pip3 freeze > /tmp/rollback/rs_server/pip_before.txt
    

    После чего в каталоге /tmp/rollback/rs_server будет находиться файл pip_before.txt с перечнем установленных приложений.

  2. Также сохраните версии миграции:

    openstack aos db list -n rs_sever > /tmp/rollback/rs_server/migrations.txt
    

    Где:

    • /tmp/rollback/rs_server/ - директория файла;

    • migrations.txt - наименование файла с версиями миграций.

  3. Установите пакет RSserver:

    • из репозитория Python-пакетов:

      pip3 install rs-server
      
  4. Сохраните список установленных пакетов после установки для возможности отката изменений:

    pip3 freeze > /tmp/rollback/rs_server/pip_after.txt
    
  5. Добавьте пользователя aos:

    useradd -m aos
    passwd password
    

Примечание

Для установки RSserver на Astra Linux (Smolensk) выполните следующее:

  1. Подключите предоставленный Вам репозиторий с пакетами AccentOS.

  2. Установите пакет командой:

    sudo apt install -y aos-rs-server
    

Установка на двух и более контроллерах

При установке RSserver на двух и более контроллерах, необходимо:

  1. Реплицировать базу данных на каждый из контроллеров;

  2. Реплицировать брокер сообщений на каждый из контроллеров;

  3. Устанавливать модуль с одинаковыми параметрами на каждый из контроллеров.

Примечание

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

Настройка

Примечание

Рассматривается настройка запуска API сервиса через WSGI-сервер, поставляемый вместе с библиотекой eventlet. Для настройки запуска сервиса через другой WSGI-сервер (Nginx + Gunicorn, Apache + mod_wsgi и др.) смотрите документацию соответствующего сервера. Путь до WSGI приложения: rs_server.api.api.wsgi.

  1. Выполните первичную настройку модуля:

    openstack aos configure -n rs_server
    

    При выполнении команды openstack aos configure -n rs_server:

    • производится копирование примеров файлов конфигураций в каталог /etc/aos/;

    • формируются конфигурационные файлы для веб-сервера Apache;

    • выполняется сборка статики для RSserver.

  2. Создайте каталог для логов с нужными правами:

    mkdir -p /var/log/aos/rs-server
    chown -R aos:aos /var/log/aos/rs-server
    
  3. Скопируйте образец конфигурационного файла, при использовании нестандартных параметров отредактируйте их:

    cp /etc/aos/aos.conf.example /etc/aos/aos.conf
    cp /etc/aos/rs_server.conf.example /etc/aos/rs_server.conf
    
  4. Создайте базу данных на примере MySQL, настройте права, тип базы и остальные параметры:

    # Зайдите в базу данных, используя пароль пользователя root
    mysql -uroot -p
    # Создайте базу данных rs_server
    CREATE DATABASE rs_server;
    # Дайте права на чтение, редактирование, выполнение любых действий над всеми таблицами базы данных rs_server
    GRANT ALL PRIVILEGES ON rs_server.* TO 'aos'@'localhost' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON rs_server.* TO 'aos'@'%' IDENTIFIED BY 'password';
    # Осуществите выход из базы данных
    
  5. Отредактируйте секцию [database] конфигурационного файла etc/aos/rs_server.conf, например:

    [database]
    url = mysql+pymysql://aos:password@tst.stand.loc:3306/rs_server?charset=utf8
    
  6. Выполните синхронизацию базы данных:

    openstack aos db migrate -n rs_server
    
  7. Настройте брокер сообщений RabbitMQ Server:

    rabbitmqctl add_user aos password
    rabbitmqctl add_vhost aos
    rabbitmqctl set_permissions -p aos aos ".*" ".*" ".*"
    rabbitmqctl set_permissions aos ".*" ".*" ".*"
    
  8. Создайте сервис RSserver API:

    openstack service create --name rs-server --description "RSserver Service" rs-server
    
  9. Создайте точки входа (endpoint):

    openstack endpoint create --region RegionOne rs-server internal http://controller:9364
    openstack endpoint create --region RegionOne rs-server admin http://controller:9364
    openstack endpoint create --region RegionOne rs-server public http://controller:9364
    
  10. Создайте пользователя в OpenStack для API сервисов:

    openstack user create --domain default --project service --project-domain default --password password --or-show aos
    
  11. Назначьте пользователю роль service:

    openstack role add --user aos --user-domain default --project service --project-domain default service
    
  12. Включите и запустите службы systemd:

    systemctl daemon-reload
    systemctl enable aos-rs-server-api.service
    systemctl start aos-rs-server-api.service
    systemctl enable aos-rs-broker-api.service
    systemctl start aos-rs-broker-api.service
    systemctl enable aos-rs-listener.service
    systemctl start aos-rs-listener.service
    systemctl enable aos-rs-beat.service
    systemctl start aos-rs-beat.service
    systemctl enable aos-rs-worker.service
    systemctl start aos-rs-worker.service
    
  13. Настройте службы Nova на всех контроллерах и вычислительных узлах, для синхронизации виртуальных машин (в файле конфигурации /etc/nova/nova.conf):

    [oslo_messaging_notifications]
    driver = messagingv2
    
  14. Настройте службы Keystone на всех контроллерах, для синхронизации проектов (в файле конфигурации /etc/keystone/keystone.conf):

    [oslo_messaging_notifications]
    driver = messagingv2
    
  15. Настройте службы Neutron на всех контроллерах, для синхронизации плавающих IP-адресов (в файле конфигурации /etc/neutron/neutron.conf):

    [DEFAULT]
    notification_driver = messagingv2
    
  16. Настройте службы Cinder на всех узлах, для синхронизации назначений дисков пользователям (в файле конфигурации /etc/cinder/cinder.conf):

    [DEFAULT]
    notification_driver = messagingv2
    
  17. Создайте симлинк на поставляемый конфигурационный файл Apache и перезапустите веб сервера:

    # Debian:
    ln -s /etc/apache2/conf-available/aos-rs-web.conf /etc/apache2/conf-enabled/aos-rs-web.conf
    service apache2 restart
    

    Примечание

    Необходимо убедиться в корректности конфигурационного файла: проверить пути к установленным модулям, пути к логам, соответствие директив установленной версии Apache.

  18. Перезапустите службы Nova и Neutron, данное действие необходимо для включения уведомлений:

    # Debian:
    systemctl restart nova-api.service
    systemctl restart neutron-server.service
    

Настройка сервиса RS broker API

По умолчанию для запуска сервиса используется WSGI-сервер gunicorn. Для настройки альтернативного сервера используйте следующие параметры:

  • Путь до WSGI-приложения: rs_server.api.broker_api.wsgi:application;

  • WSGI-файл:

    # Ubuntu, Debian:
    ``/usr/local/bin/aos-rs-broker-wsgi``.
    

Настройка Prom SSO

Для включения режима prom SSO необходимо выполнить следующие шаги

  1. Переключить флаг sso_enabled=True в конфиг-файле

  2. Создать yaml-файл с credentials, как описано тут

  3. Поместить yaml-файл в /etc/aos/

  4. Сгенерировать ключи сервера командами:

    openssl genrsa -out private_key.pem 2048
    openssl rsa -in private_key.pem -pubout -out public_key.pem
    
  5. Передать публичный ключ сервера на клиент, получить от клиента публичный ключ. Ключи клиента могут быть сгенерированы аналогичными командами.

  6. Записать полученные ключи в конфиг-файл aos.conf:

    [broker_api]
    server_private_key='private_key'
    client_public_key='public_key'
    

Примечание

Для работы режима без указания проекта со стороны проекта нужно добавить файл clouds.yaml в /etc/aos/. Можно использовать файл из пункта выше.

Файл конфигурации

Примечание

Файл конфигурации позволяет переопределять секции и параметры общего файла aos.conf для конкретного модуля.

Примечание

По умолчанию в файле rs_server.conf.example строки с уровнем логирования нет, она указывается при необходимости. Уровень логирования по умолчанию выставлен в общем конфигурационном файле. Подробнее ознакомиться с файлами конфигурации можно в соответствующем разделе.

Конфигурационный файл представлен в ini формате и состоит из следующих секций и параметров:

Секция

Параметр

Описание

Значение по умолчанию

DEFAULT

allow_VM_deletion

A parameter responsible for allowing a request from a rs-client to delete a virtual machine assigned to a user.

False

DEFAULT

default_availability_zone

Availability zone for launching TRS instances.

nova

api

audit_enabled

Enabling logging of requests to tos-rs-server-api service.

True

api

host

tos-rs-server-api service start host.

0.0.0.0

api

logfile

Path to log file of tos-rs-server-api service.

api

port

Port to start tos-rs-server-api service.

9364

broker

allow_getvm_log

Enabling logging of the results of TRS instances requests from the RSclient and TRS web interface. File name is :/var/log/tos/rs-server/trs_requests.log

False

broker

default_vdi_profile

A Number of VDI Profile which will be being used by this instance of RSserver. This option unites brokers into different groups separated by VDI Profiles they serve. It helps with complex balancing tasks. For example, to separate some brokers to work with connections from external network and from local network.

1

broker

getvm_logfile

Path to the file for collecting TRS instances requests messages from RSclient and TRS web interface.

broker

otp_sender_method

Method of sending OTP to user.

telegram

broker

power_state_monitor

Option that enables checking the power status of the instance.

False

broker

request_mode

Selection mode for TRS instance user.

single

broker

request_pending_timeout

Threshold waiting time for the start of processing a request to receive TRS instances in seconds.

60

broker

request_processing_timeout

Threshold waiting time for request to get the TRS instance in seconds. It is counted from the time query record was updated in the database.

360

broker

requests_ttl

Time to store instance query in NoSQL Redis database in seconds.

3600

broker

security_group

Parameter that determines the automatic creation of a security group for each TRS instance at the time of connecting to it in order to restrict access of unassigned users to TRS instance.

True

broker

session_ttl

Time-to-live for session entries in Redis, in seconds. If no activity is detected for a session key during this period, the background task will automatically close the stale session.

300

broker

spice_enabled

Parameter that allows the RSclient to receive the SPICE console address of with the IP address of instance.

False

broker_api

audit_enabled

Enabling logging of requests to tos-rs-broker-api service.

True

broker_api

heartbeat_timeout

Max interval between session activity signals (in seconds).

60

broker_api

logfile

Path to log file of tos-rs-broker-api service.

broker_api

session_token_ttl

Time-to-live for session tokens in seconds.

3600

broker_api

ssp_proxy_enabled

Enabling interaction between RSServer and SSP.

False

broker_api

use_rs_token

Enabling checking for permission to connect user to the guest operating system.

False

broker_api

vdi_profiles_enabled

Enabling VDI Profiles in Broker API responses

False

broker_api

web_guard

Enabling WebGuard support.

False

broker_api

web_guard_redirect_response

Response code for WebGuard redirected request.

302

certificates

requests_ca_bundle

Path to file of ca-certificates.

/etc/ssl/certs/ca-certificates.crt

close_expired_sessions

enabled

Enable/disable periodic cleanup of expired or stuck sessions.

True

close_expired_sessions

interval

Run‑interval of the cleanup task (seconds).

300

close_expired_sessions

logfile

Path to log file of project synchronization service.

kerberos

script_path

Path to the script for changing the user’s password via Kerberos.

listener

after_delete_vm_script

Path to the script that is executed when instance is deleted. The script is run from the user tos.

listener

cinder_rabbit_vhost

Virtual host of Cinder service message broker.

/

listener

durability

Durability of RabbitMQ queue and exchange.

True

listener

keystone_rabbit_vhost

Virtual host of Keystone service message broker.

/

listener

logfile

Path to log file of tos-rs-listener service.

listener

neutron_rabbit_vhost

Virtual host of Neutron service message broker.

/

listener

nova_rabbit_vhost

Virtual host of Nova service message broker.

/

project_sync

enabled

Option that enables project synchronization.

True

project_sync

logfile

Path to log file of project synchronization service.

project_sync

sync_interval

Project synchronization start interval (in seconds).

600

redis

mode

Mode of connection to redis. Direct - strict to Redis. Sentinel - through Sentinel.

direct

redis

sentinel_master_name

Name of the sentinel master.

mymaster

web

compress_enabled

Enabling static compression.

True

web

debug

Debug mode.

True

web

memcache_location

Url address to access the caching system.

localhost:11211

Важно

При изменении параметров файла конфигурации, для вступления их в силу необходимо произвести процедуру, описанную в разделе «Обновление файла конфигурации».

План восстановления

В случае неудачной установки или обновления модуля RSserver выполните возврат к исходному состоянию:

  1. Сравните версии миграций в файле /tmp/rollback/rs_server/migrations.txt с текущими. При наличии отличий произведите миграцию на предыдущую версию. Пример миграции:

    openstack aos db list -n rs_server
    openstack aos db migrate -n rs_server --migration 14
    
  2. Произведите возврат к предыдущему состоянию пакетов:

    cd /tmp/rollback/rs_server
    diff --changed-group-format='%>' --unchanged-group-format='' pip_before.txt pip_after.txt > pip_uninstall.txt
    diff --changed-group-format='%<' --unchanged-group-format='' pip_before.txt pip_after.txt > pip_install.txt
    pip3 uninstall -r pip_uninstall.txt
    pip3 install -r pip_install.txt