Это старая версия документа!
РАСПРЕДЕЛЕННАЯ УСТАНОВКА TERMIDESK
Ссылка на документацию с wiki
https://wiki.astralinux.ru/termidesk-help/5.1/dokumentatsiya/termidesk-ustanovka-programmnogo-kompleksa/raspredelennaya-ustanovka-termidesk
vdi-disp1
устанавливаем утилиту lsb_release
которая потребуется при добавлении репозитория
sudo apt install lsb-release -y
подключаем репозиторий, добавляем ключ и обновляем сведения о пакетах если данная операция не была выполнен ранее
echo "" | sudo tee -a /etc/apt/sources.list echo "deb http://10.2.0.11:8080/td/5.1.0.24335/repos/astra $(lsb_release -cs) non-free" | sudo tee -a /etc/apt/sources.list wget -O - http://10.2.0.11:8080/td/5.1.0.24335/repos/astra/GPG-KEY-PUBLIC | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/termidesk.gpg sudo apt update
Установить клиентскую часть postgresql
Необходимо для возможности прохождения теста соединения с БД во время установки
sudo apt install postgresql-client -y
Выполняем установку
Если установка Termidesk версии 5.1 на ОС Astra Linux Special Edition версии 1.7.4 (и выше) завершается ошибкой:
/usr/sbin/apache2: error while loading shared libraries: libastraevents.so.0: cannot open shared object file: No such file or directory
То нужно обновить пакет libastraevents
https://wiki.astralinux.ru/termidesk-help/5.1/dokumentatsiya/termidesk-ustanovka-programmnogo-kompleksa/podgotovka-sredy-funktsionirovaniya-pered-ustanovkoj/podgotovka-os-astra-linux-special-edition
После этого выполнить переустановку Termidesk
sudo apt install termidesk-vdi -y
В диалоговых окнах указываем следующую информацию
Текст лицензионного соглашения - ознакамливаемся с лицензионным соглашением и жмем «Далее»
Согласие с условиями - жмем «Да»
Способ хранения паролей RabbitMQ - Конфигфайл
Защищенное подключение к СУБД - Disable (Открытый, без защиты)
Ввод данных (Адрес СУБД) - vdi-db.td.loc
Ввод данных (Порт СУБД) - 5432
Ввод данных (Имя базы данных) - termidesk
Ввод данных (Имя пользователя) - termidesk
Ввод данных (Пароль) - ksedimret
Защищенное подключение к RabbitMQ - Disable (Открытый, без защиты)
Настройка подключений к RabbitMQ - выбираем 1-й слот «Empty»
Новое подключение (Адрес сервера) - vdi-db.td.loc
Новое подключение (Порт сервера) - 5672
Новое подключение (Виртуальный хост) - termidesk
Новое подключение (Имя пользователя) - termidesk
Новое подключение (Пароль) - ksedimret
Настройка подключений к RabbitMQ - переходим к пункту «Далее» и жмем «Enter»
Роли, выполняемые этим узлом - Портал администратора, Портал пользователя
выставляем параметр AstraMode
в значение off
sudo nano /etc/apache2/apache2.conf
... # Astra security mode # AstraMode off ...
перезагружаем веб-сервер
sudo systemctl restart apache2
убедиться, что локальный пользователь под которым будем входить в интерфейс Termidesk, состоит в группе «astra-admin»
sudo usermod -aG astra-admin astra
копируем конфигурацию на оставшиеся узлы
второй диспетчер
sudo scp -r /etc/opt/termidesk-vdi astra@10.2.0.12:/tmp
шлюзы, если в будущем планируем добавить роли диcпетчер или менеджер
sudo scp -r /etc/opt/termidesk-vdi astra@10.2.0.13:/tmp sudo scp -r /etc/opt/termidesk-vdi astra@10.2.0.14:/tmp
менеджеры ВРМ
sudo scp -r /etc/opt/termidesk-vdi astra@10.2.0.15:/tmp sudo scp -r /etc/opt/termidesk-vdi astra@10.2.0.16:/tmp
vdi-disp2
устанавливаем утилиту lsb_release
которая потребуется при добавлении репозитория
sudo apt install lsb-release -y
подключаем репозиторий, добавляем ключ и обновляем сведения о пакетах если данная операция не была выполнен ранее
echo "" | sudo tee -a /etc/apt/sources.list echo "deb http://10.2.0.11:8080/td/5.1.0.24335/repos/astra $(lsb_release -cs) non-free" | sudo tee -a /etc/apt/sources.list wget -O - http://10.2.0.11:8080/td/5.1.0.24335/repos/astra/GPG-KEY-PUBLIC | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/termidesk.gpg sudo apt update
копируем конфигурацию переданную с первого диспетчера в папку назначения
sudo mkdir -p /etc/opt sudo mv /tmp/termidesk-vdi /etc/opt/
Выполняем установку В ходе установки никаких диалоговых окон отобразиться не должно, будет использована та конфигурация, которая скопирована с первого диспетчера.
Если установка Termidesk версии 5.1 на ОС Astra Linux Special Edition версии 1.7.4 (и выше) завершается ошибкой:
/usr/sbin/apache2: error while loading shared libraries: libastraevents.so.0: cannot open shared object file: No such file or directory
То нужно обновить пакет libastraevents
https://wiki.astralinux.ru/termidesk-help/5.1/dokumentatsiya/termidesk-ustanovka-programmnogo-kompleksa/podgotovka-sredy-funktsionirovaniya-pered-ustanovkoj/podgotovka-os-astra-linux-special-edition
После этого выполнить переустановку Termidesk
sudo apt install termidesk-vdi -y
# выставляем параметр AstraMode
в значение off
sudo nano /etc/apache2/apache2.conf
... # Astra security mode # AstraMode off ...
перезагружаем веб-сервер
sudo systemctl restart apache2
убедиться, что локальный пользователь под которым будем входить в интерфейс Termidesk, состоит в группе «astra-admin»
sudo usermod -aG astra-admin astra
vdi-gw1 vdi-gw2
устанавливаем утилиту lsb_release
которая потребуется при добавлении репозитория
sudo apt install lsb-release -y
подключаем репозиторий, добавляем ключ и обновляем сведения о пакетах если данная операция не была выполнен ранее
echo "" | sudo tee -a /etc/apt/sources.list echo "deb http://10.2.0.11:8080/td/5.1.0.24335/repos/astra $(lsb_release -cs) non-free" | sudo tee -a /etc/apt/sources.list wget -O - http://10.2.0.11:8080/td/5.1.0.24335/repos/astra/GPG-KEY-PUBLIC | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/termidesk.gpg sudo apt update
переносим конфигурацию переданную с первого диспетчера в папку назначения, если ранее её копировали с узла первого диспетчера
sudo mkdir -p /etc/opt sudo mv /tmp/termidesk-vdi /etc/opt/
устанавливаем шлюз termidesk-gateway
sudo apt install termidesk-gateway -y
sudo openssl req -new -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/termidesk/gw.key -out /etc/termidesk/gw.crt sudo chown termidesk-gateway:termidesk-gateway /etc/termidesk/gw.*
Настройка шлюза
https://wiki.astralinux.ru/termidesk-help/5.1/dokumentatsiya/shlyuz/shlyuz-parametry-konfigurirovaniya
Делаем бекап конфигурации по-умолчанию
sudo cp /etc/termidesk/gateway.yaml /etc/termidesk/gateway.yaml.default
Смотрим значение параметра HEALTH_CHECK_ACCESS_KEY
Это значение потребуется для настройки параметра mgtserver.token
Если ранее было выполнено копироыание каталога с конфигурацией с первого диспетчера, то команду можно выполнить прямо на текущем узле.
Иначе, команду следует выпонить на первом диспетчере или любом узле на котором есть копия каталога конфигурации с первого диспетчера.
sudo grep HEALTH_CHECK_ACCESS_KEY /etc/opt/termidesk-vdi/termidesk.conf
Открываем файл настроек шлюза на редактирование
Значение токена должно совпадать со значением параметра HEALTH_CHECK_ACCESS_KEY
из файла /etc/opt/termidesk-vdi/termidesk.conf
sudo nano /etc/termidesk/gateway.yaml
Приводим файл настроек шлюза к виду
# # The default configuration file for Termidesk Gateway, please do not change it. # _val0: &sslprof0 # key: ${sslKey} # cert: ${sslCert} key: /etc/termidesk/gw.key cert: /etc/termidesk/gw.crt ca: ${sslCa} passphrase: ${sslPassPhrase} dhparams: ${sslDhParams} ciphers: ${sslCiphers} gwservers: - listen: ${wsServerIP:0.0.0.0}:${wsServerPort:5099} websocket: pingtimeout: ${wsIdleTimeout:30} checktoken: # url: ${urlCheckToken:https://127.0.0.1/api/wsproxy/v1/verify} url: https://vdi-lb.td.loc/api/wsproxy/v5.1/verify tcp_downstream: reconnect: ${gwTCPReconnect:0} # wss server - listen: 0.0.0.0:5199 ssl: *sslprof0 websocket: pingtimeout: 30 checktoken: url: https://vdi-lb.td.loc/api/wsproxy/v5.1/verify tcp_downstream: reconnect: 0 mgtserver: # listen: ${mgtServerIP:127.0.0.1}:${mgtServerPort:8102} listen: ${mgtServerIP:0.0.0.0}:${mgtServerPort:8102} path: ${healthCheckURL:/api/health} # token: ${healthCheckAccessKey} token: HEALTH_CHECK_ACCESS_KEY ssl: *sslprof0 metrics: path: ${metricsCheckURL:/api/health/metrics} token: ${metricsAccessKey} rabbitmq: # url: ${coordinatorUrl} # user: ${coordinatorUser} # pass: ${coordinatorPass} url: "amqp://vdi-db.td.loc:5672/termidesk" user: termidesk pass: ksedimret timeout: ${coordinatorTimeout} refreshtime: ${coordinatorRefreshTime:60} single: ${coordinatorSingle:true} exchange: ${coordinatorExchange} routingkey: ${coordinatorRoutingKey} loglevel: info: ${logInfo:true} debug: ${logDebug:false}
Выполняем перезапуск сервиса
sudo systemctl restart termidesk-gateway
Проверяем, что при перезагрузке не было ошибок
sudo journalctl -u termidesk-gateway -n 100 --no-pager
Проверяем, что шлюз слушает на всех нужных портах
sudo netstat -tupln
vdi-tsk1
Способ 1
устанавливаем утилиту lsb_release
которая потребуется при добавлении репозитория
sudo apt install lsb-release -y
подключаем репозиторий, добавляем ключ и обновляем сведения о пакетах если данная операция не была выполнен ранее
echo "" | sudo tee -a /etc/apt/sources.list echo "deb http://10.2.0.11:8080/td/5.1.0.24335/repos/astra $(lsb_release -cs) non-free" | sudo tee -a /etc/apt/sources.list wget -O - http://10.2.0.11:8080/td/5.1.0.24335/repos/astra/GPG-KEY-PUBLIC | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/termidesk.gpg sudo apt update
копируем конфигурацию переданную с первого диспетчера в папку назначения
sudo mkdir -p /etc/opt sudo mv /tmp/termidesk-vdi /etc/opt/
меняем роль узла в файле конфигурации
sudo nano /etc/opt/termidesk-vdi/termidesk.conf
... NODE_ROLES="TASKMAN,CELERYMAN" ...
Выполняем установку
В ходе установки никаких диалоговых окон отобразиться не должно, будет использована та конфигурация, которая скопирована с первого диспетчера.
Единственное отличие в параметре NODE_ROLES
, который мы вручную изменили.
Если установка Termidesk версии 5.1 на ОС Astra Linux Special Edition версии 1.7.4 (и выше) завершается ошибкой:
/usr/sbin/apache2: error while loading shared libraries: libastraevents.so.0: cannot open shared object file: No such file or directory
То нужно обновить пакет libastraevents
https://wiki.astralinux.ru/termidesk-help/5.1/dokumentatsiya/termidesk-ustanovka-programmnogo-kompleksa/podgotovka-sredy-funktsionirovaniya-pered-ustanovkoj/podgotovka-os-astra-linux-special-edition
После этого выполнить переустановку Termidesk
sudo apt install termidesk-vdi -y
После установки нужно остановить и исключить службу termidesk-taskman из автоматического запуска Исключение службы из автоматического запуска необходимо, поскольку управление ее состоянием производится скриптами режима высокой доступности
sudo systemctl disable termidesk-taskman --now
vdi-tsk2
Способ 2
устанавливаем утилиту lsb_release
которая потребуется при добавлении репозитория
sudo apt install lsb-release -y
подключаем репозиторий, добавляем ключ и обновляем сведения о пакетах если данная операция не была выполнен ранее
echo "" | sudo tee -a /etc/apt/sources.list echo "deb http://10.2.0.11:8080/td/5.1.0.24335/repos/astra $(lsb_release -cs) non-free" | sudo tee -a /etc/apt/sources.list wget -O - http://10.2.0.11:8080/td/5.1.0.24335/repos/astra/GPG-KEY-PUBLIC | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/termidesk.gpg sudo apt update
копируем конфигурацию переданную с первого диспетчера в папку назначения
sudo mkdir -p /etc/opt sudo mv /tmp/termidesk-vdi /etc/opt/
Выполняем установку В ходе установки никаких диалоговых окон отобразиться не должно, будет использована та конфигурация, которая скопирована с первого диспетчера.
Если установка Termidesk версии 5.1 на ОС Astra Linux Special Edition версии 1.7.4 (и выше) завершается ошибкой:
/usr/sbin/apache2: error while loading shared libraries: libastraevents.so.0: cannot open shared object file: No such file or directory
То нужно обновить пакет libastraevents
https://wiki.astralinux.ru/termidesk-help/5.1/dokumentatsiya/termidesk-ustanovka-programmnogo-kompleksa/podgotovka-sredy-funktsionirovaniya-pered-ustanovkoj/podgotovka-os-astra-linux-special-edition
После этого выполнить переустановку Termidesk
sudo apt install termidesk-vdi -y
Пользуемся утилитой termidesk-configure Получаем текущие роли
sudo /opt/termidesk/sbin/termidesk-config get NODE_ROLES
Устанавливаем новые роли
sudo /opt/termidesk/sbin/termidesk-config set NODE_ROLES TASKMAN,CELERYMAN
Применяем новую конфигурацию
sudo /opt/termidesk/sbin/termidesk-config setup sudo /opt/termidesk/sbin/termidesk-config daemons_restart
После установки нужно остановить и исключить службу termidesk-taskman из автоматического запуска Исключение службы из автоматического запуска необходимо, поскольку управление ее состоянием производится скриптами режима высокой доступности
sudo systemctl disable termidesk-taskman --now
vdi-tsk1
Ссылка на документацию в wiki
https://wiki.astralinux.ru/termidesk-help/5.1/dokumentatsiya/termidesk-nastrojka-programmnogo-kompleksa/nastrojki-posle-raspredelennoj-ustanovki-fermy-termidesk/nastrojka-menedyoera-rabochego-mesta-v-reyoime-vysokoj-dostupnosti
Запускаем службу, не добавляя ее в раздел автоматической загрузки (необязательный шаг)
sudo systemctl start termidesk-taskman
Устанавливаем пакеты программ для организации высокой доступности
sudo apt install keepalived ipset -y
Создаем файл настроек keepalived.conf
sudo nano /etc/keepalived/keepalived.conf
global_defs { router_id taskman script_user root enable_script_security } vrrp_script check_httpd { script "/usr/bin/pgrep apache" interval 1 timeout 3 rise 1 fall 2 init_fail } vrrp_instance termidesk-taskman { notify /etc/keepalived/notify.sh state MASTER interface eth0 virtual_router_id 20 priority 128 preempt_delay 5 advert_int 1 unicast_src_ip 10.2.0.15 authentication { auth_type PASS auth_pass ksedimret } virtual_ipaddress { 10.2.0.20/24 dev eth0 label eth0:20 } track_script { check_httpd } }
Создаем файл настроек notify.sh
sudo nano /etc/keepalived/notify.sh
#!/bin/sh -e SELF_BIN=$(realpath ${0}) SELF_DIR=$(dirname ${SELF_BIN}) TYPE=${1} NAME=${2} STATE=${3} PRIORITY=${4} TASKMAN_SYSTEMCTL_NAME="termidesk-taskman" TASKMAN_SYSTEMCTL_DESCRIPTION="Termidesk-VDI Taskman daemon" TASKMAN_SYSTEMCTL_PIDFILE="/run/termidesk-taskman/pid" msg2log () { logger -i "Termidesk: ${1}" } taskman_stop () { msg2log "Stopping ${TASKMAN_SYSTEMCTL_NAME} service" systemctl is-active -q ${TASKMAN_SYSTEMCTL_NAME} && systemctl stop -q ${TASKMAN_SYSTEMCTL_NAME} } taskman_start () { msg2log "Starting ${TASKMAN_SYSTEMCTL_NAME} service" systemctl is-active -q ${TASKMAN_SYSTEMCTL_NAME} || systemctl start -q ${TASKMAN_SYSTEMCTL_NAME} } # VRRP event type: INSTANCE, name: lsb_40, state: BACKUP, priority: 64 msg2log "VRRP event type: ${TYPE}, name: ${NAME}, state: ${STATE}, priority: ${PRIORITY}" case ${STATE} in BACKUP) [ "${NAME}" = "${TASKMAN_SYSTEMCTL_NAME}" ] && taskman_stop ;; FAULT) [ "${NAME}" = "${TASKMAN_SYSTEMCTL_NAME}" ] && taskman_stop ;; MASTER) [ "${NAME}" = "${TASKMAN_SYSTEMCTL_NAME}" ] && taskman_start ;; *) msg2log "Error: unknown state ${STATE}" exit 1 ;; esac exit 0
Необходимо сделать файл notify.sh
исполняемым
sudo chmod +x /etc/keepalived/notify.sh
Затем нужно добавить в автоматическую загрузку и запустить сервис keeaplived
sudo systemctl enable keepalived --now
Проверяем состояние сервиса
sudo systemctl status keepalived
Также можно воспользоваться командой
sudo journalctl -u keepalived -n 100 --no-pager
vdi-tsk2
Ссылка на документацию в wiki
https://wiki.astralinux.ru/termidesk-help/5.1/dokumentatsiya/termidesk-nastrojka-programmnogo-kompleksa/nastrojki-posle-raspredelennoj-ustanovki-fermy-termidesk/nastrojka-menedyoera-rabochego-mesta-v-reyoime-vysokoj-dostupnosti
Устанавливаем пакеты программ для организации высокой доступности
sudo apt install keepalived ipset -y
Создаем файл настроек keepalived.conf
sudo nano /etc/keepalived/keepalived.conf
global_defs { router_id taskman script_user root enable_script_security } vrrp_script check_httpd { script "/usr/bin/pgrep apache" interval 1 timeout 3 rise 1 fall 2 init_fail } vrrp_instance termidesk-taskman { notify /etc/keepalived/notify.sh state BACKUP interface eth0 virtual_router_id 20 priority 128 preempt_delay 5 advert_int 1 unicast_src_ip 10.2.0.16 authentication { auth_type PASS auth_pass ksedimret } virtual_ipaddress { 10.2.0.20/24 dev eth0 label eth0:20 } track_script { check_httpd } }
Создаем файл настроек notify.sh
sudo nano /etc/keepalived/notify.sh
#!/bin/sh -e SELF_BIN=$(realpath ${0}) SELF_DIR=$(dirname ${SELF_BIN}) TYPE=${1} NAME=${2} STATE=${3} PRIORITY=${4} TASKMAN_SYSTEMCTL_NAME="termidesk-taskman" TASKMAN_SYSTEMCTL_DESCRIPTION="Termidesk-VDI Taskman daemon" TASKMAN_SYSTEMCTL_PIDFILE="/run/termidesk-taskman/pid" msg2log () { logger -i "Termidesk: ${1}" } taskman_stop () { msg2log "Stopping ${TASKMAN_SYSTEMCTL_NAME} service" systemctl is-active -q ${TASKMAN_SYSTEMCTL_NAME} && systemctl stop -q ${TASKMAN_SYSTEMCTL_NAME} } taskman_start () { msg2log "Starting ${TASKMAN_SYSTEMCTL_NAME} service" systemctl is-active -q ${TASKMAN_SYSTEMCTL_NAME} || systemctl start -q ${TASKMAN_SYSTEMCTL_NAME} } # VRRP event type: INSTANCE, name: lsb_40, state: BACKUP, priority: 64 msg2log "VRRP event type: ${TYPE}, name: ${NAME}, state: ${STATE}, priority: ${PRIORITY}" case ${STATE} in BACKUP) [ "${NAME}" = "${TASKMAN_SYSTEMCTL_NAME}" ] && taskman_stop ;; FAULT) [ "${NAME}" = "${TASKMAN_SYSTEMCTL_NAME}" ] && taskman_stop ;; MASTER) [ "${NAME}" = "${TASKMAN_SYSTEMCTL_NAME}" ] && taskman_start ;; *) msg2log "Error: unknown state ${STATE}" exit 1 ;; esac exit 0
Необходимо сделать файл notify.sh
исполняемым
sudo chmod +x /etc/keepalived/notify.sh
Затем нужно добавить в автоматическую загрузку и запустить сервис keeaplived
sudo systemctl enable keepalived --now
Проверяем состояние сервиса
sudo systemctl status keepalived
Также можно воспользоваться командой
sudo journalctl -u keepalived -n 100 --no-pager
vdi-lb
Ссылка на документацию в wiki
https://wiki.astralinux.ru/termidesk-help/5.1/dokumentatsiya/termidesk-nastrojka-programmnogo-kompleksa/nastrojki-posle-raspredelennoj-ustanovki-fermy-termidesk/nastrojka-balansirovshchika-dlya-raboty-s-samopodpisannymi-sertifikatami
Устанавливаем Nginx, если ранее он не был установлен на хосте.
sudo apt install nginx -y
Создаем самоподписанный сертификат
https://wiki.astralinux.ru/termidesk-help/5.1/dokumentatsiya/termidesk-nastrojka-programmnogo-kompleksa/nastrojki-posle-raspredelennoj-ustanovki-fermy-termidesk/nastrojka-balansirovshchika-dlya-raboty-s-samopodpisannymi-sertifikatami/sozdanie-samopodpisannogo-ssl-sertifikata
После исполнения команды надо последовательно ввести ряд параметров, запросы на которые отобразятся в командной строке
Наиболее важным параметром является Common Name
(необходимо ввести FQDN-имя балансировщика). Как правило, в эту строку вносят доменное имя, с которым нужно связать сервер. В случае если доменного имени нет, нужно внести в эту строку IP-адрес сервера
sudo openssl req -new -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt
Необходимо последовательно ввести ряд параметров, запросы на которые отобразятся в командной строке:
Country Name (2 letter code) [AU]; State or Province Name (full name) [Some-State]; Locality Name (eg, city) []; Organization Name (eg, company) [Internet Widgits Pty Ltd]; Organizational Unit Name (eg, section) []; Common Name (e.g. server FQDN or YOUR name) []; Email Address [].
Наиболее важным параметром является Common Name (необходимо ввести FQDN-имя балансировщика). Как правило, в эту строку вносят доменное имя, с которым нужно связать сервер.
При использовании OpenSSL
необходимо также создать ключи Диффи-Хеллмана
.
Ключи Диффи-Хеллмана используются для безопасного обмена криптографическими ключами по незащищенному каналу связи.
Этот метод позволяет двум сторонам согласовать общий секретный ключ, который затем может быть использован для шифрования дальнейшего обмена данными, не передавая сам ключ напрямую.
Процесс создания занимает около 15 минут.
sudo openssl dhparam -out /etc/nginx/dhparam.pem 4096
Выполняем настройки Nginx для поддержки SSL
создаем и заполняем необходимые сниппеты
https://wiki.astralinux.ru/termidesk-help/5.1/dokumentatsiya/termidesk-nastrojka-programmnogo-kompleksa/nastrojki-posle-raspredelennoj-ustanovki-fermy-termidesk/nastrojka-balansirovshchika-dlya-raboty-s-samopodpisannymi-sertifikatami/nastrojka-nginx-dlya-podderyoki-ssl
sudo nano /etc/nginx/snippets/self-signed.conf
ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
sudo nano /etc/nginx/snippets/ssl-params.conf
ssl_protocols TLSv1.3; ssl_prefer_server_ciphers on; ssl_dhparam /etc/nginx/dhparam.pem; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384; ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0 ssl_session_timeout 10m; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; # Requires nginx >= 1.5.9 ssl_stapling on; # Requires nginx >= 1.3.7 ssl_stapling_verify on; # Requires nginx => 1.3.7 resolver 77.88.8.8 77.88.8.1 valid=300s; resolver_timeout 5s; # Disable strict transport security for now. You can uncomment the following # line if you understand the implications. # add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block";
Создаем нужную конфигурацию для веб-сервера
https://wiki.astralinux.ru/termidesk-help/5.1/dokumentatsiya/termidesk-nastrojka-programmnogo-kompleksa/nastrojki-posle-raspredelennoj-ustanovki-fermy-termidesk/nastrojka-balansirovshchika-dlya-raboty-s-samopodpisannymi-sertifikatami/konfigurirovanie-veb-servera
sudo nano /etc/nginx/sites-available/termidesk-lb.conf
upstream daas-upstream-ws { least_conn; # PROXY TERMIDESK server 10.2.0.13:5099; server 10.2.0.14:5099; } upstream daas-upstream-nodes { least_conn; # DISPATCHER TERMIDESK server 10.2.0.11:443; server 10.2.0.12:443; } server { listen 0.0.0.0:80; listen 0.0.0.0:443 ssl; include snippets/self-signed.conf; include snippets/ssl-params.conf; location /websockify { # limit_req zone=fast nodelay; proxy_http_version 1.1; proxy_pass http://daas-upstream-ws/; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; # Connection timeout proxy_connect_timeout 1000; proxy_send_timeout 1000; proxy_read_timeout 1000; send_timeout 1000; # Disable cache proxy_buffering off; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location / { proxy_pass https://daas-upstream-nodes/; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; } }
Если необходимо добавить конфигурацию апстримов, работающих по WSS, То следует добавить блок самого апстрима. А также конфигурацию проксирования на этот апстрим.
upstream daas-upstream-wss { least_conn; # PROXY TERMIDESK server 10.2.0.13:5199; server 10.2.0.14:5199; } ... server { ... location /wss { # limit_req zone=fast nodelay; proxy_http_version 1.1; proxy_pass https://daas-upstream-wss/; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; # Connection timeout proxy_connect_timeout 1000; proxy_send_timeout 1000; proxy_read_timeout 1000; send_timeout 1000; # Disable cache proxy_buffering off; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } ... }
Активируем конфигурацию
sudo ln -s /etc/nginx/sites-available/termidesk-lb.conf /etc/nginx/sites-enabled/
Удаляем конфигурацию по-умолчанию
sudo rm /etc/nginx/sites-enabled/default
Проверяем корректность настроек
sudo nginx -t
Поскольку сертификат является самоподписанным, SSL stapling не будет использоваться. Сервер nginx выдаст предупреждение, отключит stapling для данного сертификата и продолжит работу. Если других предупреждений нет, то выполняем перезапуск сервиса
sudo nginx -s reload