Обновление для распределенной конфигурации установки

Общая концепция обновления

Обновление Termidesk, установленного в распределенной отказоустойчивой конфигурации, выполняется в следующей последовательности:

Приведенная здесь процедура обновления предполагает, что используются узлы с компонентом «Шлюз» termidesk-gateway

Шаги 1-5 относятся к обновлению узлов «Шлюза» Termidesk (служба termidesk-gateway).

Шаги 8-13 относятся к обновлению узлов «Универсального диспетчера» Termidesk (служба termidesk-vdi).

Шаги 14-21 относятся к обновлению узлов «Менеджера рабочих мест» Termidesk (службы termidesk-taskman, termidesk-celery-beat, termidesk-celery-worker).

Начиная с Termidesk версии 5.0 изменен способ работы и хранения политик фонда ВРМ. Во время обновления распределенной или отказоустойчивой конфигурации установки с Termidesk версии 4.Х на версию 5.Х изменение политик нужно проводить после обновления на новую версию всех узлов Termidesk. 

Шаг 1. На балансировщике нагрузки, отвечающем за распределение подключений к «Шлюзам», из списка балансировки исключается «Шлюз», подлежащий обновлению (за раз - только ОДИН).

Шаг 2. Действия Шага 1 повторяются для каждого существующего балансировщика.

Шаг 3. Обновляется указанный на Шаге 1 «Шлюз».

Шаг 4. Выбирается следующий «Шлюз», подлежащий обновлению, для него выполняются Шаги 1-3.

Шаг 5. По завершении обновления ВСЕХ «Шлюзов» список балансировки восстанавливается до исходного.

Шаг 6. На сервер с СУБД, либо на отдельно выделенный сервер, устанавливается и настраивается компонент RabbitMQ-server в случае, если ранее RabbitMQ-server не был установлен.

Шаг 7. Создается резервная копия RSA-ключей, расположенных в каталоге /etc/opt/termidesk-vdi/wsproxy/.

Шаг 8. На балансировщике нагрузки, отвечающем за распределение подключений к «Универсальным диспетчерам», из списка балансировки (конфигурации nginx) исключается «Универсальный диспетчер», подлежащий обновлению (за раз - только ОДИН).

Шаг 9. Действия Шага 8 повторяются для каждого существующего балансировщика.

Шаг 10. Обновляется указанный на Шаге 8 «Универсальный диспетчер».

Шаг 11. На обновленном «Универсальном диспетчере» восстанавливаются RSA-ключи из резервных копий, созданных на Шаге 7. Узел перезагружается.

Шаг 12. Выбирается следующий «Универсальный диспетчер», подлежащий обновлению, для него выполняются Шаги 8-11.

Шаг 13. По завершении обновления ВСЕХ «Универсальных диспетчеров» список балансировки восстанавливается до исходного. Проверяется доступность графического интерфейса Termidesk сначала обращением на IP-адрес каждого из «Универсальных диспетчеров», затем обращением на IP-адрес балансировщика нагрузки.

Шаг 14. На узлах с установленным «Менеджером рабочих мест», который работает в отказоустойчивой конфигурации в режиме «SLAVE», должен быть выполнен останов служб keepalived.

Шаг 15. Обновляется выбранный «Менеджер рабочих мест». Выполняется запуск служб.

Шаг 16. На обновленном «Менеджере рабочих мест» восстанавливаются RSA-ключи из резервной копии, созданной на Шаге 7. Узел перезагружается.

Шаг 17. Выполняется запуск служб keepalived.

Шаг 18. На узле с установленным «Менеджером рабочих мест», который работает в отказоустойчивой конфигурации в режиме «MASTER», должен быть выполнен останов служб keepalived.

Шаг 19. Обновляется выбранный «Менеджер рабочих мест». Выполняется запуск служб.

Шаг 20. На обновленном «Менеджере рабочих мест» восстанавливаются RSA-ключи из резервной копии, созданной на Шаге 7. Узел перезагружается.

Шаг 21. Выполняется запуск службы keepalived.

Если в файлы конфигурации и запуска Termidesk (/lib/systemd/system/termidesk-*) вручную были внесены какие-либо изменения, то необходимо выполнить резервное копирование данных файлов, поскольку эти изменения при обновлении сбрасываются до значений по умолчанию.

Начиная с версии 4.0 конфигурация Termidesk сведена в единый файл /etc/opt/termidesk-vdi/termidesk.conf.

В случае, если предыдущая версия Termidesk была установлена на ОС Astra Linux Special Edition 1.6 или Astra Linux Common Edition, то потребуется переустановка ОС и Termidesk.

Тогда для сохранения существующей БД нужно:

Шаг 1: редактирование конфигурации балансировщика нагрузки для «Шлюзов»

На балансировщике нагрузки нужно открыть и отредактировать файл /etc/nginx/sites-available/sampledomain.ru.conf.

В данном конфигурационном файле следует найти директиву daas-upstream-ws с перечислением списка «Шлюзов», выбрать первый по списку, закомментировать его и сохранить файл.

Пример для списка балансировки:

Здесь и далее примеры IP-адресов приведены в соответствии с RFC 5737. Указанные IP-адреса должны быть заменены на актуальные, используемые согласно схеме адресации, принятой в инфраструктуре предприятия.


upstream daas-upstream-ws {
 least_conn;
     server 192.0.2.30;
     server 192.0.2.31;
     server 192.0.2.32;
  
 }
BASH

Для исключения первого по списку «Шлюза» файл приводится к виду:

upstream daas-upstream-ws {
 least_conn;
     # server 192.0.2.30;
     server 192.0.2.31;
     server 192.0.2.32;
  
 }
BASH

После изменения файла нужно перезапустить веб-сервер:

:~$ sudo systemctl restart nginx
BASH

Шаг 2: редактирование конфигурации остальных балансировщиков нагрузки для «Шлюзов»

На всех существующих балансировщиках нагрузки выполнить Шаг 1.

Шаги 3-4: обновление «Шлюзов»

Процедура обновления проводится с помощью установки новой версии «Шлюза» Termidesk поверх уже имеющейся.

После завершения установки необходимо убедиться, что в файле /etc/termidesk/termidesk-gateway.conf параметр wsServerIP приведен к следующему виду:

wsServerIP=0.0.0.0
BASH

Шаг 5: восстановление конфигурации балансировщика нагрузки для «Шлюзов»

По завершении обновления ВСЕХ «Шлюзов» список балансировки на ВСЕХ балансировщиках восстанавливается до исходного.

Ранее закомментированные строки нужно раскомментировать, затем выполнить перезагрузку службы nginx на каждом балансировщике:

:~$ sudo systemctl restart nginx
BASH

Шаг 6: установка и настройка RabbitMQ-server

Шаг выполняется в соответствии с подразделами Установка RabbitMQ-server и Настройка RabbitMQ-server при отсутствии ранее установленного RabbitMQ-server.

Шаг 7: резервное копирование RSA-ключей

Выполнить резервное копирование RSA-ключей с одного из узлов «Универсального диспетчера». Резервные копии ключей можно скопировать, например, на другой сетевой узел командой:

:~$ sudo scp -r /etc/opt/termidesk-vdi/wsproxy localuser@ipaddr_or_fqdn_host:/home/localuser/
BASH

где:

-r  - ключ для рекурсивной (со вложенными каталогами) передачи;

localuser  - имя пользователя целевого узла;

ipaddr_or_fqdn_host  - IP-адрес или FQDN целевого узла;

/home/user  - путь, куда будет скопирован каталог.

Шаг 8: редактирование конфигурации балансировщика нагрузки для «Универсальных диспетчеров»

На балансировщике нагрузки нужно открыть и отредактировать файл /etc/nginx/sites-available/sampledomain.ru.conf.

В данном конфигурационном файле следует найти директиву daas-upstream-nodes с перечислением списка «Универсальных диспетчеров», выбрать первый по списку, закомментировать его и сохранить файл.

После изменения файла нужно перезапустить веб-сервер:

:~$ sudo systemctl restart nginx
BASH

Шаг 9: редактирование конфигурации остальных балансировщиков нагрузки для «Универсальных диспетчеров»

На всех существующих балансировщиках нагрузки выполнить Шаг 8.

Шаг 10: обновление «Универсального диспетчера»

Процедура обновления проводится с помощью установки новой версии поверх уже имеющейся и не отличается от процесса, описанного в пункте Неавтоматизированная установка Termidesk. При установке «Универсального диспетчера» Termidesk необходимо выбрать роль «Портал администратора» или «Портал пользователя» в диалоговом окне псевдографического интерфейса инсталлятора.

Корректировка файла /etc/apache2/apache2.conf при обновлении не производится.

Перед запуском процедуры обновления нужно:

  • остановить службу Termidesk:
:~$ sudo systemctl stop termidesk-vdi
BASH
  • удалить кеш файла ответов debconf командами:
:~$ sudo rm -f /var/cache/debconf/config.dat
:~$ sudo rm -f /var/cache/debconf/config.dat-old
BASH

где:

-f  - ключ игнорирования несуществующих файлов.

Шаг 11: восстановление RSA ключей из резервной копии для «Универсального диспетчера»

Выполнить копирование сохраненных на Шаге 7 RSA ключей на узел с обновленным «Универсальным диспетчером».

Затем перезагрузить узел:

:~$ sudo reboot
BASH

После загрузки узла проверить состояние служб:

:~$ sudo systemctl -a | grep termidesk
BASH

где:

-a  - ключ для вывода списка служб;

grep  - утилита для поиска текста в выводе предыдущей команды.

Проверить доступность портала Termidesk через веб-браузер.

Шаг 12: обновление следующего по списку «Универсального диспетчера»

Необходимо выполнить действия Шагов 8-11 для следующего по списку «Универсального диспетчера».

При выполнении Шага 8 ранее закомментированный элемент остается в том же состоянии, дополнительно нужно закомментировать строку со следующим элементом.

Шаг 13: восстановление конфигурации балансировщика нагрузки для «Универсальных диспетчеров»

По завершении обновления ВСЕХ «Универсальных диспетчеров» список балансировки на ВСЕХ балансировщиках восстанавливается до исходного.

Ранее закомментированные строки нужно раскомментировать, затем выполнить перезагрузку службы nginx на каждом балансировщике:

:~$ sudo systemctl restart nginx
BASH

Выполнить проверку доступности портала Termidesk через веб-браузер сначала обращением на IP-адрес каждого из «Универсальных диспетчеров», затем обращением на IP-адрес балансировщика нагрузки.

Шаг 14: останов служб на «Менеджере рабочих мест»

На узлах с установленным «Менеджером рабочих мест», работающем в отказоустойчивой конфигурации в режиме «SLAVE», выполняется останов службы keepalived командой:

:~$ sudo systemctl stop keepalived
BASH

Шаг 15: обновление «Менеджеров рабочих мест»

Обновление «Менеджеров рабочих мест» по своей структуре не отличается от действий по обновлению «Универсальных диспетчеров», за исключением выбора устанавливаемой роли: при установке нужно выбрать роль «Менеджер рабочих мест» в диалоговом окне псевдографического интерфейса инсталлятора.

Перед запуском процедуры обновления нужно:

  • остановить службы Termidesk:
:~$ sudo systemctl stop termidesk-taskman termidesk-celery-beat termidesk-celery-worker
BASH

При остановке службы на «Менеджере рабочих мест», находящемся в режиме «SLAVE», команда может выдать ошибку - это нормальное поведение.

  • удалить кеш файла ответов debconf командами:
:~$ sudo rm -f /var/cache/debconf/config.dat
:~$ sudo rm -f /var/cache/debconf/config.dat-old
BASH

После установки нужно исключить службу termidesk-taskman из автоматического запуска:

:~$ sudo systemctl disable termidesk-taskman
BASH

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

На узле, выбранном в качестве slave, нужно не только исключить службу из автоматического запуска, но и остановить ее после обновления:

:~$ sudo systemctl stop termidesk-taskman
BASH

Шаг 16: восстановление RSA ключей на «Менеджере рабочих мест»

Выполнить копирование сохраненных на Шаге 7 RSA-ключей на узел с обновленным «Менеджером рабочих мест».

Затем перезагрузить узел:

:~$ sudo reboot
BASH

Шаг 17: восстановление службы keepalived

Выполнить запуск службы keepalived командой:

:~$ sudo systemctl start keepalived
BASH

Шаги 18-21: обновление основного «Менеджера рабочих мест»

Обновление осуществляется аналогично Шагам 14-17.