====== РАСПРЕДЕЛЕННАЯ УСТАНОВКА 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
Генерация сертификатов\\
[[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]]\\
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