Download PDF
Download page Распределенная установка Termidesk.
Распределенная установка Termidesk
Распределенная установка программного комплекса
Основные принципы распределенной установки
В Termidesk предусмотрена распределенная установка компонентов на отдельные серверы или ВМ.
Установка компонентов Termidesk выполняется в среде функционирования ОС Astra Linux Special Edition 1.7.
В распределенном варианте устанавливаются компоненты:
- «Универсальный диспетчер» (служба
termidesk-vdi
); - «Шлюз» (служба
termidesk-gateway
); - «Менеджер рабочих мест» (службы
termidesk-taskman
,termidesk-celery-beat
,termidesk-celery-worker
).
Перечень условий для распределенной установки:
- RabbitMQ-server устанавливается на одном узле с СУБД (в общем случае этот компонент может устанавливаться на отдельный узел, но в рамках настоящей процедуры данный вариант не рассматривается);
Если будет использоваться внешняя СУБД, нужно установить компонент RabbitMQ-server на узел менеджера рабочих мест Termidesk или на отдельный узел.
- на всех узлах, предназначенных для установки компонентов, настроены статические IP-адреса;
- на всех узлах настроена синхронизация времени от единого источника.
Упрощенная общая схема при распределенной установке Termidesk приведена на рисунке.
Перечень обозначенных на схеме компонентов приведен в таблице.
Компонент | FQDN | Подпись на схеме |
---|---|---|
«Универсальный диспетчер» №1 | disp1.termidesk.local | Универсальный диспетчер 1 |
«Универсальный диспетчер» №2 | disp2.termidesk.local | Универсальный диспетчер 2 |
«Шлюз» №1 | gw1.termidesk.local | Шлюз 1 |
«Шлюз» №2 | gw2.termidesk.local | Шлюз 2 |
«Менеджер рабочих мест» (master) | tsk1.termidesk.local | Менеджер рабочих мест 1 |
«Менеджер рабочих мест» (slave) | tsk2.termidesk.local | Менеджер рабочих мест 2 |
Балансировщик нагрузки (nginx) | nginx.termidesk.local | Балансировщик |
База данных | db.termidesk.local | Сервер PostgreSQL |
Распределенная установка проводится в следующей последовательности:
1) устанавливается узел с компонентами СУБД и RabbitMQ-server (обе службы на одном узле);
2) устанавливается первый (эталонный) узел с «Универсальным диспетчером». При установке необходимо выбрать роль «Портал администратора» и «Портал пользователя» в диалоговом окне псевдографического интерфейса инсталлятора;
Настройки первого узла с «Универсальным диспетчером» Termidesk будут использоваться как эталонные для узлов других «Универсальных диспетчеров» и «Менеджеров рабочих мест».
Параметры конфигурации Termidesk находятся в файле /etc/opt/termidesk-vdi/termidesk.conf
.
Нужно скопировать каталог /etc/opt/termidesk-vdi
вместе с его содержимым на узлы других «Универсальных диспетчеров» и «Менеджеров рабочих мест».
3) устанавливаются остальные «Универсальные диспетчеры» с копированием файлов, указанных в п.2, с эталонного узла;
4) устанавливаются «Шлюзы», каталог /etc/termidesk/
копируется с первого узла «Шлюза» на другие узлы с этим компонентом;
5) устанавливаются «Менеджеры рабочих мест» с копированием файлов, указанных в п.2, с эталонного узла.
Одновременно служба «Менеджера рабочих мест» termidesk-taskman
должна быть запущена только на одном из узлов!
Заключительным этапом устанавливаются и настраиваются балансировщики нагрузки на базе ОС Astra Linux Special Edition 1.7 и nginx.
Установка и настройка СУБД Postgres-11
Процесс установки СУБД Postgres-11 и брокера сообщений RabbitMQ-server не отличается от процесса, описанного в разделе Подготовка среды функционирования.
Для завершения настройки нужно:
- отредактировать файл
rabbitmq-env.conf
,
# Defaults to rabbit. This can be useful if you want to run more than one node
# per machine - RABBITMQ_NODENAME should be unique per erlang-node-and-machine
# combination. See the clustering on a single machine guide for details:
# http://www.rabbitmq.com/clustering.html#single-machine
#NODENAME=rabbit
# By default RabbitMQ will bind to all interfaces, on IPv4 and IPv6 if
# available. Set this if you only want to bind to one network interface or#
# address family.
NODE_IP_ADDRESS=0.0.0.0
# Defaults to 5672.
NODE_PORT=5672
- сохранить файл и перезапустить службу
rabbitmq-server
:
:~$ sudo systemctl restart rabbitmq-server
Установка первого узла с «Универсальным диспетчером»
Процесс установки первого узла с «Универсальным диспетчером» аналогичен комплексной установке Termidesk, за исключением выбора только ролей «Портал администратора» и «Портал пользователя».
После установки передать каталог /etc/opt/termidesk-vdi
на остальные узлы «Универсальных диспетчеров», «Шлюзов» и «Менеджеров рабочих мест»:
:~$ sudo scp -r /etc/opt/termidesk-vdi localuser@ipaddr_or_fqdn_host:/home/user/
где:
-r
- ключ для рекурсивной (со вложенными каталогами) передачи;
localuser
- имя пользователя целевого узла;
ipaddr_or_fqdn_host
- IP-адрес или FQDN целевого узла;
/home/user
- путь, куда будет скопирован каталог.
Перед началом установки остальных узлов «Универсальных диспетчеров» необходимо переместить скопированный ранее каталог termidesk-vdi
в каталог /etc/opt/
:
:~$ sudo mv /home/user/termidesk-vdi /etc/opt/
Установить второй узел с «Универсальным диспетчером» по аналогии с первым, не меняя параметры в диалогах подключения к СУБД и заполнения информации о подключении к RabbitMQ-server.
Установка «Шлюзов»
Установка «Шлюзов» выполняется из пакета termidesk-gateway
.
Для установки «Шлюза» следует обратиться к подразделу Установка Шлюза документа СЛЕТ.10001-01 90 05 «Руководство администратора. Настройка компонента «Шлюз».
Подробное описание файла /etc/termidesk/gateway.yaml
содержится в подразделе Параметры конфигурирования компонента документа СЛЕТ.10001-01 90 05 «Руководство администратора. Настройка компонента «Шлюз».
После завершения установки нужно изменить настройки запуска «Шлюзов» termidesk-gateway
:
- отредактировать файл
/etc/termidesk/gateway.yaml
, приведя файл к виду:
#
# The default configuration file for Termidesk Gateway, please do not change it.
#
# Объявляем переменную для SSL
_val0: &sslprof0
key: ${sslKey:/etc/termidesk/ssl-cert-snakeoil.key} # Путь к файлу закрытого ключа
cert: ${sslCert:/etc/termidesk/ssl-cert-snakeoil.pem} # Путь к файлу сертификата
ca: ${sslCa} # Путь к файлу цепочки сертификации
passphrase: ${sslPassPhrase} # Парольная фраза для соединения SSL
dhparams: ${sslDhParams} # Путь к файлу с ключами Диффи-Хеллмана
# для соединения SSL (default "")
ciphers: ${sslCiphers} # Используемый алгоритм преобразований
# для соединения SSL (default "")
# Gateway серверы (это список, по умолчанию он пустой)
gwservers:
- listen: ${wsServerIP:0.0.0.0}:${wsServerPort:5099} # IP-адрес и порт для защищенных входящих подключений,
# для IPv6 "[::1]:80" (default ~)
websocket: # Настройка WebSocket
pingtimeout: ${wsIdleTimeout:30} # Время пинга «Клиента» в секундах, диапазон [0, 100000],
# если 0, то пинги отключены (default 30)
checktoken: # Настройка проверки токенов
url: ${urlCheckToken:https://disp1.termidesk.local/api/wsproxy/v1.1/verify} # URL для проверки
# (default "http://127.0.0.1:8080/api/wsproxy/v1/verify")
tcp_downstream: # Настройка соединения с сервисами по протоколу TCP
reconnect: ${gwTCPReconnect:0} # Количество переподключений, если не задано или равно 0,
# то TCP сессия не восстанавливается, диапазон [0, 10]
# (default 0)
- listen: ${wssServerIP:0.0.0.0}:${wssServerPort:10000} # IP-адрес и порт для защищенных входящих подключений,
# для IPv6 "[::1]:80" (default ~)
websocket: # Настройка WebSocket
pingtimeout: ${wsIdleTimeout:30} # Время пинга «Клиента» в секундах, диапазон [0, 100000],
# если 0, то пинги отключены (default 30)
checktoken: # Настройка проверки токенов
url: ${urlCheckToken:https://disp1.termidesk.local/api/wsproxy/v1.1/verify} # URL для проверки
# (default "http://127.0.0.1:8080/api/wsproxy/v1/verify")
tcp_downstream: # Настройка соединения с сервисами по протоколу TCP
reconnect: ${gwTCPReconnect:0} # Количество переподключений, если не задано или равно 0,
# то TCP сессия не восстанавливается, диапазон [0, 10]
# (default 0)
ssl: *sslprof0 # Ссылка на настройки заданные в шаблоне SSL (default {})
# ... Другие шлюзы
# MGT сервер
mgtserver:
listen: ${mgtServerIP:0.0.0.0}:${mgtServerPort:8102} # IP-адрес и порт запроса сведений о работоспособности Шлюза
# для IPv6 "[::1]:80" (default ~)
path: ${healthCheckURL:/api/health} # Путь запроса информации о работоспособности Шлюза
# (default "/api/health")
token: ${healthCheckAccessKey} # Токен валидации (default "")
ssl: *sslprof0 # Ссылка на настройки заданные в шаблоне SSL (default {})
# RabbitMQ клиент
rabbitmq:
url: ${coordinatorUrl:amqp://USER:PASS@disp1.termidesk.local:5672/termidesk} # URL подключения к серверу RabbitMQ в формате
# "amqp(s)://USER:PASS@<IP-адрес>:<порт>/termidesk",
# где USER и PASS - это необязательные поля (default ~)
user: ${coordinatorUser:termidesk} # user - пользователь, если задан,
# то изменяет url.USER (default "")
pass: ${coordinatorPass:ksedimret} # RabbitMQ pass - пароль, если задан,
# то изменяет url.PASS (default "")
timeout: ${coordinatorTimeout} # RabbitMQ timeout(sec), диапазон [1, 60] (default 10)
refreshtime: ${coordinatorRefreshTime:60} # Период (sec) обновления информация на сервере RabbitMQ,
# диапазон [10, 100000] (default 60)
single: ${coordinatorSingle:true} # Если true - то данные передаются до первого подтверждения,
# если false - то данные передаются по циклу (бесконечно)
# (default false)
exchange: ${coordinatorExchange} # RabbitMQ exchange (default "")
routingkey: ${coordinatorRoutingKey} # RabbitMQ routing key (default "termidesk_appnode")
loglevel: # Логирование сообщений
info: ${logInfo:true} # Уровень INFO (default true)
debug: ${logDebug:false} # Уровень DEBUG (default false)
- сохранить файл, а затем перезапустить службу:
:~$ sudo systemctl restart termidesk-gateway
После настройки нужно передать каталог /etc/termidesk/
с первого узла «Шлюза» на другие узлы с этим компонентом.
Установка «Менеджеров рабочих мест»
Установка «Менеджеров рабочих мест» производится на два узла, работающих в режиме network failover
.
Установка проводится в следующей последовательности:
1) ранее переданный файл termidesk.conf
редактируется, параметру «NODE_ROLES» присваивается значение «TASKMAN»;
2) установить пакет termidesk-vdi
:
:~$ sudo apt -y install termidesk-vdi
где:
-y
- ключ для пропуска подтверждения установки.
После установки нужно остановить (systemctl stop
) и исключить (systemctl disable
) службу termidesk-taskman
из автоматического запуска:
:~$ sudo systemctl stop termidesk-taskman && sudo systemctl disable termidesk-taskman
Исключение службы из автоматического запуска необходимо, поскольку управление ее состоянием производится скриптами режима высокой доступности.
Установка балансировщиков
Балансировщики нагрузки необходимы для балансировки клиентских подключений к универсальным диспетчерам и шлюзам, равномерного распределения нагрузки на них. Средой функционирования для балансировщиков нагрузки является ОС Astra Linux Special Edition 1.7.
Балансировщик nginx устанавливается командой:
:~$ sudo apt install -y nginx
где:
-y
- ключ для пропуска подтверждения установки.
Действия после распределенной установки
Настройка компонента «Менеджер рабочих мест» в режиме высокой доступности приведена в подразделе Настройка «Менеджера рабочего места» в режиме высокой доступности документа СЛЕТ.10001-01 90 02 «Руководство администратора. Настройка программного комплекса».