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

Установка

Важно

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

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

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_s essions enabled Enable/disable periodic cleanup of expired or stuck sessions. True
close_expired_s essions interval Run‑interval of the cleanup task (seconds). 300
close_expired_s essions 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