Инструменты пользователя

Инструменты сайта


vji:termideskclaster:start

Это старая версия документа!


РАСПРЕДЕЛЕННАЯ УСТАНОВКА 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
vji/termideskclaster/start.1756879170.txt.gz · Последнее изменение: 2025/09/03 05:59 — vji

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki