Установка и настройка¶
Установка¶
Важно
Сначала необходимо произвести настройку окружения. Все команды выполняются только от суперпользователя.
Режим суперпользователя:
sudo -i
Перед началом установки сохраните список установленных ранее пакетов, это позволит Вам безболезненно восстановить систему в случае ее повреждения. Для этого выполните следующие команды:
mkdir -p /tmp/rollback/rs_server pip3 freeze > /tmp/rollback/rs_server/pip_before.txt
После чего в каталоге
/tmp/rollback/rs_serverбудет находиться файлpip_before.txtс перечнем установленных приложений.Также сохраните версии миграции:
openstack aos db list -n rs_sever > /tmp/rollback/rs_server/migrations.txt
Где:
/tmp/rollback/rs_server/- директория файла;migrations.txt- наименование файла с версиями миграций.
Установите пакет RSserver:
из репозитория Python-пакетов:
pip3 install rs-server
Сохраните список установленных пакетов после установки для возможности отката изменений:
pip3 freeze > /tmp/rollback/rs_server/pip_after.txt
Добавьте пользователя
aos:useradd -m aos passwd password
Примечание
Для установки RSserver на Astra Linux (Smolensk) выполните следующее:
Подключите предоставленный Вам репозиторий с пакетами AccentOS.
Установите пакет командой:
sudo apt install -y aos-rs-server
Установка на двух и более контроллерах¶
При установке RSserver на двух и более контроллерах, необходимо:
- Реплицировать базу данных на каждый из контроллеров;
- Реплицировать брокер сообщений на каждый из контроллеров;
- Устанавливать модуль с одинаковыми параметрами на каждый из контроллеров.
Примечание
Удаление и диагностика модуля на каждом контроллере происходит таким же образом, как и в случае с одним контроллером.
Настройка¶
Примечание
Рассматривается настройка запуска API сервиса через WSGI-сервер, поставляемый вместе с библиотекой eventlet. Для настройки запуска сервиса через другой WSGI-сервер (Nginx + Gunicorn, Apache + mod_wsgi и др.) смотрите документацию соответствующего сервера. Путь до WSGI приложения: rs_server.api.api.wsgi.
Выполните первичную настройку модуля:
openstack aos configure -n rs_server
При выполнении команды
openstack aos configure -n rs_server:- производится копирование примеров файлов конфигураций в каталог
/etc/aos/; - формируются конфигурационные файлы для веб-сервера Apache;
- выполняется сборка статики для RSserver.
- производится копирование примеров файлов конфигураций в каталог
Создайте каталог для логов с нужными правами:
mkdir -p /var/log/aos/rs-server chown -R aos:aos /var/log/aos/rs-server
Скопируйте образец конфигурационного файла, при использовании нестандартных параметров отредактируйте их:
cp /etc/aos/aos.conf.example /etc/aos/aos.conf cp /etc/aos/rs_server.conf.example /etc/aos/rs_server.conf
Создайте базу данных на примере 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'; # Осуществите выход из базы данных
Отредактируйте секцию
[database]конфигурационного файлаetc/aos/rs_server.conf, например:[database] url = mysql+pymysql://aos:password@tst.stand.loc:3306/rs_server?charset=utf8
Выполните синхронизацию базы данных:
openstack aos db migrate -n rs_server
Настройте брокер сообщений RabbitMQ Server:
rabbitmqctl add_user aos password rabbitmqctl add_vhost aos rabbitmqctl set_permissions -p aos aos ".*" ".*" ".*" rabbitmqctl set_permissions aos ".*" ".*" ".*"
Создайте сервис RSserver API:
openstack service create --name rs-server --description "RSserver Service" rs-server
Создайте точки входа (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
Создайте пользователя в OpenStack для API сервисов:
openstack user create --domain default --project service --project-domain default --password password --or-show aos
Назначьте пользователю роль service:
openstack role add --user aos --user-domain default --project service --project-domain default service
Включите и запустите службы 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
Настройте службы Nova на всех контроллерах и вычислительных узлах, для синхронизации виртуальных машин (в файле конфигурации
/etc/nova/nova.conf):[oslo_messaging_notifications] driver = messagingv2
Настройте службы Keystone на всех контроллерах, для синхронизации проектов (в файле конфигурации
/etc/keystone/keystone.conf):[oslo_messaging_notifications] driver = messagingv2
Настройте службы Neutron на всех контроллерах, для синхронизации плавающих IP-адресов (в файле конфигурации
/etc/neutron/neutron.conf):[DEFAULT] notification_driver = messagingv2
Настройте службы Cinder на всех узлах, для синхронизации назначений дисков пользователям (в файле конфигурации
/etc/cinder/cinder.conf):[DEFAULT] notification_driver = messagingv2
Создайте симлинк на поставляемый конфигурационный файл Apache и перезапустите веб сервера:
# Debian: ln -s /etc/apache2/conf-available/aos-rs-web.conf /etc/apache2/conf-enabled/aos-rs-web.conf service apache2 restart
Примечание
Необходимо убедиться в корректности конфигурационного файла: проверить пути к установленным модулям, пути к логам, соответствие директив установленной версии Apache.
Перезапустите службы 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 необходимо выполнить следующие шаги
Переключить флаг
sso_enabled=Trueв конфиг-файлеСоздать yaml-файл с credentials, как описано тут
Поместить yaml-файл в
/etc/aos/Сгенерировать ключи сервера командами:
openssl genrsa -out private_key.pem 2048 openssl rsa -in private_key.pem -pubout -out public_key.pem
Передать публичный ключ сервера на клиент, получить от клиента публичный ключ. Ключи клиента могут быть сгенерированы аналогичными командами.
Записать полученные ключи в конфиг-файл
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 выполните возврат к исходному состоянию:
Сравните версии миграций в файле
/tmp/rollback/rs_server/migrations.txtс текущими. При наличии отличий произведите миграцию на предыдущую версию. Пример миграции:openstack aos db list -n rs_server openstack aos db migrate -n rs_server --migration 14
Произведите возврат к предыдущему состоянию пакетов:
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