Подготовка среды функционирования

Установка и настройка брокера сообщений RabbitMQ

Установка брокера сообщений RabbitMQ

Если узел с уже установленным RabbitMQ будет переименован, то брокер сообщений перестанет принимать подключения. Для исправления ситуации необходимо удалить RabbitMQ, затем выполнить его переустановку.

В Termidesk VDI версии 6.1 в экспериментальном режиме поддерживается установка «Брокера сообщений TermideskMQ»:

  • выбор «Брокера сообщений TermideskMQ» производится при установке пакета termidesk-vdi;

  • одновременное использование RabbitMQ и «Брокера сообщений TermideskMQ» в рамках одной фермы не поддерживается. Рекомендуется удалить RabbitMQ или отключить службу rabbitmq-server, если будет использоваться «Брокер сообщений TermideskMQ».

Для установки RabbitMQ следует перейти в интерфейс командной строки через программу «Терминал Fly» и выполнить:

sudo apt install -y rabbitmq-server

Где:

-y - ключ для пропуска подтверждения установки.

Настройка брокера сообщений RabbitMQ

Для настройки RabbitMQ следует:

  • перейти в интерфейс командной строки через программу «Терминал Fly» и убедиться в наличии каталога /etc/rabbitmq:

ls /etc/ | grep rabbitmq
  • если каталог отсутствует, необходимо создать его:

sudo mkdir -p /etc/rabbitmq

где:

-p - ключ для автоматического создания директорий, указанных внутри пути;

  • перейти в каталог /etc/rabbitmq:

cd /etc/rabbitmq
  • создать пустой файл rabbitmq.conf (основной файл конфигурации RabbitMQ):

sudo touch rabbitmq.conf
  • поменять владельца (rabbitmq) и идентификатор группы (rabbitmq) для созданного файла:

sudo chown rabbitmq:rabbitmq rabbitmq.conf
  • отредактировать файл rabbitmq.conf, приведя его к виду:

tcp_listen_options.keepalive = true

Если необходимо, чтобы RabbitMQ работал через TLS-соединение, то файл rabbitmq.conf нужно привести к виду:

tcp_listen_options.keepalive = true
listeners.tcp.default = 5672

# TLS Порт
listeners.ssl.default = 5671
# Пути к сертификатам
ssl_options.cacertfile = /var/ssl/root-ca.crt
ssl_options.certfile   = /var/ssl/cert.crt
ssl_options.keyfile    = /var/ssl/private/private-key.key

# Пароль для ключа
ssl_options.verify     = verify_peer

ssl_options.fail_if_no_peer_cert = false

ssl_options.versions.default = tlsv1.2

Предполагается, что файлы корневого сертификата (/var/ssl/root-ca.crt), сертификата узла (/var/ssl/cert.crt) и закрытого ключа (/var/ssl/private/private-key.key) к нему уже существуют и доступны по указанному пути.

  • выполнить настройку RabbitMQ с помощью rabbitmqctl:

    • включить плагины управления и метрик:

      sudo rabbitmq-plugins enable rabbitmq_management
      sudo rabbitmq-plugins enable rabbitmq_prometheus
    • предоставить права администратору:

      sudo rabbitmqctl add_user admin StrongAdminPassword
      sudo rabbitmqctl set_user_tags admin administrator
      sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
    • удалить гостевого пользователя:

      sudo rabbitmqctl delete_user guest
    • создать виртуальный хост termidesk и пользователя RabbitMQ:

      sudo rabbitmqctl add_vhost termidesk
      sudo rabbitmqctl add_user termidesk ksedimret
    • предоставить права пользователю termidesk на работу с виртуальным хостом termidesk:

      sudo rabbitmqctl set_permissions -p termidesk termidesk ".*" ".*" ".*"
    • предоставить права администратору на работу с виртуальным хостом termidesk:

      sudo rabbitmqctl set_permissions -p termidesk admin ".*" ".*" ".*"
    • предоставить права пользователю termidesk на работу с очередями виртуального хоста termidesk:

      sudo rabbitmqctl set_topic_permissions -p termidesk termidesk ".*" ".*" ".*"

      Имя пользователя и пароль должны задаваться в соответствии с внутренними стандартами организации по применению парольной защиты. Для задания пароля разрешено использовать только латинские буквы A-Z, a-z, цифры 0-9 и символы !$%^&_-=+~`.,()*{}[]\|.

  • перезапустить службу rabbitmq-server:

sudo systemctl restart rabbitmq-server
  • выполнить настройку поддержки TCP в ОС:

    • отредактировать файл /etc/sysctl.conf:

      net.ipv4.tcp_keepalive_time = 30
      net.ipv4.tcp_keepalive_intvl = 10
      net.ipv4.tcp_keepalive_probes = 3
      net.ipv4.tcp_retries2 = 5
    • применить изменения sysctl:

      sudo sysctl --system

Установка и настройка СУБД PostgreSQL

Установка СУБД PostgreSQL

Для установки СУБД PostgreSQL необходимо:

  • отредактировать файл /etc/apt/sources.list, оставив в качестве источников получения пакетов сетевые репозитории. Пример файла /etc/apt/sources.list для ОС Astra Linux Special Edition 1.8:

Приведен только пример файла! Он должен быть скорректирован, исходя из используемой и поддерживаемой версии ОС. Подробную информацию о сетевых репозиториях ОС Astra Linux Special Edition можно получить в справочном центре Astra Linux для ОС Astra Linux Special Edition 1.8: https://wiki.astralinux.ru/pages/viewpage.action?pageId=302043111.

Если в файле /etc/apt/sources.list присутствует репозиторий astra-ce, то необходимо закомментировать его, чтобы избежать установки несовместимых версий пакетов.

deb https://download.astralinux.ru/astra/stable/1.8_x86-64/repository-main/ 1.8_x86-64 main contrib non-free
deb https://download.astralinux.ru/astra/stable/1.8_x86-64/repository-extended/ 1.8_x86-64 main contrib non-free
  • перейти в интерфейс командной строки и обновить списков пакетов:

sudo apt update
  • установить СУБД PostgreSQL:

При установке на ОС Astra Linux Specail Edition 1.8 следует выбирать СУБД PostgreSQL версии 15 (входит в состав ОС).
sudo apt install -y postgresql

где:

-y - ключ для пропуска подтверждения установки.

Настройка СУБД PostgreSQL

Перед установкой Termidesk VDI нужно выполнить настройку базы данных (БД).

При работе с СУБД следует учитывать ее ограничения: суммарное количество подключений к СУБД должно быть не более 75% от максимально разрешенного количества подключений. Для СУБД PostgreSQL по умолчанию максимальное количество подключений - 100.

Для оценки количества подключений к СУБД можно воспользоваться формулой: (количество порталов «Универсального диспетчера» x количество ядер процессоров x 3) + (количество узлов с запущенными службами termidesk-celery-beat и termidesk-celery-worker x количество ядер на этих узлах).

Для настройки БД следует перейти в интерфейс командной строки и выполнить:

  • переключиться на пользователя postgres:

sudo su postgres
  • запустить терминальный клиент СУБД PostgreSQL:

psql

Если после выполнения команды отображается ошибка «could not change directory to "/home/": Отказано в доступе» и не появляется приглашение командной строки postgres=, необходимо вместо su postgres использовать конструкцию su - postgres. Если приглашение postgres= появилось, то сообщение об ошибке можно проингорировать.

Если приглашение postgres=# не появляется, то вероятнее всего ОС Astra Linux Special Edition используется в более защищенном режиме, например, «Смоленск». В таком случае нужно для пользователя postgres (по умолчанию) назначить классификационную метку:

sudo pdpl-user -i 63 postgres
  • используя интерактивный интерфейс терминального клиента СУБД PostgreSQL, создать БД termidesk (символ ; в конце строки при работе с интерактивным интерфейсом обязателен):

postgres=# CREATE DATABASE termidesk LC_COLLATE 'ru_RU.utf8' LC_CTYPE 'ru_RU.utf8' TEMPLATE template0;

где:

LC_COLLATE - порядок сортировки для использования в БД, влияет на порядок сортировки, применяемый к строкам. Значение ru_RU.utf8 указывает на использование русской локализации;

LC_CTYPE - классификация символов для использования в БД, влияет на категоризацию символов;

TEMPLATE - имя шаблона, из которого создается БД. Шаблон template0 используется для системной БД самой СУБД PostgreSQL.

  • создать пользователя termideskdb с паролем ksedimret для дальнейшего подключения к БД:

postgres=# CREATE USER termideskdb WITH PASSWORD 'ksedimret';
В приведенной команде имя пользователя и пароль используются в качестве примера. Имя пользователя и пароль должны задаваться в соответствии с внутренними стандартами организации по применению парольной защиты. Для задания пароля разрешено использовать только латинские буквы A-Z, a-z, цифры 0-9 и символы $!@%^&#_-=+~`;:.,?()*{}[]\|/.
  • назначить права по использованию БД termidesk созданному пользователю termideskdb:

postgres=# GRANT ALL PRIVILEGES ON DATABASE termidesk TO termideskdb;
  • в случае, если используется СУБД PostgreSQL из состава ОС Astra Linux Special Edition 1.8, то сделать пользователя termideskdb владельцем БД termidesk, тем самым предоставив ему все возможные права:

postgres=# ALTER DATABASE termidesk OWNER TO termideskdb;
  • выйти из интерактивного интерфейса терминального клиента СУБД PostgreSQL:

postgres=# \q
  • выйти из сеанса пользователя postgres:

exit
  • отредактировать файл /etc/parsec/mswitch.conf, установив параметр zero_if_notfound в значение yes, точно соблюдая отступы и пробелы:

# Return zero data instead of ENOENT/ENODATA in the absence of record
zero_if_notfound: yes
  • создать системного пользователя termideskdb (имя должно совпадать с именем пользователя в БД):

sudo useradd -M termideskdb -s /usr/sbin/nologin -d /home/termideskdb
  • для пользователя БД назначить классификационную метку (в примере используется termideskdb, в более ранних версиях использовалось имя пользователя termidesk):

sudo pdpl-user -i 0 termideskdb
  • предоставить пользователю termideskdb права на чтение файла, содержащего классификационную метку:

sudo setfacl -m u:postgres:r /etc/parsec/macdb/$(id -u termideskdb)
В случае последующего обновления СУБД PostgreSQL может понадобиться пересоздать БД. В этом случае следует предусмотреть экспорт БД перед обновлением СУБД PostgreSQL.

Настройка СУБД Tantor

Помимо поддержки PostgreSQL Termidesk VDI может работать с другими СУБД, такими как Tantor, основанным на PostgreSQL. Установка СУБД должна быть выполнена согласно документации на нее.

После установки нужно последовательно выполнить шаги для настройки БД:

  • переключиться на пользователя postgres:

sudo su postgres
  • выполнить инициализацию БД:

/opt/tantor/db/<версия_Tantor>/bin/initdb -D /var/lib/postgresql/<каталог_Tantor>/data/
  • запустить терминальный клиент СУБД:

./psql
  • используя интерактивный интерфейс терминального клиента СУБД, создать БД termidesk (символ «;» в конце строки при работе с интерактивным интерфейсом обязателен):

postgres=# CREATE DATABASE termidesk LC_COLLATE 'ru_RU.utf8' LC_CTYPE 'ru_RU.utf8' TEMPLATE template0;
  • создать пользователя termidesk с паролем ksedimret для дальнейшего подключения к БД:

postgres=# CREATE USER termidesk WITH PASSWORD 'ksedimret';
В приведенной команде имя пользователя и пароль используются в качестве примера. Имя пользователя и пароль должны задаваться в соответствии с внутренними стандартами организации по применению парольной защиты. Для задания пароля разрешено использовать только латинские буквы A-Z, a-z, цифры 0-9 и символы $!@%^&#_-=+~`;:.,?()*{}[]\|/.
  • назначить все права по использованию БД termidesk созданному пользователю termidesk:

postgres=# GRANT ALL PRIVILEGES ON DATABASE termidesk TO termidesk;
  • назначить права на создание объектов для схемы public:

postgres=# GRANT CREATE ON SCHEMA public TO termidesk;
  • выйти из интерактивного интерфейса терминального клиента СУБД:

postgres=# \q
  • выйти из сеанса пользователя postgres:

exit
  • отредактировать файл /etc/parsec/mswitch.conf, установив параметр zero_if_notfound в значение yes, точно соблюдая отступы и пробелы:

# Return zero data instead of ENOENT/ENODATA in the absence of record
zero_if_notfound: yes

При работе с СУБД следует учитывать ее ограничения: суммарное количество подключений к СУБД должно быть не более 75% от максимально разрешенного количества подключений.

Для оценки количества подключений к СУБД можно воспользоваться формулой: (количество порталов «Универсального диспетчера» x количество ядер процессоров x 3) + (количество узлов с запущенными службами termidesk-celery-beat и termidesk-celery-worker x количество ядер на этих узлах).