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

Установка

Важно

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

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

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
    
  1. Скопируйте образец конфигурационного файла, при использовании нестандартных параметров отредактируйте их:

    cp /etc/aos/aos.conf.example /etc/aos/aos.conf
    cp /etc/aos/rs_server.conf.example /etc/aos/rs_server.conf
    
  2. Создайте базу данных на примере 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';
    # Осуществите выход из базы данных
    
  3. Отредактируйте секцию [database] конфигурационного файла etc/aos/rs_server.conf, например:

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

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

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

    openstack service create --name rs-server --description "RSserver Service" rs-server
    
  7. Создайте точки входа (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
    
  8. Создайте пользователя в OpenStack для API сервисов:

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

    openstack role add --user aos --user-domain default --project service --project-domain default service
    
  10. Включите и запустите службы 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
    
  11. Настройте службы Nova на всех контроллерах и вычислительных узлах, для синхронизации виртуальных машин (в файле конфигурации /etc/nova/nova.conf):

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

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

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

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

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

    Примечание

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

  16. Перезапустите службы 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``.
    

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

Примечание

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

Примечание

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

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

Секция Параметр Описание Значение по умолчанию
DEFAULT default_availability_zone Зона доступности для запуска TRS машин. nova
api audit_enabled Включение журналирования запросов к службе aos-rs- server-api. True
api host Интерфейс для запуска службы aos-rs-server-api. 0.0.0.0
api logfile Путь до лог файла службы aos-rs-server-api.  
api port Порт для запуска службы aos-rs-server-api. 9364
broker allow_getvm_log Включение логирования результатов запросов TRS машин из RSclient и веб-интерфейса TRS. Расположение и название файла: /var/log/aos/rs- server/trs_requests.log. False
broker getvm_logfile Путь к файлу сбора сообщений запросов TRS машин из RSclient и веб-интерфейса TRS.  
broker otp_sender_method Способ отправки OTP пользователю. telegram
broker power_state_monitor Параметр, который включает проверку статуса питания виртуальной машины. False
broker request_mode Режим выбора для пользователя TRS машины. single
broker request_pending_timeout Пороговое время ожидания начала обработки запроса на получение TRS машины в секундах. 60
broker request_processing_timeout Пороговое время ожидания выполнения запроса на получение TRS машины в секундах. Отсчитывается от времени обновления записи о запросе в базе данных. 360
broker requests_ttl Время хранения запроса виртуальной машины в NoSQL базе данных Redis в секундах. 3600
broker security_group Параметр, определяющий автоматическое создание группы безопасности для каждой TRS машины в момент подключения к ней в целях ограничения доступа не назначенных пользователей к TRS машине. True
broker spice_enabled Параметр, который разрешает RSclient получать адрес SPICE консоли вместе с IP-адресом виртуальной машины. False
broker_api audit_enabled Включение журналирования запросов к службе aos-rs- broker-api. True
broker_api logfile Путь до лог файла службы aos-rs-broker-api  
broker_api use_rs_token Включение проверки наличия разрешения на подключения пользователя к гостевой операционной системе. False
broker_api web_guard Включение поддержки WebGuard. False
celery task_retries Колличество попыток Celery после неудачного запроса 3
celery task_timeout Таймаут Celery задачи , при истечении происходит перезапуск задачи 30
kerberos script_path Путь до скрипта смены пароля пользователя через Kerberos.  
listener after_delete_vm_script Путь к скрипту, который выполняется при удалении виртуальной машины. Скрипт запускается от пользователя aos.  
listener cinder_rabbit_vhost Виртуальный хост брокера сообщений службы Cinder. /
listener keystone_rabbit_vhost Виртуальный хост брокера сообщений службы Keystone. /
listener logfile Путь до лог файла службы aos-rs-listener.  
listener neutron_rabbit_vhost Виртуальный хост брокера сообщений службы Neutron. /
listener nova_rabbit_vhost Виртуальный хост брокера сообщений службы Nova. /
project_sync enabled Параметр, который включает синхронизацию проектов. True
project_sync logfile Путь до лог файла службы синхронизации проектов.  
project_sync sync_interval Интервал запуска синхронизации проектов (в секндах). 600
web compress_enabled Включение сжатия статики. True
web debug Работа в режиме debug. True
web memcache_location Url адрес для доступа к системе кэширования. 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