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

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

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

Приведенная здесь процедура обновления предполагает, что используются узлы-шлюзы termidesk-wsproxy.

Если ранее на узлах-шлюзах был установлен экспериментальный шлюз termidesk-gateway, необходимо сначала обновить их, и только потом - узлы-диспетчеры и узлы-менеджеры ВРМ.

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

Шаги 9-14 относятся к обновлению узлов-шлюзов Termidesk (служба termidesk-wsproxy).

Шаги 15-22 относятся к обновлению узлов-менеджеров ВРМ (планировщиков заданий) Termidesk (службы termidesk-taskman, termidesk-celery-beat, termidesk-celery-worker).

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

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

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

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

Шаг 5. Обновляется указанный на шаге 3 диспетчер.

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

Шаг 7. Выбирается следующий диспетчер, подлежащий обновлению, для него выполняются шаги 3-6.

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

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

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

Шаг 11. Обновляется указанный на шаге 9 шлюз.

Шаг 12. На обновленном шлюзе восстанавливаются RSA-ключи из резервной копии, созданной на шаге 2. Узел перезагружается.

Шаг 13. Выбирается следующий шлюз, подлежащий обновлению, для него выполняются шаги 9-12.

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

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

Шаг 16. Обновляется выбранный планировщик заданий. Выполняется запуск служб.

Шаг 17. На обновленном планировщике заданий восстанавливаются RSA-ключи из резервной копии, созданной на шаге 2. Узел перезагружается.

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

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

Шаг 20. Обновляется выбранный планировщик заданий. Выполняется запуск служб.

Шаг 21. На обновленном планировщике заданий восстанавливаются RSA-ключи из резервной копии, созданной на шаге 2. Узел перезагружается.

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

Обновление до Termidesk версии 4.1 возможно, если предыдущая установленная версия не ниже 4.0.

Если в файлы конфигурации и запуска 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: установка и настройка RabbitMQ-server

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

Шаг 2: резервное копирование 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  - путь, куда будет скопирован каталог.

Шаг 3: редактирование конфигурации балансировщика нагрузки

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

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

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

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


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

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

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

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

:~$ sudo systemctl restart nginx
BASH

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

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

Шаг 5: обновление диспетчера

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

При установке диспетчера Termidesk необходимо выбрать компонент «Broker» в диалоговом окне псевдографического интерфейса инсталлятора.

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

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

  • остановить службу 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  - ключ игнорирования несуществующих файлов.

Шаг 6: восстановление RSA ключей из резервной копии

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

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

:~$ sudo reboot
BASH

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

:~$ sudo systemctl -a | grep termidesk
BASH

где:

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

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

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

Шаг 7: обновление следующего по списку диспетчера

Необходимо выполнить действия с Шага 3 по Шаг 6 для следующего по списку диспетчера.

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

Шаг 8: восстановление конфигурации балансировщика нагрузки

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

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

:~$ sudo systemctl restart nginx
BASH

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

Шаги 9-14: обновление шлюзов

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

При установке шлюза Termidesk необходимо выбрать компонент «Gateway» в диалоговом окне псевдографического интерфейса инсталлятора.

При редактировании файла /etc/nginx/sites-available/sampledomain.ru.conf следует найти директиву daas-upstream-ws с перечислением списка шлюзов и выполнить исключение (комментирование строк) шлюзов.

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

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

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

WSPROXY_BIND_ADDRESS="0.0.0.0"
BASH

Шаг 15: останов служб на менеджере ВРМ

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

:~$ sudo systemctl stop keepalived
BASH

Шаг 16: обновление менеджеров ВРМ

Обновление менеджера ВРМ по своей структуре не отличается от действий по обновлению диспетчеров, за исключением выбора устанавливаемого компонента.

При установке менеджера ВРМ Termidesk необходимо выбрать компонент «Task manager» в диалоговом окне псевдографического интерфейса инсталлятора.

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

  • остановить службы 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

Шаг 17: восстановление RSA ключей на менеджере ВРМ

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

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

:~$ sudo reboot
BASH

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

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

:~$ sudo systemctl start keepalived
BASH

Шаги 19-22: обновление основного менеджера ВРМ

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